40

Redisで名前空間を作成することは可能ですか?

私が見つけたものから、すべてのグローバルコマンド(count、delete all)はすべてのオブジェクトに対して機能します。これらのコマンドがコンテキスト内で制限されるようにサブスペースを作成する方法はありますか?

この目的のために異なるRedisサーバーをセットアップしたくはありません。

私は答えが「いいえ」であると思います、そしてそれがあまりに多くのオーバーヘッドなしで役に立つ機能であるように思われるので、なぜこれが実行されなかったか疑問に思います。

2 답변


32

Redisサーバーは、番号が付けられた複数のデータベースを処理できます。私はそれがデフォルトでそれらの32を提供すると思います。あなたが使用してそれらにアクセスすることができます-nへのオプションRedisの-CLIシェルスクリプトコマンドと、接続引数と同様のオプション、または"select()"その接続オブジェクトのメソッド。 (この場合.select()Python Redisモジュールのメソッド名です。他のライブラリやインタフェースと同じように名前が付けられていると思います。

Redisサーバーデーモンの設定ファイルにいくつの別々のデータベースが必要かを制御するオプションもあります。上限がどうなるかわかりませんし、それを動的に変更する方法はないようです(言い換えれば、追加のDBを追加するにはサーバーをシャットダウンして再起動する必要があるようです)。また、これらのDB番号を何らかの種類の名前と関連付けたり、別々のACLSや異なるパスワードを課したりすることもありません。もちろん、Redisもスキーマがありません。


  • ネームスペースはデータベースではなく、データベースは番号(0〜15)で示されます。名前空間は接頭辞を追加するために使用されます - kalelc
  • @kalelc:「名前空間」という用語からRedisのドキュメントでは定義されていませんが、ここでの用語の使用は私のものよりも標準的なものであるとは思いません。それぞれの「データベース」を明確にしました。特定のRedisサーバーでは、独立した "名前空間"です。 (同じキーが衝突することはありません)。明らかにあなたは任意の接頭辞を作成して"名前空間"として扱うことができます。 ---しかしこれはRedisで特別にサポートされている機能ではありません。それはそれを使用するための単なる慣例です。 - Jim Dennis
  • 明確にしてくれたJimに感謝します。RailsのRedisで名前空間を見つけたとき、時々混乱します。 - kalelc
  • @JimDennis - 何らかの理由で別のデータベース内の同じ名前の名前空間が何らかの理由で衝突している(ruby gemを使用)。それはもちろん変です。何か新しいものが見つかったかどうかわかります。 - Sachin
  • 私の悪い私はカスタムを使用していました$redis変数とそれを新しく渡すことRedis.new引数(もちろんRailsの設定は考慮していません) - Sachin

1

あなたがRubyを使っているなら、あなたはこれらの宝石を見ることができます:

https://github.com/resque/redis-namespace

https://github.com/jodosha/redis-store


  • 私はそうではありませんが、彼らが技術的にどのように機能することができるか理解していません。私はサーバーAPIはそれらをサポートしていないと思いました。 - ripper234
  • これらは、Redisアクセスオブジェクト/ハンドルの周りにほとんど透明なラッパーを提供するための単なる方法です。これらを使用すると、コードで使用するすべてのキー名の前に" namespace"が付きます。 "名前空間"内のあらゆる種類のオブジェクトへの参照中に接頭辞を付けます。あなたがサーバー側でこれらの分離がないと推測したように、それらは単に慣例として、おそらく内部標準さえ存在します。 - Jim Dennis
  • それはの一番上にあなたに伝えますredis-namespaceライブラリ、これは貧乏人の名前空間です。すべての頭に「ns:*」を付けるだけです。 - Mirek Rusin

リンクされた質問


関連する質問

最近の質問