Hash
redis hash
是一个string
类型的field
和value
的映射表,hash
特别适合存储对象每个
hash
对象可以存储$2^{32}-1$ 个键值对.
1.常用命令
命令 描述 hdel key field1 [field2]
删除一个或多个哈希表字段 hexists key field
查看哈希表 key
中指定的字段是否存在hget key field
获取存储在哈希表中指定字段的值 hgetall key field
获取哈希表中指定 key
所有字段和值hincrby key field increment
哈希表中 key
指定字段整数增量increment
hincrbyfloat key field increment
哈希表中 key
指定字段浮点数增量increment
hkeys key
获取所有哈希表中的字段 hlen key
获取哈希表中字段的数量 hmget key field1 [field2]
获取所有给定字段的值 hmset key f1 v1 [f2 v2]
同时设置多个键值对到哈希表 key
中hset key field value
将哈希表 key 中的字段 field 的值设为 value hsetnx key field value
只有在字段 field 不存在时,设置哈希表字段的值 hvals key
获取哈希表中所有值 hscan key cousor
迭代哈希表分钟的键值对
2.基本设置
hexists key field
:查看哈希表key
中,给定域field
是否存在.hset key field value
:将哈希表key
中的域field
的值设为value
,如果key
不存在,一个新的哈希表被创建,如果域field
已经存在,旧值会被覆盖.hget key field
: 返回哈希表key
给定域field
的值.hgetall key
:获取哈希表中key
所有的域和值.hkeys key
:获取哈希表中key
的所有域.hvals key
:获取哈希表中key
的所有值.hlen key
:获取哈希表key
中域的数量.hdel key field1 [field2]
:删除哈希表key
的一个或多个指定域,不存在的会被忽略实例:
127.0.0.1:6379> HEXISTS google (error) ERR wrong number of arguments for 'hexists' command 127.0.0.1:6379> HEXISTS website google (integer) 0 127.0.0.1:6379> hset website google 'www.g.cn' (integer) 1 127.0.0.1:6379> hset website google 'www.google.com' (integer) 0 127.0.0.1:6379> hget website google "www.google.com" 127.0.0.1:6379> hgetall website 1) "google" 2) "www.google.com" 127.0.0.1:6379> hkeys website 1) "google" 127.0.0.1:6379> hvals website 1) "www.google.com" 127.0.0.1:6379> hlen website (integer) 1 127.0.0.1:6379> hdel website (error) ERR wrong number of arguments for 'hdel' command 127.0.0.1:6379> hdel website google (integer) 1 127.0.0.1:6379> hget website (error) ERR wrong number of arguments for 'hget' command 127.0.0.1:6379> hget website google (nil) 127.0.0.1:6379> del website (integer) 0
3.递增
1.
hincrby key field increment
:为哈希表key
中的域field
的值加上增量increment
,增量也可以为负数,相当于对给定域进行减法操作.如果域field
不存在,那么在执行命令前,域的值被初始化为0
.2.
HINCRBYFLOAT key field increment
:为哈希表key
中的域field
加上浮点数增量increment
# increment 为正数 redis> HEXISTS counter page_view # 对空域进行设置 (integer) 0 redis> HINCRBY counter page_view 200 (integer) 200 redis> HGET counter page_view "200" # increment 为负数 redis> HGET counter page_view "200" redis> HINCRBY counter page_view -50 (integer) 150 redis> HGET counter page_view "150" # 尝试对字符串值的域执行HINCRBY命令 redis> HSET myhash string hello,world # 设定一个字符串值 (integer) 1 redis> HGET myhash string "hello,world" redis> HINCRBY myhash string 1 # 命令执行失败,错误。 (error) ERR hash value is not an integer redis> HGET myhash string # 原值不变 "hello,world" # 值和增量都是普通小数 redis> HSET mykey field 10.50 (integer) 1 redis> HINCRBYFLOAT mykey field 0.1 "10.6" # 值和增量都是指数符号 redis> HSET mykey field 5.0e3 (integer) 0 redis> HINCRBYFLOAT mykey field 2.0e2 "5200" # 对不存在的键执行 HINCRBYFLOAT redis> EXISTS price (integer) 0 redis> HINCRBYFLOAT price milk 3.5 "3.5" redis> HGETALL price 1) "milk" 2) "3.5" # 对不存在的域进行 HINCRBYFLOAT redis> HGETALL price 1) "milk" 2) "3.5" redis> HINCRBYFLOAT price coffee 4.5 # 新增 coffee 域 "4.5" redis> HGETALL price 1) "milk" 2) "3.5" 3) "coffee" 4) "4.5"