我想使用redis来存储一些我自己的键值对,但是我的一些模块已经在使用它了。用于会话数据的redis express会话存储器,以及用于套接字io的redis适配器。所以我的问题很简单,我如何创建或指定一个数据库/名称空间来存储我自己的键,而不会发生键冲突?我正在使用node-redis驱动程序。
发布于 2016-08-29 00:12:25
Redis解决方案1:将不同模块的数据存放在不同的实例中
最严格的隔离是将每个模块的数据存储在单独的Redis实例中,即单独的Redis进程。
Redis方案二:将不同模块的数据存放在单个实例的不同数据库中
一个Redis实例可以有多个数据库,您可以在配置文件中配置数据库的数量。默认情况下,有16个数据库。
这些数据库使用从零开始的数字索引命名。通过select command,您可以使用第i个数据库。选择后,任何后续命令都将在第i个数据库上操作。
因此,如果您为每个模块分配一个独立的数据库,则可以避免名称冲突。
注释:此解决方案不适用于Redis Cluster。Redis Cluster只允许您使用第0个数据库。
解决方案3:使用键前缀创建命名空间
如果您所有数据都必须存储在单个数据库中,您仍然可以隐式创建一个带有键前缀的名称空间。对于每个模块,此模块的所有数据都应具有相同的键模式:ModuleName:KeyName,即此模块的每个键具有相同的前缀:ModuleName。
由于每个模块都有不同的名称,因此这些模块之间不会有任何名称冲突:
// Set keys for module1
SET module1:key1 value
SET module1:key2 value
// Set keys for module2
SET module2:key1 value
SET module2:key2 value备注:此解决方案也适用于Redis Cluster。
https://stackoverflow.com/questions/39192469
复制相似问题