24.Redis键和值的设计原则

 

Redis键和值的设计原则

1. redis value格式

在Java常规开发中,我们需要有面向对象的思想,相对于对象来说,比较常用且能快速转换的格式就是JSON了;比较常用的Java处理JSON数据有三个比较流行的类库FastJSON、Gson和Jackson

上面提到了JSON,这是因为在Redis的存储中,我们使用它来存储value值,主要是因为json格式有如下几种好处:  

  • 标准,主流数据交换格式
  • 简单,结构清晰,相对于XML来说更加的轻量级,易于解析
  • 语言无关,任何语言都能轻松搞它
  • 类型安全,值是有类型的,比如整数、字符串、布尔等

代码中redis value在存储前我们对其做了一次转换,将对象value转换为json对象后存储,也就是一个key对应一个json串

2. redis key格式

在实际业务中,往往key键的存储会非常的复杂。

比如我们现在有一个需求:根据基础数据系统中的数据字典类型查询对应的字典集合。

这时,我们需要关注的业务就变得复杂了,就不能使用常规的key键存储方式,上面的需求大致可以拆分为:  

  • 系统:基础数据系统 user:sex:1=男 user:sex:0= 女
  • 模块:数据字典 sys:available:1=true sys:available:0=false
  • 方法:根据数据字典类型查询
  • 参数:字典类型

为什么要这样拆分呢?为了可读性;也为了抽象出key存储规则;因为业务复杂情况下,我们定义的key键太多时就不便于管理,也不便于查找,以系统-模块-方法-参数这样的规则定义,我们可以很清晰的了解redis key存储的值是做了什么事情

1
2
3
4
5
6
7
8
9
common:sys:sex:1 男
common:sys:sex:0 女
common:sys:flag:1 是
common:sys:flag:0 否

common:page:title Welcome to System

user:1 {id:1.name:Tim}
user:2 {id:2.name:Tom}

这个在使用工具(RedisDesktopManager)去查看的时候就可以看出层级关系了