如果某些项目使用Redis数据库,您如何管理开发和/或测试机器上的多个项目?
有两个主要问题:
目前,我认为我们有三种选择:
redis-namespace
如果多个项目为主要用途分配“0”而对于测试等分配“1”,则第一个是有问题的。即使项目B决定改为“2”和“3”,项目中的另一名成员也可能在另一个项目中与他发生冲突。换句话说,这种方法不是SCM友好的。
对于第二个,这只是一个坏主意,因为它在运行时性能和内存效率上增加了不必要的开销。无论你做什么,当你加入这个项目时,另一个项目可能已经巧合地使用了相同的密钥。
第三种选择是妥协的产物,但有时我希望在为其他项目部署小补丁时保持本地数据不变。
我知道这可能是Redis的功能请求,但我现在需要一个解决方案。
任何想法,做法?
答案 0 :(得分:15)
如果项目是独立的,因此不需要共享数据,那么使用多个redis实例要好得多 - 每个项目配置都有一个端口号而不是数据库名/ id。为每个创建一个适当命名的配置文件和启动脚本,这样您只需单击一下即可获得所需的任何实例。
确保更新每个配置文件中的保存设置以及设置端口 - 使用相同dump.rdb文件的多个实例将起作用,但会导致一些相当混乱的错误。
我还使用单独的实例进行开发和测试,以便测试实例永远不会将任何内容写入磁盘,并且可以在每次测试开始时刷新。
答案 1 :(得分:0)
Redis正在远离多个数据库,因此我建议您尽快开始迁移该机制。这意味着每个db一个实例。鉴于运行Redis的开销非常低,从资源的角度来看,这不是问题。
也就是说,您可以指定数据库的数量,并提供A命名标准。例如,将redis配置为60 DBS,并为测试数据库添加10。例如,db3使用db13进行测试。
听起来你的开发,测试和产品环境非常紧密。如果是这样,我建议远离那个。使用单独的实例是最简单的方法,并提供针对交叉污染的保护。在这个和未来的redis之间是每个实例的单数据库,单独的实例是最好的路由。