365Tools
    发布时间:2024-03-01 20:30:01
Redis hash(哈希散列)是由字符类型的 field(字段)和 value 组成的哈希映射表结构(也称散列表),它非常类似于表格结构。在 hash 类型中,field 与 value 一一对应,且不允许重复。user为 key, id:1为字段,name:Cao为 value:| id | name | 
|---|---|
| 1 | Cao | 
| 2 | Zhao | 
#以user为key,设置 id+序号为字段,name+名字为值 127.0.0.1:6379> HMSET user id:1 name:Cao id:2 name:Zhao OK # 查询 user 这个key下所有的数据,并以字符串的形式将值返回 127.0.0.1:6379> HGETALL user 1) "id:1" 2) "name:Cao" 3) "id:2" 4) "name:Zhao"注意:当我们对 value 进行查询时,这个值只能以字符串的形式返回。


如果值是字符串的话,就需要通过哈希函数将字符串转换成具体的数值,然后再对其进行映射。关于哈希函数这里不做过多介绍,如果感兴趣可以自行研究。
| 命令 | 说明 | 
|---|---|
| HDEL key field2 [field2] | 用于删除一个或多个哈希表字段。 | 
| HEXISTS key field | 用于确定哈希表字段是否存在。 | 
| HGET key field | 获取 key 关联的哈希字段的值。 | 
| HGETALL key | 获取 key 关联的所有哈希字段值。 | 
| HINCRBY key field increment | 给 key 关联的哈希字段做整数增量运算 。 | 
| HINCRBYFLOAT key field increment | 给 key 关联的哈希字段做浮点数增量运算 。 | 
| HKEYS key | 获取 key 关联的所有字段和值。 | 
| HLEN key | 获取 key 中的哈希表的字段数量。 | 
| HMSET key field1 value1 [field2 value2 ] | 在哈希表中同时设置多个 field-value(字段-值) | 
| HMGET key field1 [field2] | 用于同时获取多个给定哈希字段(field)对应的值。 | 
| HSET key field value | 用于设置指定 key 的哈希表字段和值(field/value)。 | 
| HSETNX key field value | 仅当字段 field 不存在时,设置哈希表字段的值。 | 
| HVALS key | 用于获取哈希表中的所有值。 | 
| HSCAN key cursor | 迭代哈希表中的所有键值对,cursor 表示游标,默认为 0。 | 
#设置单个字段 127.0.0.1:6379> HSET user:10 user:1 20201001 (integer) 1 #同时设置多个字段 127.0.0.1:6379> HMSET user:10 user:2 20201002 user:3 20201004 user:4 20201018 OK #查询单个字段 127.0.0.1:6379> HGET user:10 user:2 "20201002" #查询所有字段 127.0.0.1:6379> HGETALL user:10 1) "user:1" 2) "20201001" 3) "user:2" 4) "20201002" 5) "user:3" 6) "20201004" 7) "user:4" 8) "20201018" 127.0.0.1:6379> HKEYS user:10 1) "user:1" 2) "user:2" 3) "user:3" 4) "user:4" #返回字段个数 127.0.0.1:6379> HLEN user:10 (integer) 4 #返回所有字段值 127.0.0.1:6379> HVALS user:10 1) "20201001" 2) "20201002" 3) "20201004" 4) "20201018" #迭代hash的key键 127.0.0.1:6379> HSCAN user:10 0 1) "0" 2) 1) "user:1" 2) "20201001" 3) "user:2" 4) "20201002" 5) "user:3" 6) "20201004" 7) "user:4" 8) "20201018" #判断字段是否存在,存在返回1,不存在返回0 127.0.0.1:6379> HEXISTS user:10 user:4 (integer) 1 127.0.0.1:6379> HEXISTS user:10 user:5 (integer) 0在线练习工具:https://try.redis.io/