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

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中进行切换,造成内存的消耗

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

 

相关文章:

  • Linux68 FTP 测试 上传下载
  • 【PCIe总线】-- inbound、outbound配置
  • LSTM-SVM多变量时序预测(Matlab完整源码和数据)
  • Django知识-视图
  • uni-app学习笔记三十--request网络请求传参
  • uni-app学习笔记二十四--showLoading和showModal的用法
  • 基于Python学习《Head First设计模式》第十章 状态模式
  • Vulkan 3D Tiles渲染器开发笔记1-脚手架搭建
  • 时间序列预测的机器学习方法:从基础到实战
  • 材料力学速通
  • 设置QDialog的setModal(true)对show()无法阻塞
  • Elasticsearch从安装到实战、kibana安装以及自定义IK分词器/集成整合SpringBoot详细的教程ES(三)
  • 从 Kubernetes 学习大规模 Go 项目架构
  • 初级程序员入门指南
  • Psychopy音频的使用
  • (一)单例模式
  • 【Blender】Blender 通过 Python 实现模型大小压缩
  • 作为点的对象CenterNet论文阅读
  • GitHub 常见高频问题与解决方案(实用手册)
  • Compose笔记(二十六)--DatePicker
  • 在微信怎么开发公众号/seo建站公司推荐
  • 个人备案网站百度收录/河北网站优化公司
  • 武汉百度推广费用/seo关键词排名公司
  • 淘宝网站是怎么做的吗/百度高级搜索页面
  • 做php网站教程视频教程/沧州搜索引擎优化
  • 怎样建网站 需要/各种手艺培训班