這篇文章將為大家詳細(xì)講解有關(guān)redis中set和hset有什么不一樣的地方,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)建站專注于武定網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供武定營(yíng)銷(xiāo)型網(wǎng)站建設(shè),武定網(wǎng)站制作、武定網(wǎng)頁(yè)設(shè)計(jì)、武定網(wǎng)站官網(wǎng)定制、微信平臺(tái)小程序開(kāi)發(fā)服務(wù),打造武定網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供武定網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。redis中存數(shù)據(jù)時(shí),到底什么時(shí)候用 hset 相比于 set 存數(shù)據(jù)時(shí)又有什么不一樣?
set 就是普通的已key-value 方式存儲(chǔ)數(shù)據(jù),可以設(shè)置過(guò)期時(shí)間。時(shí)間復(fù)雜度為 O(1),沒(méi)多執(zhí)行一個(gè) set 在redis 中就會(huì)多一個(gè) key ,hset 則是以hash 散列表的形式存儲(chǔ)。超時(shí)時(shí)間只能設(shè)置在 大 key 上,單個(gè) filed 則不可以設(shè)置超時(shí) 時(shí)間復(fù)雜度我百度了很多文章都說(shuō)是 O(1) 但是我下面給出的參考文章說(shuō)時(shí)間上的時(shí)間復(fù)雜度其實(shí)是 O(N) N 值是單個(gè)hash 上的 filed 個(gè)數(shù),所以 hash 上單個(gè)不適合存儲(chǔ)大量的 filed 并且如果 filed 多了比較消耗cpu,但同時(shí)以 散列表存儲(chǔ)則比較節(jié)省內(nèi)存。
所以在實(shí)際的使用過(guò)程中應(yīng)該使用 set 存儲(chǔ)單個(gè)大文本非結(jié)構(gòu)化數(shù)據(jù) hset 則存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),一個(gè) hash 存儲(chǔ)一條數(shù)據(jù),一個(gè) filed 則存儲(chǔ) 一條數(shù)據(jù)中的一個(gè)屬性,value 則是屬性對(duì)應(yīng)的值。
例如 數(shù)據(jù)庫(kù)中有一張表 user 包含 id,name,age,sex 4個(gè)屬性,并且有400w條數(shù)據(jù),
id,name,age,sex
1、1,張三,16,1
2、2,李四,22,1
3、3,王五,28,0
4、4,趙六,32,1
...
如果要整表緩存到 redis 中則使用 hash ,一條數(shù)據(jù)一個(gè)hash 一個(gè)hash 里則包含4個(gè)filed。
hset user_1 id 1 name 張三 age 16 sex 1
hset user_2 id 2 name 李四 age 16 sex 1
...
這樣存儲(chǔ),如果用戶的某個(gè)屬性值改變,還可以單個(gè)修改。
例如 吧張三的年齡改為30 則可以使用命令: hset user_1 age 30
在比如如果要緩存應(yīng)用整個(gè)首頁(yè) html ,或則某個(gè)商品的詳情介紹(一般來(lái)說(shuō)商品的詳情介紹是makdown語(yǔ)法的富文本信息,或 html 格式的富文本信息) 則使用 則可以使用 set
又或則 應(yīng)用中的 某個(gè)熱點(diǎn)數(shù)據(jù),都可以使用 set 存儲(chǔ)一大段數(shù)據(jù)。
關(guān)于redis中set和hset有什么不一樣的地方就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。