Redisのデータ型の詳細
8900 ワード
文字列タイプ
文字列タイプと言いますが、中には数字もあります.
127.0.0.1:6379> set name tom
OK
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> type name
string
string
127.0.0.1:6379> append name qq
(integer) 5
127.0.0.1:6379> get name
"tomqq"
127.0.0.1:6379> mset name jerry age 2 addr hebei
OK
127.0.0.1:6379> mget name age addr
1) "jerry"
2) "2"
3) "hebei"
127.0.0.1:6379> strlen name
(integer) 5
127.0.0.1:6379> strlen age
(integer) 1
127.0.0.1:6379> set age 10
OK
127.0.0.1:6379> type age
string
127.0.0.1:6379> incr age
(integer) 11
127.0.0.1:6379> decr age
(integer) 10
127.0.0.1:6379> incrby age 3
(integer) 13
127.0.0.1:6379> decrby age 3
(integer) 10
ハッシュ・タイプ
127.0.0.1:6379> hset userinfo name cx
(integer) 1
127.0.0.1:6379> hset userinfo age 20
(integer) 1
127.0.0.1:6379> hset userinfo addr beijing
(integer) 1
127.0.0.1:6379> type userinfo
hash
127.0.0.1:6379> hget userinfo age
"20"
127.0.0.1:6379> hgetall userinfo
1) "name"
2) "cx"
3) "age"
4) "20"
5) "addr"
6) "beijing"
127.0.0.1:6379> hmget userinfo name age
1) "cx"
2) "20"
keys *
を使用してすべてのデータオブジェクトを表示し、delコマンドを使用してキー値ペア127.0.0.1:6379> keys *
1) "name"
2) "userinfo"
127.0.0.1:6379> del name
注意:delは削除するデータオブジェクトであり、例えば
del userinfo
コマンドを実行するとuserinfoハッシュテーブル全体が削除され、ハッシュテーブルのキー値ペアを削除するにはhdel userinfo name
が必要である.リストの種類
127.0.0.1:6379> lpush citylist beijing shanghai guangzhou
(integer) 3
127.0.0.1:6379> lrange citylist 0 2
1) "guangzhou"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> rpush citylist shenyang
(integer) 4
127.0.0.1:6379> lrange citylist 0 5
1) "guangzhou"
2) "shanghai"
3) "beijing"
4) "shenyang"
127.0.0.1:6379> rpop citylist
"shenyang"
127.0.0.1:6379> lrange citylist 0 5
1) "guangzhou"
2) "shanghai"
3) "beijing"
127.0.0.1:6379> llen citylist
(integer) 3
127.0.0.1:6379> lpush list1 qq baidu taobao sina qq baidu qq taobao qq
(integer) 9
127.0.0.1:6379> lrange list1 0 10
1) "qq"
2) "taobao"
3) "qq"
4) "baidu"
5) "qq"
6) "sina"
7) "taobao"
8) "baidu"
9) "qq"
127.0.0.1:6379> lrem list1 2 qq >>> qq
(integer) 2
127.0.0.1:6379> lrange list1 0 10
1) "taobao"
2) "baidu"
3) "qq"
4) "sina"
5) "taobao"
6) "baidu"
7) "qq"
127.0.0.1:6379> lrem list1 -1 baidu >>> baidu
(integer) 1
127.0.0.1:6379> lrange list1 0 10
1) "taobao"
2) "baidu"
3) "qq"
4) "sina"
5) "taobao"
6) "qq"
127.0.0.1:6379> lrem list1 0 taobao >>> taobao
(integer) 2
127.0.0.1:6379> lrange list1 0 10
1) "baidu"
2) "qq"
3) "sina"
4) "qq"
lsetは、下付きの値を変更できます.例えば、下付きの値を360に変更します.
127.0.0.1:6379> lset list1 1 360
OK
127.0.0.1:6379> lrange list1 0 10
1) "baidu"
2) "360"
3) "sina"
4) "qq"
127.0.0.1:6379> linsert list1 after 360 cx
(integer) 5
127.0.0.1:6379> lrange list1 0 10
1) "baidu"
2) "360"
3) "cx"
4) "sina"
5) "qq"
127.0.0.1:6379> lpush list2 q1
(integer) 1
127.0.0.1:6379> lpush list2 q2
(integer) 2
127.0.0.1:6379> lpush list2 q3
(integer) 3
127.0.0.1:6379> lpush list2 q4
(integer) 4
127.0.0.1:6379> lpush list2 q5
(integer) 5
127.0.0.1:6379> lrange list2 0 10
1) "q5"
2) "q4"
3) "q3"
4) "q2"
5) "q1"
127.0.0.1:6379> rpop list2
"q1"
127.0.0.1:6379> rpop list2
"q2"
127.0.0.1:6379> rpop list2
"q3"
127.0.0.1:6379> rpop list2
"q4"
127.0.0.1:6379> rpop list2
"q5"
これは実際には生産者-消費者モデル、いわゆるメッセージキューです.通常、メッセージキューは受注、ユーザー登録シーンで使用されます.たとえば、ユーザーが受注を発行した場合、この受注はまずメッセージキューに保存されます.この場合、データベースが書き込まれていないとダウンタイムになります.問題ありません.起動後、メッセージキューを読み込むことで、実行を続行できます.
集合タイプ(set)
集合には,交差,並列などの概念がある.saddはコレクションを作成できます.ここでは3つの要素を追加します.
127.0.0.1:6379> sadd myset qq
(integer) 1
127.0.0.1:6379> sadd myset baidu
(integer) 1
127.0.0.1:6379> sadd myset sina
smembersはコレクション内のすべての要素を取得できます
127.0.0.1:6379> smembers myset
1) "baidu"
2) "qq"
3) "sina"
Sismemberは、要素が集合中であるかどうかを判断します.
127.0.0.1:6379> sismember myset sina
(integer) 1 >>>
127.0.0.1:6379> sismember myset qqa
(integer) 0 >>>
私たちはどんなシーンで交差を使うのでしょうか.例えば、友达のリストでは、あなたの友达でもあり、私の友达でもあるので、交差に使います.
秩序化集合(sortdset)
#
127.0.0.1:6379> zadd sortdset1 10 qq
(integer) 1
#
127.0.0.1:6379> zadd sortdset1 7 baidu 8 sina 15 taobao
(integer) 3
127.0.0.1:6379> zrange salary 0 100 withscores
1) "baidu"
2) "7"
3) "sina"
4) "8"
5) "qq"
6) "10"
7) "taobao"
8) "15"
127.0.0.1:6379> zcard sortdset1
(integer) 4
127.0.0.1:6379> zcount sortdset1 5 10
(integer) 3 >>> score 5-10 taobao score 15
127.0.0.1:6379> zscore salary baidu
"7"
127.0.0.1:6379> zrank salary baidu
(integer) 0 >>>baidu
127.0.0.1:6379> zrank salary qq
(integer) 2 >>>qq