两个应用共享一个 Redis。如何防止缓存冲突?
Two apps share one Redis. How to prevent cache collisions?
应用程序的两个不同版本(调试和发布)共享同一个 Redis 实例。
Debug 和 Release 都具有相同的源代码,因此存储在 Redis 中的缓存密钥相同。
因此,当 Debug redis.StringSet(key1, value1)
Release 可以很容易地覆盖 key1
或读取不正确的值(因为它应该有自己的 key1
)。
有没有办法避免这种干扰?
不要这样做 - 共享是不好的。每个环境旋转一个 Redis 实例,每个服务器的开销可以忽略不计。
在同一个Redis 实例中使用两个数据库。
SELECT 指令允许您选择要使用的实例。
数据库的编号可以通过环境变量提供给您的应用程序,因此应用程序的代码对于两个应用程序实例保持不变。
另一种方法是为您的密钥提供通用的命名模式(前缀),并在 属性 文件中配置前缀。
您可以轻松地在不同的环境中使用不同的 属性 文件。
应用程序的两个不同版本(调试和发布)共享同一个 Redis 实例。 Debug 和 Release 都具有相同的源代码,因此存储在 Redis 中的缓存密钥相同。
因此,当 Debug redis.StringSet(key1, value1)
Release 可以很容易地覆盖 key1
或读取不正确的值(因为它应该有自己的 key1
)。
有没有办法避免这种干扰?
不要这样做 - 共享是不好的。每个环境旋转一个 Redis 实例,每个服务器的开销可以忽略不计。
在同一个Redis 实例中使用两个数据库。 SELECT 指令允许您选择要使用的实例。 数据库的编号可以通过环境变量提供给您的应用程序,因此应用程序的代码对于两个应用程序实例保持不变。
另一种方法是为您的密钥提供通用的命名模式(前缀),并在 属性 文件中配置前缀。
您可以轻松地在不同的环境中使用不同的 属性 文件。