当前位置: 首页 > news >正文

Redis 数据类型hash(哈希)

目录

1 基本特性

2 主要操作命令 

2.1 设置和获取字段

2.1.1 HSET key field value

2.1.2 HGET key field

2.1.3 HMSET key field1 value1 [field2 value2 ...] 

2.1.4 HMGET key field1 [field2 ...]

2.2 检查字段是否存在

2.2.1 HEXISTS key field

2.3 获取所有字段和值

2.3.1 HGETALL key

2.3.2 HKEYS key

2.3.3 HVALS key

2.4 删除字段

2.4.1 HDEL key field1 [field2 ...]

2.5 计算字段数量

2.5.1 HLEN key

2.6 递增/递减字段值

2.6.1 HINCRBY key field increment

2.6.2 HINCRBYFLOAT key field increment 


哈希在 Redis 中是一个键值对集合,适合存储对象。每个哈希可以存储多个字段-值(field-value)对。哈希非常适合存储那些具有多个属性的对象,比如用户信息等。

1 基本特性

  • 键值对集合:哈希是一个键值对的集合,其中每个键关联一个字符串值。这使得哈希可以用来表示复杂的对象,例如包含多个属性的用户记录。

  • 内存效率:哈希在内部使用一种紧凑的表示方式来存储数据,这对于存储大量小对象来说非常高效。当哈希中字段较少时,Redis 使用ziplist编码以节省空间;当字段数量或值大小超过一定阈值时,则转换为hashtable编码。

  • 原子操作:对于单个哈希表的所有命令都是原子性的,这意味着即使有多个客户端同时访问同一个哈希表,它们的操作也不会互相干扰。

  • 部分更新:你可以单独更新哈希中的任何一个字段,而不需要重新写入整个哈希。

  • 性能:哈希的字段读写非常高效,特别是当字段数量较少时。

2 主要操作命令 

2.1 设置和获取字段
2.1.1 HSET key field value

将哈希表 key 中的字段 field 的值设为 value

127.0.0.1:6379> HSET user:1 name "Alice" age 25
(integer) 2
2.1.2 HGET key field

获取哈希表 key 中字段 field 的值。

127.0.0.1:6379> hget user:1 name
"Alice"
2.1.3 HMSET key field1 value1 [field2 value2 ...] 

同时设置多个字段值(从 Redis 4.0 开始推荐使用 HSET 的多参数形式)。

127.0.0.1:6379> hmset user:2 name "jack" age 29
OK
2.1.4 HMGET key field1 [field2 ...]

同时获取多个字段的值。

127.0.0.1:6379> hmget user:2 name age
1) "jack"
2) "29"
2.2 检查字段是否存在
2.2.1 HEXISTS key field

检查哈希表 key 中是否存在字段 field。存在field属性返回1,不存在返回0。

127.0.0.1:6379> hexists user:2 name
(integer) 1
127.0.0.1:6379> hexists user:2 email
(integer) 0
2.3 获取所有字段和值
2.3.1 HGETALL key

获取哈希表 key 中所有的字段和值。

127.0.0.1:6379> hgetall user:2
1) "name"
2) "jack"
3) "age"
4) "29"
2.3.2 HKEYS key

获取哈希表 key 中的所有字段名。 

127.0.0.1:6379> hkeys user:2
1) "name"
2) "age"
2.3.3 HVALS key

获取哈希表 key 中的所有字段值。

127.0.0.1:6379> hvals user:2
1) "jack"
2) "29"
2.4 删除字段
2.4.1 HDEL key field1 [field2 ...]

删除哈希表 key 中的一个或多个字段。

127.0.0.1:6379> hdel user:2 age
(integer) 1
127.0.0.1:6379> hkeys user:2
1) "name"
2.5 计算字段数量
2.5.1 HLEN key

返回哈希表 key 中字段的数量。

127.0.0.1:6379> hlen user:2
(integer) 1
2.6 递增/递减字段值
2.6.1 HINCRBY key field increment

将哈希表 key 中的字段 field 的整数值增加指定的增量。

127.0.0.1:6379> hgetall user:1
1) "name"
2) "Alice"
3) "age"
4) "25"
127.0.0.1:6379> hincrby user:1 age 4
(integer) 29
127.0.0.1:6379> hget user:1 age
"29"
2.6.2 HINCRBYFLOAT key field increment 

将哈希表 key 中的字段 field 的浮点数值增加指定的增量。

127.0.0.1:6379> hincrbyfloat user:1 age 0.50
"29.5"

更多命令请参考:Commands | Docs

http://www.lryc.cn/news/462303.html

相关文章:

  • 单一执行和循环执行的例行性工作
  • 单细胞分析 | Cicero+Signac 寻找顺式共可及网络
  • 人工智能创造出大量新型蛋白质
  • Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)
  • c 语言 sprintf
  • stm32单片机个人学习笔记10(TIM编码器接口)
  • 如何在Android中存储数据?
  • 13.3寸工业三防平板数字化工厂产线数采手持终端
  • ssh连接慢的问题或zookeeper远程连接服务超时
  • perf工具使用指导
  • WordPress 禁用上传媒体图片自动生成缩略图及多尺寸图片教程
  • 锥线性规划【分布鲁棒、两阶段鲁棒方向知识点】
  • linux环境下的程序设计与git操作
  • Matlab中HybridFcn参数的用法
  • Leetcode 3316. Find Maximum Removals From Source String
  • jeecg3版本的vue,离线启动
  • C++的内存管理
  • YZ系列工具之YZ09:VBA_Excel之读心术
  • 嵌入式系统---看门狗
  • 从MySQL5.7迁移到8.0时,有哪些重要的参数调整或新参数需要注意?
  • 完整发布/上传uniapp Ios应用到App Store流程
  • CodeActAgent :Executable Code Actions Elicit Better LLM Agents解读
  • 中小型医院网站开发:Spring Boot入门
  • Java读取PDF后做知识库问答_SpringAI实现
  • 打开exe程序显示没有适当的访问权限
  • Python异步编程:使用`create_task`并发执行协程
  • 从零开始搭建你的DolphinScheduler分布式任务调度平台实战指南
  • 第五课:Python学习之if语句
  • 群晖前面加了雷池社区版,安装失败,然后无法识别出用户真实访问IP
  • 【秋招笔试】10.13拼多多(已改编)秋招-三语言题解