哈希类型是指键值本身又是一个键值对结构
-----------------------------命令
---设置值
hset key field value
hsetnx key field value ---此时nx限定的不再是key而是filed
hmset key field value [field value .....] ---批量设置
--获取值
hget key field
hmget key field [field ...]---批量获取
--删除值
hdel key field [field ...]删除一个或多个
--计算field个数
hlen key
--判断field是否存在
hexists key field
---获取所有的属性
hkeys key
--获取所有的values
hvals key
--获取所有的field-values
hgetall key
---自增
hincrby key field
hincrbyfloat key filed
--计算value字符串长度
hstrlen key field (需要Redis3.2以上)
--------内部编码
ziplist(压缩列表):当哈希类型元素个数小于512(默认配置),同事所有值都小于64字节(默认配置),Redis采用ziplist作为哈希的内部实现,ziplist使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比hashtable更加优秀。
hashtable(哈希表):当哈希类型无法满足ziplist时,采用hashtable作为哈希的内部实现,因为ziplist的读写效率会下降,而hashtable的读写时间复杂度为O(1)
object encoding hashkey
---------------
哈希类型是稀疏的,而关系型数据库是完全结构化的,哈希类型每个键可以有不同的属性,而关系型数据库是一旦新加属性,则所有的行都需要设置值,即使为空
关系型数据库可以做复杂的关系查询,而Redis去模拟关系型复杂查询开发困难,维护成本高。
网友评论