私のプロジェクトでRedisを使用する方法を学んでいます。頭に浮かばないことの1つは、キーの名前にコロンが正確に使用されていることです。
私はこれらのようなキーの名前を見ました:
users:bob
color:blue
item:bag
コロンはキーをカテゴリに分けて、キーをより速く見つけるのですか?もしそうなら、キーに名前を付けるときに複数のコロンを使用して、それらをサブカテゴリに分類できますか?最後に、Redisサーバー内のさまざまなデータベースの定義と関係がありますか?
私はドキュメントを読み、この件について多数のGoogle検索を実行しましたが、奇妙なことに、これについて議論していることは何も見つかりません。
コロンは、名前空間付きデータを格納するための概念として、以前のredisバージョンにありました。初期のバージョンでは、redisは文字列のみをサポートしていました。メールと「bob」の年齢を保存したい場合は、すべて文字列として保存する必要があったため、コロンを使用していました。
SET user:bob:email [email protected]
SET user:bob:age 31
それらにはno redisの特別な処理またはパフォーマンス特性があり、唯一の目的は、データを名前空間に配置して再度検出することでした。最近では、ハッシュを使用して、コロン付きのキーのほとんどを格納できます。
HSET user:bob email [email protected]
HSET user:bob age 31
ハッシュに「user:bob」という名前を付ける必要はありませんが、「bob」という名前を付けることができますが、ユーザープレフィックスを使用して名前空間を付けることで、このハッシュが持つべき、または持つことができる情報がすぐにわかります。
コロンは、キーを構造化する方法です。それらは決してredisによって解釈されません。他の区切り文字を使用することも、まったく使用しないこともできます。個人的には/
を使用すると、キーがファイルシステムのパスのように見えます。それらはパフォーマンスに影響を与えませんが、redisはすべてのキーをメモリに保持する必要があるため、過度に長くしないでください。
SQLの結合に対するredisの回答であるsortコマンドの機能を活用するには、適切なキー構造が重要です。
GET user:bob:color -> 'blue'
GET user:alice:color -> 'red'
SMEMBERS user:peter:friends -> alice, bob
SORT user:peter:friends BY NOSORT GET user:*:color -> 'blue', 'red'
キー構造により、SORTは構造化キーを参照してユーザーの色を検索できることがわかります。