redis に名前空間を追加するための 2 つの一般的な gem: redis-namespaceとNestがあります。異なるプロジェクトで redis の同じインスタンス サーバーを使用するときに名前空間が必要であることを本当に理解している場合、私が正しければ、これは次のことを意味します: 1 と project-2 であり、これらの各プロジェクトはローカルの redis ストレージを使用します。おそらく 2 つのプロジェクトには、アプリのユーザーを表すユーザーキーがあるため、競合を防ぐために、プロジェクトの名前などでユーザー キーの名前を付ける必要があります。 :
project-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'
2 番目のプロジェクト (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 の正確な違いは何ですか?