【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等想要添加新的一列,那每一行都要为其设置值
  • 关系型数据库更加适合做复杂的关系联合查询
相关推荐
就叫_这个吧5 小时前
Redis从基础命令到核心机制简单介绍
数据库·redis·缓存
dear_bi_MyOnly6 小时前
【MyBatis 操作数据库】
java·数据库·学习·mybatis·学习方法
DBA_G7 小时前
南大通用GBase 8s数据库新存储引擎核心能力二
数据库·微服务·架构
衣乌安、8 小时前
数据库事务原理与回滚机制
数据库
CodexDave9 小时前
PostgreSQL 明明有索引却选了 Nested Loop:从行数误判修正执行计划
数据库·postgresql·执行计划·扩展统计·nestedloop
czhaii11 小时前
STC ai助手单片机工程项目创建实例
数据库·mongodb
山峰哥11 小时前
数据库性能救星:Explain执行计划深度拆解
服务器·开发语言·数据库·sql·启发式算法
oradh11 小时前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
YOU OU12 小时前
Redis哨兵 & 集群
数据库·redis·sentinel
小罗水12 小时前
第8章 文档解析与文本切片
数据库·spring·spring cloud·微服务