Redisシリーズ2:Redisがサポートするデータ型と使用方法(2)

5652 ワード

四、sorted setタイプ
sorted set(整列集合)とset(無秩序集合)は、Stringタイプ要素の集合です.
127.0.0.1:6379> zadd sorted_set_key 1 a #    a,           
(integer) 1
127.0.0.1:6379> 
127.0.0.1:6379> zadd sorted_set_key 2 b
(integer) 1
127.0.0.1:6379> zadd sorted_set_key 3 c
(integer) 1
127.0.0.1:6379> zrange sorted_set_key 0 2 #             
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> zadd sorted_set_key 1 aa
(integer) 1
127.0.0.1:6379> zrange sorted_set_key 0 2
1) "a"
2) "aa"
3) "b"
127.0.0.1:6379> zrem sorted_set_key aa #          aa
(integer) 1
127.0.0.1:6379> zrange sorted_set_key 0 2
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> zrem sorted_set_key b
(integer) 1
127.0.0.1:6379> zrange sorted_set_key 0 2
1) "a"
2) "c"
127.0.0.1:6379> 

その他のコマンド
zincrby key incr member:対応するmemberのscore値を増やし、並べ替えて更新後のscore値を返します.
zrank key member:keyという名前のzsetのmember要素の順位(scoreで小さいものから大きいものまで)を返すと下付きになります.
zrevrank key member:keyという名前のzsetのmember要素の順位(scoreで大きいから小さい順)を返すと下付きになります.
zrevrange key member:keyという名前のzset(scoreで大きいから小さいまでソート)のindexのstartからendまでのすべての要素を返します.
zrangebyscore key min max:指定した区間におけるscoreの要素を返す
zcount key min max:所定の区間におけるscoreの数を返す
zcard key:コレクション内の要素の数を返します.
zscore key element:指定された要素に対応するscoreを返します.
zremrangebyrank key min max:セット内の所定の区間にランクされた要素を削除する
zremrangebyscore key min max:セット内のscoreの所定の区間の要素を削除する
 
五、Hashタイプ
Hashタイプは,各keyが1つのHashTableに対応し,追加,削除,修正の時間的複雑さはO(1)である.Hashタイプは、ユーザ情報を記憶するなど、オブジェクトを記憶するのに適しており、ユーザIDをKeyとして、Hashタイプにユーザ情報を保存することができる.
新しいHashタイプのオブジェクトを作成する場合、メモリを節約するために、Redisはzipmapを使用してデータを格納します.このzipmapは実際にはhash tableではありませんが、zipmapは通常のhash実装よりもhash自体に必要なメタデータストレージのオーバーヘッドを節約することができます.zipmapの追加、削除、検索はすべてO(n)ですが、一般的なオブジェクトのfield数はあまり多くありません.だからzipmapを使うのも速いです.つまり、追加削除平均はO(1)です.フィールドまたはvalueの大きさが一定の制限を超えると、Redisは内部でzipmapを正常なhashに自動的に置き換える実現する.この制限は、hash-max-zipmap-entries 64(設定フィールドは最大64個)とhash-max-zipmap-value 512(valueは最大512バイト)をプロファイルに指定できます.
127.0.0.1:6379> hset hash_key name lili #  hashfield    ,  key   ,    
(integer) 1
127.0.0.1:6379> hset hash_key age 11
(integer) 1
127.0.0.1:6379> hset hash_key sex " "
(integer) 1
127.0.0.1:6379> hget hash_key name #     hash field
"lili"
127.0.0.1:6379> hkeys hash_key #  hash   field
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379> hvals hash_key #  hash   value
1) "lili"
2) "11"
3) "\xe5\xa5\xb3"
127.0.0.1:6379> hexists hash_key name #    field    
(integer) 1
127.0.0.1:6379> hexists hash_key name2
(integer) 0
127.0.0.1:6379>

その他のコマンド
hmset key field1 ... fieldN:hashの複数のfieldを同時に設定します.
hmget key field1 ... fieldN:指定したhash filedをすべて取得
hincrby key field integer:指定したhash filedに所定の値integerを加算します.
hlen key:指定したhashのfield数を返します.
hdel key field:指定したhashのfield数を返します.
hgetall key:hashのすべてのfiledとvalueを取得します.
Redisシリーズ一:初認識Redis
Redisシリーズ2:Redisがサポートするデータ型と使用方法(一)
Redisシリーズ2:Redisがサポートするデータ型と使用方法(2)