redis是键值型数据库,key是唯一的,一般使用id作为唯一标识,那么就会出现一个问题:redis没有类似mysql中的表概念,该如何区分不同类型的key呢?
问题举例
!!#ff0000 问题:!!需要存储用户和商品信息到redis,有一个用户id为1,有1个商品id也是1
key的结构
redis的key允许有多个单词形成层级结构,多个单词之间用:
隔开,格式如下:
项目名:业务名:类型:id
这个格式并非固定,需要根据自己的需求来设计key
例如我们的项目名称叫zss
,有user和goods两种不同类型的数据,我们可以这样定义key:
- user相关的key:
zss:user:1
- goods相关的key:
zss:goods:1
如果value是一个java对象,例如一个User对象,则可以把对象序列化为JSON格式的字符串后存储:
key | value |
---|---|
zss:user:1 | {“id”:1,“name”:“张三”,“age”:18} |
zss:goods:1 | {“id”:1,“name”:“金属防风打火机”,“price”:9.9} |
把user和goods信息存储到redis中测试: |
set zss:user:1 '{"id":1,"name":"张三","age":18}'
set zss:user:2 '{"id":2,"name":"李四","age":16}'
set zss:goods:1 '{"id":1,"name":"金属防风打火机","price":9.9}'
set zss:goods:2 '{"id":2,"name":"500ml高纯度丁烷气体,打火机充气瓶","price":8.9}'