hash类型是一个string类型的field和value的映射表,每个 hash 可以存储 232 - 1 键值对(40多亿),hash类型主要有以下应用场景。

  1. 购物车

  以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的3个要素,如下图所示。

  

  2. 存储对象

  hash类型的(key, field, value)的结构与对象的(对象id, 属性, 值)的结构相似,也可以用来存储对象。

  在介绍string类型的应用场景时有所介绍,string + json也是存储对象的一种方式,那么存储对象时,到底用string + json还是用hash呢?

  两种存储方式的对比如下表所示。

  string + json hash
效率 很高
容量
灵活性
序列化 简单 复杂

  当对象的某个属性需要频繁修改时,不适合用string+json,因为它不够灵活,每次修改都需要重新将整个对象序列化并赋值,如果使用hash类型,则可以针对某个属性单独修改,没有序列化,也不需要修改整个对象。比如,商品的价格、销量、关注数、评价数等可能经常发生变化的属性,就适合存储在hash类型里。

  当然,不常变化的属性存储在hash类型里也没有问题,比如商品名称、商品描述、上市日期等。但是,当对象的某个属性不是基本类型或字符串时,使用hash类型就必须手动进行复杂序列化,比如,商品的标签是一个标签对象的列表,商品可领取的优惠券是一个优惠券对象的列表(如下图所示)等,即使以coupons(优惠券)作为field,value想存储优惠券对象列表也还是要使用json来序列化,这样的话序列化工作就太繁琐了,不如直接用string + json的方式存储商品信息来的简单。

  

  综上,一般对象用string + json存储,对象中某些频繁变化的属性抽出来用hash存储

  

  hash类型的常用命令可参考http://www.runoob.com/redis/redis-hashes.html

  加入hash类型的应用场景后的思维导图如下。

  

最新文章

  1. [LeetCode] 132 Pattern 132模式
  2. 配置hadoop
  3. 18.tty驱动程序框架
  4. java容器的一些存取用法
  5. Oracle去掉字符串首尾
  6. CSS3-给网页添加图片
  7. python关于列表转为字典的两个小方法
  8. BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
  9. 学习笔记-[Maven实战]-第二章:Maven安装和配置
  10. Python之路: 面向对象
  11. MyEclipse中Lombok的安装及使用
  12. Understanding the Objective-C Runtime
  13. jenkins X实践系列(3) —— jenkins X 安装拾遗
  14. SybaseIQ上SQL基本使用
  15. FT_ND_API.dll
  16. OnSen UI结合AngularJs打造”美团"APP"附近”页面 --Hybrid App
  17. [PowerShell Utils] Remotely install Hyper-V and Failover Cluster feature on a list of windows 2012 servers
  18. ios 透过上层视图点击相应下方视图的点击事件
  19. 实现字符串函数,strlen(),strcpy(),strcmp(),strcat()
  20. bzoj 1814: Ural 1519 Formula 1 插头dp经典题

热门文章

  1. Python 入门基本知识
  2. ubuntu 中使用makefile组织c++多文件的简陋方法
  3. Docker深入浅出系列 | 单节点多容器网络通信
  4. 理解numpy中ndarray的内存布局和设计哲学
  5. f(n)=1-1/2+1/3-1/4...+1/n
  6. tf识别非固定长度图片ocr(数字+字母 n位长度可变)- CNN+RNN+CTC
  7. jsp简单实现交互
  8. Codeforces_851
  9. android项目上传github
  10. 2019icpc徐州现场赛 H Yuuki and a problem (树状数组套主席树)