具有多个项目的开发机器上的Redis数据库

ken*_*enn 11 redis

当一些项目使用Redis数据库时,如何管理开发和/或测试机器上的多个项目?

有两个主要问题:

  1. Redis没有命名数据库(仅限0-16)
  2. 测试可能会在每次运行时执行FLUSHDB

现在,我认为我们有三种选择:

  1. 为每个项目,每个开发和测试环境分配不同的数据库
  2. 带有项目名称的前缀键使用类似的东西 redis-namespace
  3. 只要在项目之间切换,就可以对数据库进行Nuke和种子化

如果多个项目为主要用途分配"0"而对于测试等分配"1"则第一个是有问题的.即使项目B决定改为"2"和"3",项目中的另一名成员也可能在另一个项目中与他发生冲突.换句话说,这种方法不是SCM友好的.

对于第二个,这只是一个坏主意,因为它在运行时性能和内存效率上增加了不必要的开销.无论你做什么,当你加入这个项目时,另一个项目可能已经巧合地使用了相同的密钥.

第三种选择是妥协的产物,但有时我希望在为其他项目部署小补丁时保持本地数据不变.

我知道这可能是Redis的功能请求,但我现在需要一个解决方案.

任何想法,做法?

Tom*_*son 15

如果项目是独立的,因此不需要共享数据,那么使用多个redis实例要好得多 - 每个项目配置都有一个端口号而不是数据库名/ id.为每个创建一个适当命名的配置文件和启动脚本,这样您只需单击一下即可获得所需的任何实例.

确保更新每个配置文件中的保存设置以及设置端口 - 使用相同dump.rdb文件的多个实例将起作用,但会导致一些相当混乱的错误.

我还使用单独的实例进行开发和测试,以便测试实例永远不会将任何内容写入磁盘,并且可以在每次测试开始时刷新.