redis哈希操作
Posted 尘曦一期一会
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis哈希操作相关的知识,希望对你有一定的参考价值。
用户可以通过执行hset命令为哈希中的指定字段设置值;
127.0.0.1:6379> hset hash field value
根据给定的字段是否存在于散列中,hset命令的行为也会有所不同,如果给定字段不存在与散列中,那么这一次设置就是一次创建操作,命令将会在散列里面关联起给定的字段和值,然后返回1;如果给定的字段原本存在于散列里面,那么这次设置就是一次更新操作,命令会将用户给定的新值取覆盖掉原有的旧值,然后返回0
127.0.0.1:6379> hset ar titlr "hello world" (integer) 1 127.0.0.1:6379> hset ar titlor "hello world" (integer) 1 127.0.0.1:6379> hset ar cr "hello world" (integer) 1
使用新值覆盖旧值
如果用户调用hset命令时给定的字段已经存在于散列当中,那么hset命令将会使用用户给定的新值去覆盖已有的旧值,并返回0表示是一次更新操作
127.0.0.1:6379> hset ar cr "paopaotang" (integer) 0 127.0.0.1:6379> hset ar titlr "miaohuatang" (integer) 0
hsetnx只在字段不存在的情况下为它设置值
127.0.0.1:6379> hsetnx hash field value
hsetnx命令在字段不存在并且成功为它设置值时返回1,在字段已经存在并导致操作失败执行返回0
127.0.0.1:6379> hsetnx ar cr "xiaowugui" (integer) 0 失败
如果值不存在,命令会顺利执行
127.0.0.1:6379> hsetnx ar co "xiaowugui" (integer) 1 成功执行
hget 获取字段的值
127.0.0.1:6379> hget hash field
获取 ar散列里co字段的值
127.0.0.1:6379> hget ar co "xiaowugui"
如果给定散列里的字段不存在则会返回空,与给一个不存在的散列里的一个不存在的字段效果一样都返回空
127.0.0.1:6379> hsetnx ar co "xiaowugui" (integer) 1 127.0.0.1:6379> hget ag ci (nil) 127.0.0.1:6379> hget ao ci (nil)
HINCRBY 对存储的整数值执行加减法操作
与字符串键的incrby命令一样,如果散列的字段里存储着能被redis解释为整数的数字,那么用户就可以使用hincrby命令为该字段的值加上指定的整数增量
127.0.0.1:6379> hget ao ci "852" 127.0.0.1:6379> hincrby ao ci 90 (integer) 942 127.0.0.1:6379> hget ao ci "942"
执行减法操作,必须传负数
127.0.0.1:6379> hincrby ao ci -290 (integer) 652 127.0.0.1:6379> hget ao ci "652"
增量必须解释为整数,异常情况处理
127.0.0.1:6379> hset vx yu o (integer) 1 127.0.0.1:6379> hincrby vx yu 5 (error) ERR hash value is not an integer 127.0.0.1:6379> hincrby ao ci "jn" (error) ERR value is not an integer or out of range 127.0.0.1:6379> hincrby ao ci 3.8 (error) ERR value is not an integer or out of range
hincrbyfloat 对存储的数字执行浮点数加减法操作
hincrbyfloat命令的作用与hincrby命令类似,它们之间主要的区别在于hincrbyfloat不仅可以使用整数作为增量,还可以使用浮点数作为增量
127.0.0.1:6379> hincrbyfloat hash field increment
hincrbyfloat命令在成功执行假发操作后,将返回给定字段的当前值作为结果
127.0.0.1:6379> hget hh hg "100.0099647" 127.0.0.1:6379> hincrbyfloat hh hg 13.2 "113.2099647"
增量与字段值的类型限制,正如之前所说,hincrbyfloat命令不仅可以使用浮点作为增量,还可以使用整数作为增量
127.0.0.1:6379> hget gif ij "3.14" 127.0.0.1:6379> hincrbyfloat gif ij 10086 "10089.13999999999999968"
此外,不仅存储浮点数的字段可以执行hincrbyfloat命令,存储整数的字段也可以执行hincrbyfloat命令
127.0.0.1:6379> hset cf u 90 (integer) 1 127.0.0.1:6379> hincrbyfloat cf u 10 "100" 127.0.0.1:6379> hincrbyfloat cf u 10.2 "110.2"
执行减法操作
127.0.0.1:6379> hincrbyfloat cf u -10.2 "100" 127.0.0.1:6379> hincrbyfloat cf u -10.2 "89.8"
hstrlen :获取字段的长度
127.0.0.1:6379> hstrlen hash field
示例
127.0.0.1:6379> hget qie g "yuiokm" 127.0.0.1:6379> hstrlen qie g (integer) 6
如果给定的字段或散列不存在,命令将返回0
127.0.0.1:6379> hstrlen qie o (integer) 0 127.0.0.1:6379> hstrlen u g (integer) 0
检查字段是否存在hexists
hexists 用法
127.0.0.1:6379> hexists hesh field
如果哈希里包含字段则返回1,不包含返回0
127.0.0.1:6379> hexists qie g (integer) 1 127.0.0.1:6379> hexists qie o (integer) 0
HDEL删除字段
用法
127.0.0.1:6379> hdel hash field [field ...]
当给的字段成功从哈希里删除是,命令返回1 ;如果给定的哈希字段不存在,命令返回0
127.0.0.1:6379> hset titu gf "yu" (integer) 1 127.0.0.1:6379> hset titu gh "yu" (integer) 1 127.0.0.1:6379> hset titu go "yu" (integer) 1 127.0.0.1:6379> hset titu to "u" (integer) 1 127.0.0.1:6379> hdel titu gh (integer) 1 127.0.0.1:6379> hdel titu to (integer) 1
hlen获取哈利字段数量
127.0.0.1:6379> hlen hash
查看 titu 哈希的字段
127.0.0.1:6379> hlen titu (integer) 3
如果用户给定的哈希不存在则返回0
127.0.0.1:6379> hlen jb (integer) 0
hmset:一次为多个字段设置值
127.0.0.1:6379> hmset hash field [field value ...]
为cx设置多个字段
127.0.0.1:6379> hmset cx cq "9" cs "8" fd "6" OK
更新cx里的值
127.0.0.1:6379> hmset cx cq "6" cs "4" fd "8" OK
hmget : 一次获取多个值
127.0.0.1:6379> hmget hash field [field ...] [f
获取 cx里“cq”“cs”值
127.0.0.1:6379> hmget cx cq cs 1) "6" 2) "4"
与hget命令一样,如果用户给定的字段不存在那么将返回空
127.0.0.1:6379> hmget cx cq vc cs 1) "6" 2) (nil) --vc 不存在 3) "4"
hkeys、hvals、hgetall:获取所有字段、获取所有值和获取所有字段与值
HKEYS hash 字段 HVALS hash 值 HGETALL hash 字段与值
获取 cx 所有字段
127.0.0.1:6379> HKEYS cx 1) "cq" 2) "cs" 3) "fd"
获取cx所有值
127.0.0.1:6379> HVALS cx 1) "6" 2) "4" 3) "8"
获取所有字段与值
127.0.0.1:6379> HGETALL cx 1) "cq" 字段 2) "6" 值 3) "cs" 4) "4" 5) "fd" 6) "8"
在hgetall命令返回中。没两个元素表示哈希里的一对字段和值,其中奇数位的元素为字段,偶数行为字段的值,如果用户给定哈希不存在将返回空列表
127.0.0.1:6379> HGETALL lj (empty list or set) 127.0.0.1:6379> HGETALL lj (empty list or set) 127.0.0.1:6379> HKEYS ll (empty list or set)
以上是关于redis哈希操作的主要内容,如果未能解决你的问题,请参考以下文章
laravel-- 在laravel操作redis数据库的数据类型(string哈希无序集合list链表有序集合)
RedisRedis 哈希 Hash 键值对集合操作 ( 哈希 Hash 键值对集合简介 | 查询操作 | 增加操作 | 修改操作 )