Redisのデータ型
Redis は、string (文字列)、hash (ハッシュ)、list (リスト)、set (セット)、zset (sorted set: 順序付きセット) の 5 つのデータ型をサポートします。
String (string)
string は、Redis の最も基本的な型であり、1 つのキーが 1 つの値に対応するものと理解できます。
文字列型はバイナリセーフです。これは、redis 文字列には任意のデータを含めることができることを意味します。たとえば、jpg画像やシリアル化されたオブジェクトなど 。
文字列型は Redis の最も基本的なデータ型で、キーは最大 512MB を保存できます。
例
redis 127.0.0.1:6379> SET name "w3cschool.cc" OK redis 127.0.0.1:6379> GET name "w3cschool.cc"
上記の例では、Redis の SET および GET コマンドを使用しました。キーは名前で、対応する値は w3cschool.cc です。
注: 1つのキーには最大512MBを保存できます。
Hash (ハッシュ)
Redis ハッシュは、キーと値のペアのコレクションです。
Redis ハッシュは、文字列型のフィールドと値のマッピング テーブルであり、オブジェクトの保存に特に適しています。
例
redis 127.0.0.1:6379> HMSET user:1 username w3cschool.cc password w3cschool.cc points 200 OK redis 127.0.0.1:6379> HGETALL user:1 1) "username" 2) "w3cschool.cc" 3) "password" 4) "w3cschool.cc" 5) "points" 6) "200" redis 127.0.0.1:6379>
上記の例では、ハッシュ データ型は、ユーザー スクリプト情報を含むユーザー オブジェクトを格納します。 この例では、Redis HMSET、HGETALL コマンドを使用しており、user:1 がキー値です。
各ハッシュには 232 - 1 のキーと値のペア (40 億以上) を保存できます。List (リスト)
Redis リストは、挿入順に並べ替えられた文字列の単純なリストです。リストの先頭 (左) または末尾 (右) に要素を追加できます。
インスタンス
redis 127.0.0.1:6379> lpush w3cschool.cc redis (integer) 1 redis 127.0.0.1:6379> lpush w3cschool.cc mongodb (integer) 2 redis 127.0.0.1:6379> lpush w3cschool.cc rabitmq (integer) 3 redis 127.0.0.1:6379> lrange w3cschool.cc 0 10 1) "rabitmq" 2) "mongodb" 3) "redis" redis 127.0.0.1:6379>
リストには、最大 232 - 1 の要素を保存できます (4294967295、各リストは 40 億以上を保存できます)。
Set (セット)
Redis の Set は、文字列型の順序付けされていないコレクションです。
セットはハッシュ テーブルを通じて実装されるため、追加、削除、検索の複雑さは O(1) です。
sadd コマンド
は、キーに対応するセットに文字列要素を追加します。要素がセット内にあり、0 を返す場合は、キーに対応するセットが存在しないため、エラーが返されます。
sadd key member
例
redis 127.0.0.1:6379> sadd w3cschool.cc redis (integer) 1 redis 127.0.0.1:6379> sadd w3cschool.cc mongodb (integer) 1 redis 127.0.0.1:6379> sadd w3cschool.cc rabitmq (integer) 1 redis 127.0.0.1:6379> sadd w3cschool.cc rabitmq (integer) 0 redis 127.0.0.1:6379> smembers w3cschool.cc 1) "rabitmq" 2) "mongodb" 3) "redis"
注: 上記の例では rabitmq が 2 回追加されていますが、コレクション内の要素の一意性に基づいて、2 番目に挿入された要素は無視されます。
コレクション内のメンバーの最大数は 232 - 1 (4294967295、各コレクションには 40 億を超えるメンバーを保存できます) です。
zset (sorted set:順序付きセット)
Redis zset も set と同様に文字列型要素のコレクションであり、重複したメンバーは許可されません。違いは、各要素が double 型のスコアに関連付けられていることです。 Redis はスコアを使用して、コレクションのメンバーを小さいものから大きいものまで並べ替えます。
zsetのメンバーは個性的ですが、スコアは繰り返すことができます。
zadd コマンド
は、要素がコレクションに存在する場合、対応するスコア
zadd key score member
インスタンス
redis 127.0.0.1:6379> zadd w3cschool.cc 0 redis (integer) 1 redis 127.0.0.1:6379> zadd w3cschool.cc 0 mongodb (integer) 1 redis 127.0.0.1:6379> zadd w3cschool.cc 0 rabitmq (integer) 1 redis 127.0.0.1:6379> zadd w3cschool.cc 0 rabitmq (integer) 0 redis 127.0.0.1:6379> ZRANGEBYSCORE w3cschool.cc 0 1000 1) "redis" 2) "mongodb" 3) "rabitmq"