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

Redis : Hash形式

哈希类型 

哈希类型的命令

hset

设置key指定的字段(field)的值(value) 

也可以设置多组field和value

hget 

获得哈希中指定字段的值

如果该字段为空或者key为空则返回nil

hexists

判断哈希中是否有该字段的值

如果有则会返回1,否则返回0

hdel

删除哈希中该字段对应的值

返回本次删除的字段个数

也可以一次删除多个哈希中的字段

hkeys

获得哈希中的全部字段

hvals

获得哈希中的所有值

hgetall

获得哈希中的全部字段和全部的值

hmget

一次性获得哈希中的多个字段

hlen

获得哈希中所有字段的个数

hstrlen

获得哈希中字段的长度

hsetnx

字段不存在下,设置哈希中的字段和值

返回1表示设置成功,0表示设置失败

hincrby

对哈希中对应字段的值添加指定的值(+/-)

hincrfloat

对哈希中的字段中的值进行浮点数运算

 

注:如果只对单个的字段进行命令作用,时间复杂度为O(1),否则是O(N)N为字段(field)的个数

带H的命令必须保证作用的是哈希类型

内部编码

哈希的内部编码一共有两种:ziplist(压缩列表)和hashtable(哈希表)

当field的个数较少,并且没有特别大的value,内部编码为ziplist,否则会自动转换为hashtable

压缩的本质,是对数据进行重新编码

可以再redis的配置文件中修改默认的配置(ziplist -> hashtable)

使用场景

用户信息的保存

关系型数据库保存用户信息

userIduesrNameage
1zhangsan2
2lisi3

映射关系表示用户信息

相⽐于使⽤JSON格式的字符串缓存用户信息,哈希类型变得更加直观,并且在更新操作上变得更灵活。

作为缓存

如果使用String(json)的格式表示UserInfo

  • 只是想获取某个field,或者修改某个field
  • 就需要把整个json都读出来,操作field,转成json字符串,再写回去

如果用哈希的方式表示UserInfo

  • 就可以使用field表示对象的属性
  • 此时修改和获取任何一个属性就会十分的方便

注:使用hash进行field的读取和修改,确实是十分的方便,但是会使其内部编码再ziplist和hashtable中进行切换,造成内存的消耗

希望能对大家有所帮助!!!!!!!

 

http://www.xdnf.cn/news/12975.html

相关文章:

  • 【threejs】每天一个小案例讲解:题外话篇
  • 算法训练第十一天
  • Python应用变量与数据类型
  • 直角坐标系和斜角坐标系
  • 《PyTorch深度学习入门》
  • 深入剖析JVM垃圾回收,高并发场景JVM性能调优,内存泄露分析,以及如何避免OOM
  • Git 常见操作
  • 【PCIe总线】-- inbound、outbound配置
  • 小游戏不能玩了?最好用flash扩展程序
  • Deep-Live-Cam电脑部署避坑大全:环境搭建、常见错误排查与终极修复方案
  • Transceiver线速率配置
  • Redis实战-消息队列篇
  • 利用coze工作流制作一个自动生成PPT的智能体
  • 针对异构数据的联邦学习
  • Linux:守护进程(进程组、会话和守护进程)
  • OC学习—命名规范
  • 八、数据库恢复技术
  • 【Bluedroid】蓝牙启动之btm_ble_init源码分析
  • 基于51单片机的花样流水灯
  • JS的传统写法 vs 简写形式
  • 打卡第39天:Dataset 和 Dataloader类
  • MySQL强化关键_020_SQL 优化
  • Opnelayers:封装Popup
  • 【推荐算法】Deep Crossing:端到端深度推荐系统的奠基者
  • PCB设计教程【大师篇】——STM32开发板原理图设计(电源部分)
  • CKA考试知识点分享(3)---sidecar
  • DAY 45 Tensorboard使用介绍
  • 主体与代理的义项选择用意: 融智学视域下的三元操作机制
  • Python数据分析7
  • VMware导入vmdk文件