如何在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

由于每个模块具有不同的名称,所以这些模块之间不会有任何名称冲突。