【发布时间】:2017-04-01 10:47:07
【问题描述】:
应用程序的两个不同版本(调试和发布)共享同一个 Redis 实例。 Debug 和 Release 都有相同的源代码,因此存储在 Redis 中的缓存键也相同。
因此,当 Debug 执行 redis.StringSet(key1, value1) 时,Release 很容易覆盖 key1 或读取不正确的值(因为它应该有自己的 key1)。
有没有办法避免这种干扰?
【问题讨论】:
应用程序的两个不同版本(调试和发布)共享同一个 Redis 实例。 Debug 和 Release 都有相同的源代码,因此存储在 Redis 中的缓存键也相同。
因此,当 Debug 执行 redis.StringSet(key1, value1) 时,Release 很容易覆盖 key1 或读取不正确的值(因为它应该有自己的 key1)。
有没有办法避免这种干扰?
【问题讨论】:
不要这样做 - 共享是不好的。为每个环境旋转一个 Redis 实例,每个服务器的开销可以忽略不计。
【讨论】:
在同一个 Redis 实例中使用两个数据库。 SELECT 指令允许您选择要使用的实例。 数据库的编号可以通过环境变量提供给您的应用程序,因此两个应用程序实例的应用程序代码保持相同。
【讨论】:
另一种方法是给你的键一个通用的命名模式(前缀),并在属性文件中配置前缀。
您可以在不同的环境中轻松使用不同的属性文件。
【讨论】: