redis 常用数据类型操作四 哈希(Hash)


redis 哈希Hash

简介

redis hash是一个键值对集合

redis hash 是一个string 类型的 fieldvalue 的映射表,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的范围来获取元素列表。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM