redis(2)-api-hash

哈希
几乎所有的编程语言都提供了哈希(hash) 类型, 它们的叫法可能是哈希、 字典、 关联数组。 在Redis中, 哈希类型是指键值本身又是一个键值对结构, 形如value={{field1, value1}, …{fieldN, valueN}}

(1) 设置值
hset key field value
如果设置成功会返回1, 反之会返回0。 此外Redis提供了hsetnx命令, 它们的关系就像set和setnx命令一样, 只不过作用域由键变为field

(2) 获取值
hget key field
如果键或field不存在, 会返回nil

(3) 删除field
hdel key field [field …]
hdel会删除一个或多个field, 返回结果为成功删除field的个数

(4) 计算field个数
hlen key

(5) 批量设置或获取field-value
hmget key field [field …]
hmset key field value [field value …]
hmset和hmget分别是批量设置和获取field-value, hmset需要的参数是key和多对field-value,hmget需要的参数是key和多个field

(6) 判断field是否存在
hexists key field
包含返回结果为1, 不包含时返回0。

(7) 获取所有field
hkeys key
hkeys命令应该叫hfields更为恰当, 它返回指定哈希键所有的field。

(8) 获取所有value
hvals key

(9) 获取所有的field-value
hgetall key
在使用hgetall时, 如果哈希元素个数比较多, 会存在阻塞Redis的可能。如果开发人员只需要获取部分field, 可以使用hmget, 如果一定要获取全部field-value, 可以使用hscan命令, 该命令会渐进式遍历哈希类型。

(10) hincrby hincrbyfloat
hincrby key field
hincrbyfloat key field
hincrby和hincrbyfloat, 就像incrby和incrbyfloat命令一样, 但是它们的作用域是filed。

(11) 计算value的字符串长度
hstrlen key field

内部编码
哈希类型的内部编码有两种
1.ziplist(压缩列表) : 当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个) 、 同时所有值都小于hash-max-ziplist-value配置(默认64字节) 时, Redis会使用ziplist作为哈希的内部实现, ziplist使用更加紧凑的结构实现多个元素的连续存储, 所以在节省内存方面比hashtable更加优秀。
2.hashtable(哈希表) : 当哈希类型无法满足ziplist的条件时, Redis会使用hashtable作为哈希的内部实现, 因为此时ziplist的读写效率会下降, 而hashtable的读写时间复杂度为O(1) 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值