nau*_*boy 2 namespaces redis node.js node-redis
我想使用redis来存储我自己的一些键值对,但是我的一些模块已经使用它了.redis表示会话数据的会话存储,以及socket io的redis适配器.所以我的问题很简单,我如何创建或指定一个数据库/命名空间来存储我自己的密钥而不会发生密钥冲突?我正在使用node-redis驱动程序.
解决方案1:将不同模块的数据存储在不同的Redis实例中
最严格的隔离是将每个模块的数据存储在单个Redis实例中,即单个Redis进程.
解决方案2:将不同模块的数据存储在单个Redis实例的不同数据库中
Redis实例可以有多个数据库,您可以在配置文件中配置数据库的数量.默认情况下,有16个数据库.
这些数据库使用从零开始的数字索引命名.使用select命令,您可以使用第i个数据库.选择后,任何后续命令都将在第i个数据库上运行.
因此,如果为每个模块分配一个独立的数据库,则可以避免名称冲突.
注意:此解决方案无法使用Redis Cluster.Redis Cluster只允许您使用第0个数据库.
解决方案3:使用键前缀创建名称空间
如果所有数据都必须存储在单个数据库中,您仍然可以隐式创建带有键前缀的命名空间.对于每个模块,该模块的所有数据应具有相同的密钥模式:即该模块的每个密钥具有相同的前缀:.ModuleName:KeyNameModuleName
由于每个模块具有不同的名称,因此这些模块之间不会发生任何名称冲突:
// Set keys for module1
SET module1:key1 value
SET module1:key2 value
// Set keys for module2
SET module2:key1 value
SET module2:key2 value
Run Code Online (Sandbox Code Playgroud)
注意:此解决方案也适用Redis Cluster.
| 归档时间: |
|
| 查看次数: |
2589 次 |
| 最近记录: |