最近在开发一个通过配置组合功能的项目,这些配置数据可以遇见会被频繁访问,所以想在mysql上面加一层redis把这些数量不是非常大的配置做缓存,并在增删改的时候把数据从mysql更新后再从redis中更新,但是表和表之间有关联关系。
问:
这些关系应该怎么保存?如何方便的通过条件从redis中查询到多个表的数据?
1、统一表名。关系型数据库中的表名经常会用到下划线分割,用作hash键的时候显得不够简洁,比如一张表叫tm_user,转换成hash键的时候就叫user就可以了。
2、统一主键。要求所有表中的自增主键完全一致,“完全”包括名称和数据类型,比如user这张表,主键就叫id,而不能是user_id。
3、设计主键。还是以上面的user举例,user一般称为hash键,而这张的id称为范围键(range key),主键按照"hash:range"的形势构造,key="user:1"表示存放的是mysql中user这张表的id为1的用户行数据。假设你的Nosql需要对应mysql多库,将库名也放进hashkey中,比如"crm:user:1"这样
4、设计value格式。这里推荐用json格式。Nosql中数据类型和关系型数据库不一样,没有那么多复杂的类型。key永远是string类型,而value的类型分两种:
基础类型:string和number类型;
保留字:true、false、null
具体可以参考json的数据规范ecma-404文档。
5、举例,假设你的user表只要两个字段,id和name,最后格式就是这样:
"user:1"="{"id":1,"name":"理论"}"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。