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

Redis数据结构之Hash

目录

    • 1.概述
    • 2.常见操作
      • 2.1 H(M)SET/H(M)GET
      • 2.2 HGETALL
      • 2.3 HDEL
      • 2.4 HLEN
      • 2.5 HEXISTS
      • 2.6 HKEYS/HVALS
      • 2.7 HINCRBY
      • 2.8 HSETNX
    • 3.总结

1.概述

  • Hash是一个String类型的field(字段)和value(值)的映射表,而且value是一个键值对集合,类似Map<String, Map<Object, Object>>,Hash特别适合用于存储对象。
  • 每个Hash可以存储2³²-1个键值对 (40多亿)。

在这里插入图片描述

2.常见操作

2.1 H(M)SET/H(M)GET

HSET/HGET,设置和获取hash的键值对

语法:

hset key field value [field value ......] 

例:

127.0.0.1:6379> hset user:01 name liming
(integer) 1
hset user:01 id 1 name liming age 30

语法:

hget key field [field ......] 

例:

127.0.0.1:6379> hget user:01 name
"liming"
127.0.0.1:6379> hget user:01 age
"30"
127.0.0.1:6379> hget user:01 id
"1"

HMSET,一次批量设置hash的多个值

127.0.0.1:6379> HMSET user:02 id 02 name lisi
OK

从 Redis 4.0.0 开始,HSET 也支持批量设置,HMSET 被视为已弃用,但仍可使用。

HMGET,一次获取某个hash的多个值

127.0.0.1:6379> hmget user:02 id name 
1) "02"
2) "lisi"

2.2 HGETALL

获取一个hash中的所有键值

127.0.0.1:6379> hgetall user:01
1) "name"
2) "liming"
3) "id"
4) "1"
5) "age"
6) "30"

2.3 HDEL

删除hash中的某个键值对

127.0.0.1:6379> hdel user:01 age
(integer) 1
127.0.0.1:6379> hgetall user:01
1) "name"
2) "liming"
3) "id"
4) "1"

2.4 HLEN

hash中键值对数量

127.0.0.1:6379> hlen user:01
(integer) 2

2.5 HEXISTS

hash中某个键是否存在

127.0.0.1:6379> HEXISTS user:01 age
(integer) 0
127.0.0.1:6379> HEXISTS user:01 name
(integer) 1

2.6 HKEYS/HVALS

获取一个hash中所有的键/值

127.0.0.1:6379> HKEYS user:01
1) "name"
2) "id"

127.0.0.1:6379> HVALS user:01
1) "liming"
2) "1"

2.7 HINCRBY

对hash中某个键的值进行自增

127.0.0.1:6379> hmset user:03 age 13
OK
127.0.0.1:6379> hincrby user:03 age 1
(integer) 14
127.0.0.1:6379> hincrby user:03 age 2
(integer) 16

2.8 HSETNX

不存在就赋值,如已存在则无效

127.0.0.1:6379> hgetall user:03
1) "age"
2) "16"
127.0.0.1:6379> HSETNX user:03 name liming
(integer) 1
127.0.0.1:6379> HSETNX user:03 age 3
(integer) 0


3.总结

KV键值对的结构,适合早期的购物车等场景

http://www.dtcms.com/a/113032.html

相关文章:

  • 如何通过共同训练 LLAMA3(大语言模型)与 GAT(图注意力网络)来实现检索增强生成(RAG),用于基于知识图谱信息回答问题
  • 【算法实践】算法面试常见问题——数组的波浪排序
  • 【VUE】RuoYi-Vue3项目结构的分析
  • 在QWidget中如何添加QAction
  • Unity:标签(tags)
  • 操作系统 4.5-文件使用磁盘的实现
  • 【奇点时刻】GPT4o新图像生成模型底层原理深度洞察报告(篇2)
  • 数据结构(JAVA)栈
  • Nacos 服务发现的核心模型有哪些?Service, Instance, Cluster 之间的关系是什么?
  • 基于Transformer框架实现微调后Qwen/DeepSeek模型的流式推理并封装成接口
  • 获取inode的完整路径包含挂载的路径
  • 蓝桥杯 完全平方数 刷题笔记
  • 优化 Web 性能:管理第三方资源(Third-Party Summary)
  • 数字内容体验A/B测试优化实战
  • 本地命令行启动服务并连接MySQL8
  • NLP/大模型八股专栏结构解析
  • [特殊字符] Pandas 常用操作对比:Python 运算符 vs Pandas 函数
  • JuiceFS设计框架剖析
  • 【C/C++】编译与链接过程详解
  • 最小生成树理论
  • ROM/FLASH/RAM
  • LeetCode刷题常见的Java排序
  • 安卓开发工程师-布局设计
  • 【深度学习】嘿马深度学习目标检测教程第1篇:商品目标检测要求、目标,1.1 项目演示【附代码文档】
  • 前端判断值相等的方法和区别
  • I.MX6ULL 交叉编译环境配置与使用
  • 纯免费的零基础建站教程
  • Android使用OpenGL和MediaCodec录制
  • JDK8卸载与安装教程(超详细)
  • 122.买卖股票的最佳时机 II