2.6哈希
hash
特点 重要api hash vs string
哈希键值结构
key field value user:1:info
常用命令
命令
说明
时间复杂度
hget key field
获取key下field的value
O(1)
hset key field value
设置key下field的value
O(1)
hdel key field
删除key下field的value
O(1)
示例
批量操作
命令
说明
时间复杂度
hmget key field1 field2 ...fieldN
批量获取key下多个field的value
O(n)
hmset key field1 value1 field2 value2 ...fieldN valueN
批量设置key下多个field value
O(n)
示例
获取操作
命令
说明
时间复杂度
hgetall key
返回hash key 对应所有的field和value
O(n)
hvals key
返回hash key 对应的所有的field的value
O(n)
hkeys key
返回hash key对应所有field
O(n)
示例
提示:很多场景下,你并不需要获取key下所有的field,所以不建议使用hgetall。推荐使用hmget
其他操作
命令
说明
时间复杂度
hexists key field
判断hash key 是否存在field
O (1)
hlen key
获取hash key field 的数量
O(1)
示例
命令
说明
时间复杂度
hsetnx key field value
设置key下field的value(如field已经存在,则失败)
O(1)
hincrby key field intCounter
key下field的value自增intCounter
O(1)
hincrbyfloat key field floatCounter
key下field的value自增floatCounter
O(1)
记录网站每个用户个人主页的访问量
hash vs string
使用redis存储用户信息的三种方案
使用String实现-V1
使用String实现-v2
使用hash实现
方案对比
方案
优点
缺点
string v1
编程简单;可以节约内存
序列化开销;设置属性要操作整个数据
string v2
直观,可以部分更新
占用内存较大,key较为分散
hash
直观,节省空间,可以部分更新
编程稍微复杂,ttl不好控制
Last updated
Was this helpful?