原則 | 説明 |
簡潔性 | セマンティクスを保証する前提で、Keyの長さを適宜短縮できます。Keyが多い場合、Keyが占有するメモリ領域も無視できません。 |
命名規則 | 英文字で始め、命名には大文字と小文字の英字、数字、縦線、アンダースコア、英文ドット( .)および英文半角コロン(:)のみを使用できます。 |
意味的分割 | 異なる業務ロジックの意味は英文半角コロン( :)で区切り、同一業務ロジック意味セグメント内の単語間は英文半角ドット(.)で区切って、完全な意味を表します。 |
可読性 | Key名は、Keyが表すValueの型で終わるようにして、可読性を高めます。例えば、 user:basic.info:userid:string。 |
長さ制限 | Key名が大きすぎると一定のメモリ領域を占有します。128バイト以内に制御することをお勧めします。 |
特殊文字の使用を禁止します。 | \\、*、?、{}、[]、()、スペース、単一引用符と二重引用符、エスケープ文字などの使用は禁止です。そうでない場合、Keyを検索できないか、検索に失敗する可能性があります。 |
例 | 説明 |
cx:cxdb:user:000110011 | 簡潔で意味が明確であり、コロンを使用して階層化します。 |
user:basic.info:userid:string | 同一意味セグメントはドットで区切り、Value 型で終了します。 |
例 | 問題 |
cx:cxdb:cxdb_user_info:000110011 | テーブル名にデータベース名「cxdb」が重複して含まれており、冗長であり、Keyの長さが増加します。 |
set user 000110011 | Keyにスペースが含まれており、使用が禁止されている特殊文字です。 |
# Keyを書き込みます。> set cx:cxdb:user:000110011 xiaoming# Keyの有効期限を1時間後に設定します。> expire cx:cxdb:user:000110011 3600
> object idletime cx:cxdb:user:000110011(integer) 150039 # このKeyが150039秒間アクセスされていないことを示します。
データ構造タイプ | 大Key判定条件 | 問題説明 |
String | 値が10MBを超えています。 | データ値が大きすぎます。 |
Set | メンバー数が10000個を超えています。 | メンバー数が多いです。 |
List | メンバー数が10000個を超えています。 | メンバー数が多いです。 |
Hash | メンバー数が1000個を超え、かつメンバー全体のValue値サイズが1000MBです。 | メンバー全体のサイズが大きすぎます。 |
基準 | 説明 |
Value のサイズを制御してください。 | String型は10KB以内に制御します。Hash、List、Set、Zsetの要素数は5000を超えないようにします。 |
大規模なKeyの直接削除は避けてください。 | 必須でない限り、delを使用して大規模なKeyを削除しないでください。 |
段階的な削除 | 非文字列の大規模なKeyについては、hscan、sscan、zscanを使用して段階的に削除することをお勧めします。 |
期限切れによる自動削除に注意してください。 | 大規模なKeyの有効期限切れによる自動削除問題を防止します。例えば、200万件のZsetに1時間の有効期限を設定すると、del操作がトリガーされ、ブロッキングが発生します。 |
データ構造タイプ | 適用シナリオ | 説明 |
文字列(String) | シンプルな文字列データ。例えば、設定情報、カウンターなどです。 | バイナリデータを保存する必要がある場合は、バイナリセーフな文字列型を使用できます。 |
ハッシュテーブル(Hash) | 複数のフィールドと値のデータ。例えば、ユーザー情報、商品情報などです。 | メモリ容量を節約でき、一括操作が容易になります。 |
リスト(List) | 順序付きの要素コレクション。例えば、メッセージキュー、タスクリストなどです。 | 両端での挿入および削除操作をサポートします。 |
セット(Set) | 順序なしの要素コレクション。例えば、タグリスト、友達リストなどです。 | 和集合、積集合、差集合などの操作をサポートします。 |
ソート済みセット(Sorted Set) | 順序付きの要素コレクション。例えば、ランキング、投票リストなどです。 | スコアに基づいてソートし、範囲クエリをサポートします。 |
シーン | 推奨事項 |
データ量が小さく、頻繁な走査が必要な場合 | ziplistの使用が適しており、メモリ使用効率が高くなります。 |
データ量が大きく、頻繁な挿入、削除、検索が必要な場合 | ziplistの使用は推奨されません。他のデータ構造の使用を検討してください。 |
set user:1:name tomset user:1:age 19set user:1:favor football
Operating System: Ubuntu 24.04.3 LTS / x86_64
Runtime Version: GNU bash, version 5.2.21(1)-release (x86_64-pc-linux-gnu)
hmset user:1 name tom age 19 favor football
フィードバック