【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等想要添加新的一列,那每一行都要为其设置值
  • 关系型数据库更加适合做复杂的关系联合查询
相关推荐
云边有个稻草人1 小时前
KDTS 迁移工具使用指南:从Oracle平滑迁移至KingbaseES
数据库·国产数据库·kes·kdts
2401_865439631 小时前
HTML5中SVG原生动画标签Animate的基础用法
jvm·数据库·python
不剪发的Tony老师1 小时前
Tome:一款AI原生的数据库客户端工具
数据库·ai-native
Wyz201210242 小时前
SQL如何实现实时数据的滑动窗口分析_SQL性能调优
jvm·数据库·python
Greyson12 小时前
Bootstrap制作后台管理系统布局 Bootstrap如何搭建Dashboard框架
jvm·数据库·python
m0_678485452 小时前
mysql如何配置多实例端口隔离_mysql多实例端口规划
jvm·数据库·python
Dontla2 小时前
Prometheus介绍(开源系统监控与告警工具)(时间序列数据库TSDB、标签化label-based多维分析、Pull模型、PromQL查询语言)
数据库·开源·prometheus
2301_814809862 小时前
如何在 Go 中精确安装指定版本的模块
jvm·数据库·python
m0_748839492 小时前
PHP跨平台部署AI应用_Docker容器化方案【教程】
jvm·数据库·python