数据类型 hash
一、介绍
理解 hash 类型的基本结构。
field 对应的 value 一定是 string 类型
二、常见 hash 命令
1、hset key field value [key value ...]
设置哈希,这里的设置可以是添加,修改
2、hget key field
获取对应 key 对应 field 的 value
3、hmget key field [field ...]
获取多个 value
4、hkeys key
获取 key 对应的所有 field
5、hvals key
获取 key 对应的所有 value
6、hgetall key
获取 key 对应的所有 key value
7、hexists key field
判断 key 对应的 field 存不存在,存在返回1,不存在返回0
8、hdel key field [field ...]
删除 key 对应的 field,对比 del key 一个前者删除的是哈希表中一个键,后者是删除整个哈希表
9、hlen key
返回哈希表中键值对个数
10、hsetnx key field value
带上 nx 的 hset
11、hincrby key field n
当对应 value 是整数的时候增加 n
12、hincrbyfloat key field n
当对应 value 是浮点数的时候增加 n
三、内部编码
1、ziplist
压缩列表存储,内部精心设计的结构,能节省空间,但是代价是读写慢,当元素个数少,且存储数据短才会使用
2、hashtable
不满足 ziplist 条件的时候就用哈希表存储,会有空间浪费
四、应用场景
1、作为缓存
当存储的是结构化数据的时候推荐使用哈希表
2、与传统数据库区别
Redis 里面的哈希类型稀疏,每一个 key 对应的 field 类型可以不同,不像关系型数据库每一个对象的属性都是一样的。
所以 Redis 无法模拟复杂关系的查询,但是结构更加灵活。