【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等想要添加新的一列,那每一行都要为其设置值
  • 关系型数据库更加适合做复杂的关系联合查询
相关推荐
这个DBA有点耶4 小时前
银行业市占率最高的国产数据库是谁?先搞清楚“市占率”的四种口径
数据库·程序员·架构
用户6279947182625 小时前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
数据库小学妹5 小时前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
一个天蝎座的程序猿5 小时前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库
飞越未来云城的霓虹飞猪5 小时前
AI 数据库地图:从 PostgreSQL 到向量数据库,一次看懂 AI 时代的数据底座
数据库
不像程序员的程序媛5 小时前
导出mysql数据结构
数据库·mysql
GlobalTradercrb5 小时前
独立站SEO先写博客还是先优化产品页?看站点阶段
数据库·人工智能·google·pdf·go·seo
PingCAP6 小时前
善战者无赫赫之功:消费金融核心系统的数据库选型与升级路径
数据库·分布式·架构
花间相见6 小时前
【计算基础|MySQL09】索引(下):失效与设计
数据库·后端·面试
张宇Joaquin7 小时前
Linux系统下磁盘扇区512n、512e和4kn的区别
linux·运维·数据库