Redisの一般的な手順
コマンド学習Webサイト:http://doc.redisfans.com/index.html
1文字列型
割り当て構文:SETキー値
127.0.0.1:6379> set k1 zhangsan
OK
値の構文:GETキー
127.0.0.1:6379> set k1 zhangsan
OK
複数のキー構文を設定します:MSETキー値[キー値…]
127.0.0.1:6379> mset k2 lisi k3 wangwu
OK
複数のキーを取得するための構文:MGETキー[キー...]
127.0.0.1:6379> mget k2 k3
1) "lisi"
2) "wangwu"
構文の削除:DELキー
127.0.0.1:6379> del k3
(integer) 1
127.0.0.1:6379> get k3
(nil)
2文字列番号のインクリメントとデクリメント
インクリメント番号:格納されている文字列が整数の場合、Redisは実用的なコマンドINCRを提供します。このコマンドは、現在のキー値をインクリメントし、インクリメントされた値を置き換えます。
インクリメント番号の構文:INCRキー
数値構文のデクリメント:DECRキー
指定された整数構文を増やします:INCRBYキーインクリメント
指定された整数構文を減らします:DECRBYキーデクリメント
増加する
127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2
減少する
127.0.0.1:6379> decr num
(integer) 1
ステップサイズを指定します:(理解します)
127.0.0.1:6379> incrby num2 2
(integer) 2
127.0.0.1:6379> incrby num2 3
(integer) 5
127.0.0.1:6379> decrby num2 2
(integer) 3
127.0.0.1:6379> decrby num2 1
(integer) 2
3ハッシュ
ハッシュはハッシュタイプと呼ばれ、フィールドとフィールド値の間のマッピングを提供します。フィールド値は文字列型のみにすることができ、ハッシュ型やコレクション型などの他の型はサポートされていません。これは、オブジェクト形式のストレージと同等です。
割り当て構文:HSETキーフィールド値
- フィールド値を設定します。HSETコマンドは挿入操作と更新操作を区別しません。HSETコマンドは挿入操作を実行すると1を返し、更新操作を実行すると0を返し
ます。127.0.0.1
:6379> hset user1 username zhangsan (integer) 1
127.0.0.1:6379> hset user1 username lisi
(integer)0
値の構文:HGETキーフィールド
127.0.0.1:6379> hget user1 username
"lisi"
複数のフィールド構文を設定します:HMSETキーフィールド値[フィールド値…]
127.0.0.1:6379> hmset user1 password 123 age 20
OK
複数の値を取るための構文:HMGETキーフィールド[フィールド…]
127.0.0.1:6379> hmget user1 password age
1) "123"
2) "20"
すべてのフィールド値を取得します構文:HGETALLキー
127.0.0.1:6379> hgetall user1
1) "username"
2) "lisi"
3) "password"
4) "123"
5) "age"
6) "20"
フィールド構文の削除:HDELキーフィールド[フィールド…]
127.0.0.1:6379> hdel user1 username
(integer) 1
127.0.0.1:6379> hgetall user1
1) "password"
2) "123"
3) "age"
4) "20"
部分的な変更をサポートできます
4.キューリスト
Redisのリストは、リンクリストを使用してデータを格納し、機能:高速な追加と削除、低速なクエリ(Linkedlist)。このキューは順序付けられています。
リストの左側に要素を追加します:LPUSHキー値[値...]
リストの左側から要素をポップします:LPOPキー(一時的なストレージ、ポップ後、キューからクリア)
127.0.0.1:6379> lpush alist a1 a2 123
(integer) 3
127.0.0.1:6379> lpop alist
"123"
127.0.0.1:6379> lpop alist
"a2"
リストの右側に要素を追加します:RPUSHキー値[値…]
リストの右側から要素をポップします:RPOPキー
127.0.0.1:6379> rpush blist a1 a2 345
(integer) 3
127.0.0.1:6379> rpop blist
"345"
リスト要素の数を取得します:LLENキー
127.0.0.1:6379> llen blist
(integer) 1
リスト構文の表示:LRANGEキー開始停止
127.0.0.1:6379> lrange blist 0 3
1) "a2"
- 開始および停止前のすべての要素(両端の要素を含む)が返されます。インデックスは0から始まり、次のように負の数にすることができます。「-1」は最後の要素を表します
例:LPUSHコメント1 '{"id":1、 "name": "商品"、 "date":1430295077289}'
一時保管。先入先出。二重にリンクされたリストを使用します。
1.左側に行き、右側に行きます
127.0.0.1:6379> lpush stulist stu1
(integer) 1
127.0.0.1:6379> lpush stulist stu2
(integer) 2
127.0.0.1:6379> lpush stulist stu3
(integer) 3
127.0.0.1:6379> lpush stulist stu4
(integer) 4
127.0.0.1:6379> lpush stulist stu4
(integer) 5
127.0.0.1:6379> lpush stulist stu5
(integer) 6
127.0.0.1:6379> rpop stulist
"stu1"
127.0.0.1:6379> rpop stulist
"stu2"
127.0.0.1:6379> rpop stulist
"stu3"
127.0.0.1:6379> rpop stulist
"stu4
2.右側に入り、左側に進みます。
127.0.0.1:6379> rpush clist stu1
(integer) 1
127.0.0.1:6379> rpush clist stu2
(integer) 2
127.0.0.1:6379> rpush clist stu3
(integer) 3
127.0.0.1:6379> rpush clist stu4
(integer) 4
127.0.0.1:6379> rpush clist stu5
(integer) 5
127.0.0.1:6379> lpop clist
"stu1"
127.0.0.1:6379> lpop clist
"stu2"
5セット
コレクションタイプの設定:順序なし、繰り返し不可
要素構文の追加:SADDキーメンバー[メンバー…]
要素構文の削除:SREMキーメンバー[メンバー…]
コレクション内のすべての要素を取得します:smembers key
127.0.0.1:6379> sadd ulist user1
(integer) 1
127.0.0.1:6379> sadd ulist user2
(integer) 1
127.0.0.1:6379> sadd ulist user3
(integer) 1
127.0.0.1:6379> smembers ulist
1) "user2"
2) "user3"
3) "user1"
127.0.0.1:6379> srem ulist user2
(integer) 1
127.0.0.1:6379> smembers ulist
1) "user3"
2) "user1"
要素がコレクションにあるかどうかを判別します:SISMEMBERキー・メンバー
127.0.0.1:6379> smembers ulist
1) "user3"
2) "user1"
127.0.0.1:6379> sismember ulist user2
(integer) 0
127.0.0.1:6379> sismember ulist user1
(integer) 1
6Zset注文セット
zsetとも呼ばれるSortedsetは、並べ替え可能な順序集合ですが、一意です。Sortedsetとsetの違いは、スコアがセット内の要素に追加され、このスコアでソートされることです。
要素の追加:ZADDキースコアメンバー[スコアメンバー…]
- 要素と要素のスコアを順序セットに追加します。要素がすでに存在する場合は、元のスコアが新しいスコアに置き換えられます。
127.0.0.1:6379> zadd num1 20 stu1 30 stu2 40 stu3
(整数)3
混合スコアを追加します(学生の成績、販売量などを使用してスコアを作成し、計算と並べ替えを容易にすることができます):
特定の範囲でランク付けされた要素のリストを取得し、要素スコアの降順で返します
语法:ZREVRANGEキースタートストップ[WITHSCORES]
127.0.0.1:6379> zadd num1 10 stu4
(integer) 1
127.0.0.1:6379> zrevrange num1 0 4
1) "stu3"
2) "stu2"
3) "stu1"
4) "stu4"
要素のスコアを取得します:ZSCOREキーメンバー
127.0.0.1:6379> zscore num1 stu2
"30"
要素ZREMキーメンバーを削除します[メンバー…]
127.0.0.1:6379> zrem num1 stu2
(integer) 1
127.0.0.1:6379> zrevrange num1 0 4
1) "stu3"
2) "stu1"
3) "stu4"
要素のスコアを取得するには、コマンドの最後にWITHSCORESパラメーターを追加します。
127.0.0.1:6379> zrevrange num1 0 4 withscores
1) "stu3"
2) "40"
3) "stu1"
4) "20"
5) "stu4"
6) "10"
アプリケーション:製品の販売、学生のランキングなど。
属性にポイントを加算または減算します。ポイントを減算するときは負の数を使用します。
127.0.0.1:6379> zincrby num1 2 stu1
"22"
例:
製品番号1001の販売量は9、製品番号1002の販売量は10です。
ZADD sellsort 9 1001 10 1002
製品番号1001の売上が1増加
ZINCRBY sellsort 1 1001
製品販売ランキングキューのトップ3:
zrevrange sellsort 0 2 withscores
トップ3の学生ランキング:
zrevrange stus 0 2 withscores
7HyoperLogLogコマンド
HyperLogLogは、ランダム化を使用して、少量のメモリを備えたセット内の一意の要素の数の概算値を提供するアルゴリズムです。
HyperLogLogは、入力として複数の要素を受け入れ、入力要素のカーディナリティの推定値を提供できます。
- カーディナリティ:セット内のさまざまな要素の数。たとえば、{'apple'、 'banana'、 'cherry'、 'banana'、 'apple'}のベースは3です。
- 推定値:アルゴリズムによって与えられた基数は正確ではなく、実際の値よりわずかに多いか少ない可能性がありますが、妥当な範囲内で制御されます。
HyperLogLogの利点は、入力要素の数または量が非常に多い場合でも、ベースの計算に必要なスペースが常に固定されて小さいことです。
Redisでは、各HyperLogLogキーは、2 ^ 64に近い異なる要素のベースを計算するために12KBのメモリのみを必要とします。これは、カーディナリティを計算するときに、より多くの要素がより多くのメモリを消費するコレクションとはまったく対照的です。
ただし、HyperLogLogは入力要素に基づいてカーディナリティを計算するだけであり、入力要素自体は格納しないため、HyperLogLogはコレクションのように入力要素を返すことはできません。
HyperLogLogに関連するいくつかの基本的なコマンド。
例:
redis 127.0.0.1:6379> PFADD mykey "redis"
1) (integer) 1
redis 127.0.0.1:6379> PFADD mykey "java"
1) (integer) 1
redis 127.0.0.1:6379> PFADD mykey "mysql"
1) (integer) 1
redis 127.0.0.1:6379> PFCOUNT mykey
(integer) 3
8その他のコマンド
(1)キーは、指定されたパターンを満たすすべてのキーを返します
keys user* //查询以user开头的key
keys * //查询所有的key
(2)存在は、キーが存在するかどうかを確認し、存在する場合は1を返します。
127.0.0.1:6379> exists num2 //语法:exists key
(integer) 1
127.0.0.1:6379> exists num23
(integer) 0
(3)キーを削除する
127.0.0.1:6379> del num1 //语法: del key 删除存在的key返回1,不存在的key返回0
(integer) 1
127.0.0.1:6379> del num23
(integer) 0
(4)重教師キーの名前を変更:oldkeynewkeyの名前を変更
127.0.0.1:6379> rename k1 k11
OK
127.0.0.1:6379> keys *
1) "ulist"
2) "k2"
3) "user1"
4) "num2"
5) "clist"
6) "k11"
(5)type戻り値のタイプ:type key
127.0.0.1:6379> type ulist
set
127.0.0.1:6379> type k11
string
127.0.0.1:6379> type alist
list
キーの有効期間を設定する:キャッシュされたデータは通常、有効期間を設定する必要があります。つまり、データは有効期限が切れると破棄されます。
(6)EXPIREキー秒
-
キーが自動的に削除されてから何秒後のキーの存続時間(単位:秒)を設定します
-
TTLキーキーの残りの存続時間を表示します
-
PERSISTキーの明確な生存時間
127.0.0.1:6379> set a1 123
OK
127.0.0.1:6379> get a1
“ 123”
127.0.0.1:6379> expire a1 60
(integer)1
127.0.0.1:6379> ttl a1
(integer)56
127.0.0.1: 6379> ttl a1
(整数)51
127.0.0.1:6379> ttl a1
(整数)47
(7)サーバー情報と統計を取得する:info
(8)現在選択されているデータベース内のすべてのキーを削除します:flushdb
(9)すべてのデータベースのすべてのキーを削除します:flushall
9複数のデータベースをRedisします
redisインスタンスキーには複数のデータベースが含まれます。クライアントは、mysqlで複数のデータベースを作成するのと同じように、redisインスタンスに接続するデータベースを指定でき、クライアントは接続時に接続するデータベースを指定します。
redisインスタンスは、0〜15の添え字で最大16個のデータベースを提供できます。クライアントはデフォルトでデータベースNo. 0に接続します。また、選択して接続するデータベースを選択することもできます。次のようにデータベースNo.1に接続します。
0未満のデータベースに切り替えます
キーデータをデータベース番号1に移動します:キーデータベース番号を移動します