目录
一、命令
1. 设置值
hset key field value
hset user1 name tom
设置成功返回1 反之返回0
同样,也有hetnx命令,用于在键不存在时使用
2. 获取值
hget key field
hget user1 name 会返回tom
如果键或者field不存在,则会返回nil
3. 删除field
hdel key field [field ...]
hdel 会删除一个或多个field ,返回结果为成功删除field的个数
hdel user1 name
4. 计算field个数
hlen key
5. 批量设置或获取field-value
hmget key field [field ...]
hmset key field value [field value ...]
6. 判断field是否存在
hexists key field
hexists user1 name 存在时返回1 不存在返回0
7. 获取所有field
hkeys key
8. 获取所有value
hvals key
9. 获取所有的field-value
hgetall key
10. hincrby hincrbyfloat
hincrby key field
hincrbyfloat key field
11. 计算value字符串长度(Redis3.2以上)
hstrlen key field
二、内部编码
1. ziplist(压缩列表)
- 当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)、同时所有值都小于hash-max-ziplist-value配置(默认64字节)时,Redis会使用ziplist作为哈希的内部实现,ziplist使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比hashtable更加优秀
2. hashtable(哈希表)
- 当哈希类型无法满足ziplist的条件时,redis会使用hashtable作为hash的内部实现,因为此时ziplist的读写效率会下降,而hashtable的读写效率为O(1)
三、使用场景
1. 关系数据库
可以把关系数据库的一条记录,转化为一个key,然后该记录的每一列名,对应key里面的field,列的值对应value