【Redis】哈希类型命令、编码方式及应用场景

哈希类型

与字符串的区别,相当于在value中又增加了键值对,套娃

命令


  • 修改:hmget key field、hmset key field value field value,图上少了个key

编码方式

哈希的内部编码方式有两种:

  • ziplist(压缩列表)

    当哈希类型元素个数小于 Redis 的默认值配置时,而且所有的value都小于 Redis 的默认值配置时,Redis 就会使用ziplist作为哈希的内部实现,能更加节省内存(前提是满足上述两个条件);普通的哈希表,数组上会有些位置有元素,有些没有,那就会浪费一定的空间。

    但ziplist的读写速度是比hashtable要慢的

  • hashtable(哈希表)

    当ziplist无法满足存储时,Redis 使用哈希表作为哈希的内部实现,ziplist存的多了读写效率就下降了,而hashtable的读写速度复杂度为o(1)

应用场景

  1. 作为缓存,存储结构化的数据,除了可以用String方式,也能用哈希

    String 类型,如JSON格式,如果要修改特定的值,就需要整个取出来,对某一属性进行修改,再存回去

    若哈希方式存储,则可以单独取出对象属性,更加方便

使用hash方式,确实读写field更加直观高效,但也付出了内存空间代价,故要合理分配

  1. 与数据库不同的稀疏性
  • 哈希类型是稀疏的,而关系型数据库(MySQL等)是完全结构化的,例如哈希每个键都可以拥有不同的field,而MySQL等想要添加新的一列,那每一行都要为其设置值
  • 关系型数据库更加适合做复杂的关系联合查询
相关推荐
喜欢的名字被抢了11 小时前
MongoDB生产实践:架构设计、分片集群与运维监控
数据库·mongodb·教程
红糖奶茶11 小时前
MySQL 8.0的自增主键持久化特性
数据库·mysql·adb
Macbethad11 小时前
基于TwinCAT的半导体刻蚀设备SCADA管理程序技术方案
运维·网络·数据库
ai_coder_ai12 小时前
编写自动化脚本,在自己后端服务中使用云原生Baas服务进行设备相关操作
数据库·云原生·自动化
oradh12 小时前
Oracle DG主备架构的基本维护操作总结
数据库·oracle·架构·dg主备架构的基本维护操作总结
xieliyu.12 小时前
MySQL 六大基础约束详解:NOT NULL/DEFAULT/UNIQUE/ 主键 / 外键 / CHECK
android·数据库·sql·mysql
JSON_L13 小时前
MongoDB文档关系详解
数据库·mongodb
卓怡学长13 小时前
w268基于springboot + vue 物流系统
java·数据库·vue.js·spring boot·spring·intellij-idea
CodeStats14 小时前
《源纹天书》第一百四十一章至第一百四十五章:etcd升级、2PC的阻塞困境、3PC的超时突破、TCC的补偿之道、Saga的最终选择!
java·大数据·数据库·etcd·源纹天书
.Cnn14 小时前
Redis基础day02
java·数据库·redis