下面由redis教學專欄來介紹redis中set和hset的差別和使用場景,希望對需要的朋友有幫助!
#redis#中存資料時,到底何時用 hset相較於set 存資料時又有什麼不一樣?
set 是普通的已key-value 方式儲存數據,可以設定過期時間。時間複雜度為 O(1),沒多執行一個 set 在redis 中就會多一個 key ,hset 則是以hash 散列表的形式儲存。超時時間只能設定在大key 上,單一filed 則不可以設定超時時間複雜度我百度了很多文章都說是O(1) 但是我下面給的參考文章說時間上的時間複雜度其實是O (N) N 值是單個hash 上的filed 個數,所以hash 上單個不適合存儲大量的filed 並且如果filed 多了比較消耗cpu,但同時以散列表存儲則比較節省內存。
所以在實際的使用過程中應該使用set 存儲單個大文本非結構化數據hset 則存儲結構化數據,一個hash 存儲一條數據,一個filed 則存儲一條數據中的一個屬性,value 則是屬性對應的值。
例如資料庫中有一張表user 包含 id,name,age,sex 4個屬性,並且有400w條數據,
id,name,age,sex
# 1、1,張三,16,1
2、2,李四,22,1
3、3,王五,28,0
4、 4,趙六,32,1
...
如果要整表快取到redis 中則使用hash ,一條資料一個hash 一個hash 裡則包含4個filed。
hset user_1 id 1 name 張三age 16 sex 1
hset user_2 id 2 name 李四age 16 sex 1
...
##這樣存儲,如果使用者的某個屬性值改變,也可以單一修改。 例如吧張三的年齡改為30 則可以使用指令: hset user_1 age 30 在例如如果要快取應用整個首頁html ,或則某個商品的詳情介紹(一般來說商品的詳情介紹是makdown語法的富文本信息,或html 格式的富文本信息) 則使用則可以使用 set又或則應用中的某個熱點數據,都可以使用set 儲存一大段數據。以上是redis中set和hset的區別和使用場景的詳細內容。更多資訊請關注PHP中文網其他相關文章!