redis-hash

哈希類型是指健值自己又是一個鍵值對結構redis

基本命令:
hset key field value 設置值編程

hget(獲取),hdel(刪除),hlen(計算field個數),hmget(批量設置),hexists(是否存在),hkeys(獲取全部的field),hvals(獲取全部的value),hstrlen(計算長度)編碼

hincrby,hincrbyfloat 跟incrby同樣,可是它們做用域是fieldspa

內部編碼:blog

1.ziplist(壓縮列表),當哈希類型元素小於hash-max-ziplist-entries配置(默認521個),同時全部值都小於hash-max-ziplist-value配置(默認64字節),redis會使用ziplist做爲內部實行,全部在節約內存方面比hashtable優秀ip

2.hashtable(哈希表),當哈希類型沒法知足ziplist條件時候,redis會使用hashtable做爲哈希的內部實現內存

,所以此時ziplist讀寫效率降低,而hashtable讀寫時間複雜度o(1)作用域

三種方案的實現方法和優缺點:字符串

1)原生字符串類型,每一個屬性一個鍵get

hset user:1 name xiaoming

優勢:簡單直觀,每一個屬性都支持更新操做

缺點:佔用過多的健,內存佔用量大,內聚性差,不會在生產環境使用

2)序列化字符串類型,將用戶信息序列化後用一個鍵保存

hset user:1 serialize(userinfo)

優勢:簡化編程

缺點:序列化和反序列化有必定的開銷,同時每次更新屬性都須要把所有數據取出進行反徐麗華,更新後序列化到redis

3)哈希類型:每一個用戶屬性使用一對field-value,可是隻用一個鍵保存

hset user:1  name xiaoming age 12

優勢:簡單直觀,能夠減小內存的使用

缺點:須要控制內部編碼ziplist和hashtable轉換,hashtable會消耗更多的內存

相關文章
相關標籤/搜索