如何在redis上命名空间键以避免名称冲突?
我想使用redis来存储一些我自己的键值对,但是我的一些模块已经使用它。 会话数据的redis快速会话存储,以及套接字io的redis适配器。 所以我的问题很简单,我怎么能创build或指定一个数据库/命名空间来存储我自己的密钥没有关键的冲突? 我正在使用node-redis驱动程序。
解决scheme1:将不同模块的数据存储在不同的Redis实例中
最严格的隔离是将每个模块的数据存储在单独的Redis实例中,即单独的Redis进程。
解决scheme2:将不同模块的数据存储在单个Redis实例的不同数据库中
Redis实例可以有多个数据库,您可以在configuration文件中configuration数据库的数量。 默认情况下,有16个数据库。
这些数据库使用基于零的数字索引进行命名。 使用select命令 ,可以使用第i个数据库。 select后,任何后续命令将在第i个数据库上运行。
所以,如果你为每个模块分配一个独立的数据库,你可以避免名称冲突。
解决scheme3:使用键前缀创build名称空间
如果您的所有数据都必须存储在单个数据库中,则仍然可以隐式地创build一个包含键前缀的名称空间 。 对于每个模块,该模块的所有数据都应该具有相同的密钥模式: ModuleName:KeyName
,即该模块的每个密钥具有相同的前缀: ModuleName
。
由于每个模块具有不同的名称,所以这些模块之间不会有任何名称冲突。