redis Hash
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指定字段整数增量incrementhincrbyfloat key field increment哈希表中 key指定字段浮点数增量incrementhkeys 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"
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 WenYan Blog!
评论








