redisラーニング--ベース2データ型keys

4176 ワード

1.keys
redisは本質的にkey-valueのDBなので、まず彼のkeyを見てみましょう.まずkeyも文字列タイプなので、keyには境界文字を含めることはできません.keyはbinary safeの文字列ではないため、スペースや改行を含むkeyのように(「my key」や「mykey」)は許されません.
keyのフォーマット規則について説明します:object-type:id:field例えばuser:1000:password
またkeyの長さはあまり長くしないほうがいいです.道理でメモリが消費されているのは明らかで、検索時には短いkeyよりも遅いです.しかし、短いkeyもお勧めしません.可読性が悪いです.
keyに関するコマンドを紹介します
exists keyテストはkeyが存在するかどうかを指定し、1を返して存在を表し、0は存在しない
del key1,key2.....keyNは所与のkeyを削除し、削除keyの数を返す
[/u1/yyang/study/redis/redis-2.6.10/src] (127)yyang@dcmvrh12#redis-cli
redis 127.0.0.1:6379> set mykey "hello world"
OK
redis 127.0.0.1:6379> get mykey
"hello world"
redis 127.0.0.1:6379> exists mykey
(integer) 1
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> exists mykey
(integer) 0
redis 127.0.0.1:6379>

type keyは所与のkeyのvalueタイプを返し、noneはkey、string文字タイプ、listチェーンテーブルタイプ、set無秩序集合タイプなどが存在しないことを示す
keys patternは指定したモードに一致するすべてのkeyを返します
keys*は、一致するデータベース内のすべてのkeyを表します.
keys h?lloはhello,hallo,hxlloなどと一致する.keys h*lloはhlloやheeeeelloなどにマッチします.keys h[ae]lloはhelloとhalloに一致するがhilloには一致しない.特殊記号はで区切られた警告:KEYSの速度は非常に速いが、大きなデータベースで使用するとパフォーマンスに問題が発生する可能性があります.データセットから特定のkeyを検索する必要がある場合は、Redisの集合構造(set)で代用したほうがいいです.
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> exists mykey
(integer) 0
redis 127.0.0.1:6379> type mykey
none
redis 127.0.0.1:6379> set mykey "hello"
OK
redis 127.0.0.1:6379> set myclass "math"
OK
redis 127.0.0.1:6379> set myface "big"
OK
redis 127.0.0.1:6379> keys my*
1) "myclass"
2) "mykey"
3) "myface"
redis 127.0.0.1:6379> keys my[cf]*
1) "myclass"
2) "myface"
redis 127.0.0.1:6379> keys *
1) "myclass"
2) "mykey"
3) "myface"

randomkeyは、現在のデータベースからランダムにキーを返し(削除しない)、データベースが空でない場合はキーを返します.データベースがコンステナイトの場合nilが返されます.
redis 127.0.0.1:6379> randomkey
"myclass"
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> del myclass
(integer) 1
redis 127.0.0.1:6379> del myface
(integer) 1
redis 127.0.0.1:6379> keys *
(empty list or set)
redis 127.0.0.1:6379> randomkey
(nil)
redis 127.0.0.1:6379>

flushdbはデータベース内のすべてのkeyを削除します.この方法は失敗しません.慎重に使用してください.
redis 127.0.0.1:6379> set mykey "abc"
OK
redis 127.0.0.1:6379> keys *
1) "mykey"
redis 127.0.0.1:6379> flushdb
OK
redis 127.0.0.1:6379> keys *
(empty list or set)
redis 127.0.0.1:6379>

ttl keyは、所定のkeyの残存生存時間(TTL,time to live)を秒単位で返し、keyが存在しない場合は-2を返し、keyが存在するが残存生存時間が設定されていない場合は-1を返し、そうでない場合は秒単位でkeyの残存生存時間を返す.注意:Redis 2.8以前に、keyが存在しない場合、またはkeyが残りの生存時間を設定していない場合、コマンドは-1を返します.
redis 127.0.0.1:6379> keys *
(empty list or set)
redis 127.0.0.1:6379> set mykey "abc"
OK
redis 127.0.0.1:6379> ttl mykey
(integer) -1
redis 127.0.0.1:6379> ttl abc
(integer) -1
dbsizeは、現在のデータベースkeyの数を返します.
redis 127.0.0.1:6379> dbsize
(integer) 1
redis 127.0.0.1:6379> set test "hello"
OK
redis 127.0.0.1:6379> keys *
1) "test"
2) "mykey"
redis 127.0.0.1:6379> dbsize
(integer) 2
redis 127.0.0.1:6379>

rename oldkey newkey原子の名前を変更し、newkeyが存在する場合は上書きし、1を返して成功を表し、0は失敗を表す.oldkeyが存在しないかnewkeyが同じかもしれません.
renamenx oldkey newkeyはrenameと同じですが、newkeyが存在する場合は失敗を返します.すなわち、newkeyが存在しない場合にのみoldkeyをnewkeyと改名する.
redis 127.0.0.1:6379> keys *
1) "test"
2) "mykey"
redis 127.0.0.1:6379> get test
"hello"
redis 127.0.0.1:6379> rename test grant
OK
redis 127.0.0.1:6379> get test
(nil)
redis 127.0.0.1:6379> get grant
"hello"
redis 127.0.0.1:6379> get mykey
"abc"
redis 127.0.0.1:6379> renamenx mykey grant
(integer) 0
redis 127.0.0.1:6379> get mykey
"abc"
redis 127.0.0.1:6379> keys*
(error) ERR unknown command 'keys*'
redis 127.0.0.1:6379> keys *
1) "grant"
2) "mykey"
redis 127.0.0.1:6379> renamenx mykey youkey
(integer) 1

先にここに着いてください.命令はすべて先に現金で調べても大丈夫です.