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 | common:sys:sex:1 男 |
这个在使用工具(RedisDesktopManager)去查看的时候就可以看出层级关系了