有两个流行的 gem 可以将命名空间添加到 redis:redis-namespace和Nest,如果我真的理解当我们将相同的 redis 实例服务器与不同的项目一起使用时我们需要命名空间,如果我是对的,这意味着:如果我有项目- 1和project-2以及这些项目中的每一个都使用我的本地redis存储,那么也许这两个项目有一个代表我的应用程序用户的用户密钥,所以为了防止冲突我需要使用类似项目名称的名称命名用户密钥:
对于项目 1:
project-1:users
对于项目 1
project-2:users
如果我上面的理解没有错,我们可以redis-namespace gem
这样解决:
r = Redis::Namespace.new(:project-1, :redis => @r)
r['users']['joe']['email'] = 'joe@example.com'
而对于第二个项目(project-2),只需在实例化新的 Redis::Namespace 时将 project-1 更改为 project-2 :
r = Redis::Namespace.new(:project-2, :redis => @r)
r['users']['joe']['email'] = 'joe@example.com'
请告诉我,如果我在上述所有这些解释中没有错!
我们现在可以继续 Nest :
从文档中我们有这个例子:
Nest 通过提供已连接到 Redis 的可链接命名空间来帮助您生成密钥:
>> event = Nest.new("event")
>> event[3][:attendees].sadd("Albert")
>> event[3][:attendees].smembers
=> ["Albert"]
但在这里我不确定 Nest 是否帮助我们做与 redis-namespace 相同的事情,或者帮助我们生成一个可链接的键???
redis-namespace 和 Nest 之间到底有什么区别?