Redis——哈希类型相关指令

Redis本身就是使用哈希表来进行KV存储,Value的类型为哈希的话就相当于哈希表的嵌套,即:哈希表的每个位置又是一个哈希表。

为了与Redis本身的键值对名字冲突,哈希类型的value中的键不叫key而叫field。

添加字段

sql 复制代码
HSET key [f1 v1 f2 v2 ...] //创建一个hash类型的键值对并在其中添加/修改若干个字段

字段不存在则新增
字段已存在会覆盖
key 不存在会自动创建
返回值:本次新增字段个数

HSETNX [key] [f] [v] //如果key不存在才设置,不支持一次性添加若干个field

获取字段值

sql 复制代码
HGET [k] [f]               //获取哈希表中单个字段的值

k指明是哪个键值对中的value
f指明是value中的哪个field对应的值
key 不存在或字段不存在,返回 nil

判断字段是否存在

sql 复制代码
HEXISTS key field              //判断哈希表中的某字段是否存在

存在返回 1
不存在或 key 不存在返回 0

删除字段

sql 复制代码
HDEL key f1 f2 ...             //删除key对应的哈希表的若干个字段

不存在的字段自动忽略
返回值:成功删除字段个数
删除完所有字段后,key 自动消失

查询字段

sql 复制代码
HMGET [key] [f1,f2 ... ...] //查询key对应的value中的若干个field对应的value

HKEYS [key] //查询key对应的value的所有field

HVALS [key] //查询key对应的value的所有field对应的value

hgetall [key] //查询key对应的value的所有键值对

获取字段的数量

sql 复制代码
HLEN [key] //返回key对应的value中的键值对的数量

key 不存在返回 0

字段值整数递增

sql 复制代码
HINCRBY [key] [f] [n] //把key对应的value中的field对应的value增/减 n

字段不存在自动初始化为 0 再计算
必须是整数,返回计算后的结果

HINCRBYFLOAT 字段值浮点数递增

sql 复制代码
HINCRBYFLOAT [key] [f] [n] //把key对应的value中的field对应的value增/减 n

字段不存在自动初始化为 0
返回计算后的浮点结果

哈希类型的应用场景

对于存储关联信息来说,哈希类型比较好。如果用String存Json对象,每次差某个值还需要反序列化,效率比较低;如果一个信息对应一个映射关系,耗费内存并且内聚性差。

相关推荐
北域码匠4 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
指掀涛澜天下惊5 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
乌萨奇也要立志学C++5 小时前
【洛谷】kmp算法
开发语言·算法
禹凕5 小时前
Dijkstra算法详解与应用
python·算法
YaraMemo6 小时前
元启发式算法框架
人工智能·算法·5g·信息与通信·启发式算法·信号处理
weixin_307779136 小时前
一维无粘 Burgers 方程的激波形成问题:MacCormack 格式求解
c++·算法·matlab
HugoStudio_SWAN7 小时前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
枫叶林FYL7 小时前
【群体智能集群控制工程实践】第3章 一致性协同算法
算法
禹凕8 小时前
滑动窗口算法实战指南
python·算法
DisonTangor8 小时前
【腾讯混元雪耻归来】 Hy4 preview:770B 参数 MoE 旗舰模型,1M 上下文全面开源
人工智能·算法·开源·aigc·腾讯云·腾讯云ai代码助手