redis中,哈希类型的也是键值对,而值本身又是一个键值对结构,形如value={{field1,value1}...{fieldN,valueN}}的Hashes基本看成java中的map,通过key value的形式保存数据。
1. 常用命令
- hset hget hdel hgetall 用于操作的设置,获取,删除,获取全部key-value的操作。
- hexists hlen 判断field是否存在以及获取field的数量。
- hsetnx不存在的时候才进行设置
- hincrby hincrbyfloat原子加操作
- hkeys hvals 获取所有filed和所有value
- hmget hmset 批量获取,设置
2. 内部编码
a. ziplist: filed count < hash-max-ziplist-entries(512 by default)
b. hashtable: 无法满足ziplist的条件时。
3. 应用场景
微信聊天消息记录:每个聊天室(群)可以是一个hash key,hash value的filed是用户ID,value是聊天内容。