Существует две популярные жемчужины для добавления пространства имен в Redis: redis-namespace и Nest, если я действительно понимаю, что нам нужно пространство имен, когда мы используем один и тот же экземпляр сервера Redis с разными проектами. , если я прав, это означает: если у меня есть проект-1 и проект-2, и каждый из этих проектов использует мое локальное хранилище Redis, то, возможно, у двух проектов есть ключ users, который представляет пользователей мое приложение, поэтому для предотвращения конфликта мне нужно пространство имен users key с чем-то вроде имени проекта:
для проекта-1:
project-1:users
для проекта-1
project-2:users
если мое понимание выше верно, мы можем использовать redis-namespace gem
, чтобы решить это следующим образом:
r = Redis::Namespace.new(:project-1, :redis => @r)
r['users']['joe']['email'] = '[email protected]'
а для второго проекта (проект-2) просто нужно изменить проект-1 на проект-2 при создании экземпляра нового Redis::Namespace :
r = Redis::Namespace.new(:project-2, :redis => @r)
r['users']['joe']['email'] = '[email protected]'
пожалуйста, скажите мне, не ошибаюсь ли я во всем вышеприведенном объяснении!
теперь мы можем продолжить работу с Nest:
из документации у нас есть этот пример:
Nest помогает вам генерировать ключи, предоставляя цепные пространства имен, которые уже подключены к Redis:
>> event = Nest.new("event")
>> event[3][:attendees].sadd("Albert")
>> event[3][:attendees].smembers
=> ["Albert"]
но здесь я не уверен, поможет ли Nest сделать то же самое, что и redis-namespace, или поможет нам просто сгенерировать ключи с возможностью цепочки ???
в чем именно разница между redis-namespace и Nest?