Redis---数据之hash

一:数据形式

Hash数据类型使用很普遍,它同样是key-value的方式来组织的,只是其value又包含多个field-fieldValue对。想要获取某个fieldValue,可以通过key-field联合来定位。

二:特性
	1:Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、删除操作都是 O(1)(平均)。 
	2:hash特别适用于存储对象,对象的格式为键值对。
	3:省内存的原因是新 建一个 hash 对象时开始是用 zipmap(又称为 small hash)来存储的。这个 zipmap 其实并不 是 hash table,但是 zipmap 相比正常的 hash 实现可以节省不少 hash 本身需要的一些元数据 存储开销。尽管 zipmap 的添加,删除,查找都是 O(n),但是由于一般对象的 field 数量都不 太多。所以使用 zipmap 也是很快的,也就是说添加删除平均还是 O(1)。如果 field 或者 value 的大小超出一定限制后,Redis 会在内部自动将 zipmap 替换成正常的 hash 实现.
	 
	这个限制可 以在配置文件中指定 
	hash-max-zipmap-entries 64       #配置字段最多 64 个 
	hash-max-zipmap-value 512       #配置 value 最大为 512 字节

三:指令
	1:hset key field value            设置field的值,如果key不存在则创建
	2:hsetnx key field value         设置field 为指定值,如key不存在,则创建。如field 已经存在,返回 0
	3:hmset key field value [field value ...]     同时设置 hash 的多个 field。 
	4:hget key field                           获取指定field的值
	5:hmget key field [field ...]    获取多个指定field的值
	6:hincrby key field increment  指定field的值加上给定值(可为正负,实现加减)
	7:hexists key field   测试指定的field是否存在,存在返回1,不存在返回0
	8:hlen key                   返回指定hash key的field数量
	9:hdel key field [field ...]   删除指定的field
	10:hkeys key        返回指定hash key 的所有field
	11:hvals key         返回hash key 的所有value
	12:hgetall key     获取指定hash所有的field value

猜你喜欢

转载自blog.csdn.net/qq_35723073/article/details/84287955
今日推荐