Redis hash 是一个 string 类型的 field(字段)和 value(值)的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 - 1 键值对(40多亿)。
hash 相关的命令都是以 “h” 开头的
操作 | 命令 | 例子 | 说明 |
存 | hset | hset key name value | 设置值 |
存多个键值对 | hmset | hmset key name value name1 value1 | 一次性存入多个值 |
取 | hget | hget key name | 获取值 |
取多个值 | hmget | hmget key name name1 | 获取多个值 |
取所有属性与值 | hgetall | hgetall key | |
删除单个/多个key值 | hdel | hdel key name1 name2 | 当删除一个空的 hash 时(key存在),会返回一个0 |
删除集合 | del | del key | 删除整个hash |
增加指定的数值 | hincrby | hincrby key name 指定数值 | 增加指定的数值,类似于 String 中的 incryby 操作 |
判断集合中是否存在指定的key | hexists | hexists key name | hexists 判断 hash 中的某个属性是否存在,存在返回 1,不存在返回0 |
获取属性的个数 | hlen | hlen key | 获取当前key 的 name 的个数 |
获取所有属性的名称 | hkeys | hkeys key | 获取当前 key 中 name 的值 |
获取所有属性的值 | hvals | hvals key | 获取当前 key 中所有属性的值 |
127.0.0.1:6379> hset myhash name Tom # 设置 一个具体的 key-value(integer) 1127.0.0.1:6379> hget myhash name # 获取名称"Tom"# 同时设置多个值(可以设置 key 存在的元素,也可以设置不存在的元素)127.0.0.1:6379> hmset myhash age 12 flag true OK# 同时获取 myhash 下面的 age、name、flag 值127.0.0.1:6379> hmget myhash age name flag 1) "12"2) "Tom"3) "true"127.0.0.1:6379> hgetall myhash # 获取 myhash 下面所有的 key-value1) "name"2) "Tom"3) "age"4) "12"5) "flag"6) "true"127.0.0.1:6379> hmset myhashTest age 12 # 添加一个不存在的 hash keyOK127.0.0.1:6379> keys m* # 查看以 m开头的 key元素1) "myhashTest"2) "myhash"127.0.0.1:6379>
127.0.0.1:6379> hlen myhash # 获取hash 中的字段数量(integer) 3127.0.0.1:6379> hkeys myhash # 获取hash 中所有的 key1) "name"2) "age"3) "flag"127.0.0.1:6379> hvals myhash # 获取hash 中所有的value1) "Tom"2) "12"3) "true"127.0.0.1:6379>
127.0.0.1:6379> hexists myhash test # 判断是否存在,不存在返回 0(integer) 0127.0.0.1:6379> hexists myhash name # 存在就返回 1(integer) 1127.0.0.1:6379> hincrby myhash age 2 # 指定增加数字(integer) 14127.0.0.1:6379>
127.0.0.1:6379> hsetnx myhash age 1 # 设置 myhash 值,此时 myhash 存在,设置不成功(integer) 0127.0.0.1:6379> hgetall myhash # 查看是否设置成功1) "name"2) "Tom"3) "age"4) "14"5) "flag"6) "true"127.0.0.1:6379> hsetnx myhash1 age 12 # 设置不存在的的值(integer) 1127.0.0.1:6379> keys my*1) "myhashTest"2) "myhash"3) "myhash1"127.0.0.1:6379>