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

零基础学习Redis(7) -- hash类型命令使用

Redis本身就是通过哈希表的方式组织数据,同时redis中的value也可以是另一个哈希表。

1. 常用命令

1. hset / hsetnx

hset key filed1 value1 filed2 value2 ...

hset 用于把键值对存入value中,这里的key为redis组织的键, filed1 value1 filed2 value2 为key的value,为了区分所以把内部的 hash的键用filed表示。

hset会返回设置成功的键值对个数,如果filed已经存在则会覆盖对应的value但是返回数不会增加

hsetnx filed value 

filed 不存在才能设置成功

2. hget / hmget

hget key filed 

返回filed对应的value,不存在返回nil

hmget key filed1 filed2 ... 

返回多个filed对应的value,不存在返回nil

 

3. hdel

hdel key filed1 filed2 ...

删除对应的键值对,返回删除的个数:

4. hkeys

hkeys key 

返回key中所有的filed

5. hvals

hvals  key

返回key中所有的value 

6. hgetall 

hgetall key 

返回key中所有的键值对:

7. hlen

hlen key 

获取哈希表元素个数 

 8. hincrby / hincrbyfloat

hincrby key fild n

对value + n,并返回结果,n可以为负数

hincrbyfloat key fild f 

 对value + f,并返回结果,f可以为负数,小数

2. 编码方式

1. Ziplist:

  • 适用场景:当哈希表较小,且字段和值都较短时
  • 特点:Ziplist 是一种压缩编码方式,存储小型哈希表中的字段和值。它将多个字段和值紧凑地存储在一个连续的内存块中。

2. Hash Table:

  • 适用场景:当哈希表较大或字段和值较长时。
  • 特点:哈希表编码是 Redis 默认的哈希编码方式。它使用链式哈希结构,支持高效的字段和对应值的查找、插入和删除操作。

Redis 会根据哈希表的大小和内容自动选择适合的编码方式,以确保存储和操作的高效性。

3. 应用场景

作为缓存,存储一些结构化的数据,例如对象:

也可以把对象转为json使用string类型来存,不过没有使用哈希表直观,并且修改某个属性也更麻烦。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • TCP的流量控制深入理解
  • 92. UE5 GAS RPG 使用C++创建GE实现灼烧的负面效果
  • 【操作系统】同步互斥与Golang互斥锁实现
  • 【TomCat】安装部署
  • 实训day41(9.2)
  • Python读取Excel数据教程 - 详细版
  • HTTPS 通信时是对称加密还是非对称加密?
  • 2024年互联网公司时薪排行榜大曝光!看完我酸了,第一竟是他…
  • 云计算实训40——部署nmt、部署project_exam_system项目
  • 基于深度学习的稀疏感知器设计
  • 使用PyInstaller打包带图标的软件
  • kafak推送消息。
  • 将Nginx注册为Windows服务
  • uniapp布局
  • react 列表页面中管理接口请求的参数
  • ES6指北【2】—— 箭头函数
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • echarts的各种常用效果展示
  • Java IO学习笔记一
  • Java程序员幽默爆笑锦集
  • Lsb图片隐写
  • miaov-React 最佳入门
  • Nacos系列:Nacos的Java SDK使用
  • Rancher-k8s加速安装文档
  • Redux 中间件分析
  • spring学习第二天
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 我看到的前端
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (39)STM32——FLASH闪存
  • (Matlab)使用竞争神经网络实现数据聚类
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (回溯) LeetCode 78. 子集
  • (南京观海微电子)——示波器使用介绍
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (一)Docker基本介绍
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)视频码率,帧率和分辨率的联系与区别
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .java 9 找不到符号_java找不到符号
  • .Net - 类的介绍
  • .NET 8.0 发布到 IIS
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core 成都线下面基会拉开序幕
  • .NET Reactor简单使用教程