redis 哈希Hash
簡介
redis hash是一個鍵值對集合
redis hash 是一個string 類型的 field 和 value 的映射表,hash特別適合用於存儲對象,類似於C#里面的Dictionary<key,value>
用戶ID查找的key,存儲的value用戶包含姓名,年齡,生日等信息,如果用普通的key/value結構來存儲,
主要有以下兩種存儲方式
第一種:序列化對象為json字符串 user={id:1,name:"july",age:20}
缺點:如果需要修改對象的某些屬性值,先要將字符串反序列化為對象,然后再對其進行修改,序列化重新存儲
第二種:分開存儲,userid :1 ,username:"july"
缺點:數據太分散了,數據量大的時候,數據特別混亂
第三種:使用hash field value 實現映射關系進行存儲
優點:存儲方便,存/取/改值方便
常用命令
hset <key> <field> <value> 給key集合中的<field>鍵賦值<value>
hget <key> <field> 從key集合<field>取出<value>
hmset <key1> <field1> <value1> <field2> <value2> 批量設置hash值
hexists <key> <field> 查看哈希表key中,給定域field是否存在
hkeys <key> 列出該hash集合中所有field
hvals <key> 列出該hash集合中所有value
hincrby <key><field> <increment> 為哈希表key中的域field增加上增量1 -1
hsetnx <key> <field> <value> 將哈希表key 中的域field的值設置為value,當且僅當field不存在
數據結構
Hash 數據對應的數據結構是兩種:ziplist(壓縮列表),hashtable(哈希表)。當field-value長度較短且個數較少時,使用ziplist,否則使用hashtable。
redis 有序集合(zset)
簡介
redis hash是一個鍵值對集合
redis hash 是一個string 類型的 field 和 value 的映射表,hash特別適合用於存儲對象,類似於C#里面的Dicti保障value的唯一性,可以通過value找到對應score值
(2)跳躍表,跳躍表的目的是在於給元素value排序,根據socre的范圍來獲取元素列表。