[Redis]コマンドの5つの基本的なタイプの詳細な説明

みなさん、こんにちは。私はキャベツに支配されている豚です。

勉強が大好きで、眠れず、食べるのを忘れている人は、女の子のシックで落ち着いた、無関心なコーディングのハンサムな男の子に夢中です。

基本データ型

Redisの中国の公式ウェブサイトを見ると、Redisには5つのデータ型があることがわかっているので、以下のコマンドを使用してそれらを1つずつ紹介します。
ここに画像の説明を挿入します

(1)文字列

1.値の設定、値の取得、値の追加、文字列の長さの取得

127.0.0.1:6379> ping #检查是否连接成功
PONG
127.0.0.1:6379> set name nihao #设置值
OK
127.0.0.1:6379> get name #获得值
"nihao"
127.0.0.1:6379> set age 19
OK
127.0.0.1:6379> keys * #获取所有的key
1) "name"
2) "age"
127.0.0.1:6379> EXISTS name #判断一个key是否存在
(integer) 1
127.0.0.1:6379> APPEND name ,dashuaige #追加字符串,假如key不存在,则相当于set key
(integer) 15
127.0.0.1:6379> get name
"nihao,dashuaige"
127.0.0.1:6379> STRLEN name #查看字符串的长度
(integer) 15

2.自己増加と自己減少

WeChatパブリックアカウントには、多数の記事ビューがあります。この数は、クリックするたびにデータベースの値を変更しないため、データベースアクセスに大きな負荷がかかります。代わりに、キャッシュに保存されて書き込まれます。定期的にデータベースに。

127.0.0.1:6379> set views 0 #设置初始浏览量0
OK
127.0.0.1:6379> INCR views #使用INCR名来实现+1
(integer) 1
127.0.0.1:6379> INCR views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> DECR views #使用DECR来实现-1
(integer) 1
127.0.0.1:6379> get views
"1"
127.0.0.1:6379> INCRBY views 10 #使用INCRBY来指定步长
(integer) 11
127.0.0.1:6379> get views
"11"
127.0.0.1:6379> DECRBY views 2
(integer) 9
127.0.0.1:6379> get views
"9"
127.0.0.1:6379> 

3.文字列範囲getrange [x、x]

これは、左に閉じて右に開いたJavaの部分文字列、つまり(x、x)とは異なります。

127.0.0.1:6379> get name
"nihao,dashuaige"
127.0.0.1:6379> GETRANGE name 0 2 #通过getrange来获得指定范围的值
"nih"
127.0.0.1:6379> GETRANGE name 0 -1 #最后一个索引为-1,来获取全部的值
"nihao,dashuaige"
127.0.0.1:6379> SETRANGE name 0 xx #使用setrange来替换相应位置的值
(integer) 15
127.0.0.1:6379> get name
"xxhao,dashuaige"

4、setex、setnx

setex(expireで設定)有効期限を設定し、いつ期限切れにするかを指定します
setnx(存在しない場合は設定)が設定に存在しない場合、存在する場合、作成は失敗します

127.0.0.1:6379> SETEX key1 5 wohuiguoqi #设置过期时间
OK
127.0.0.1:6379> ttl key1 #查看倒计时
(integer) 1
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> setnx key1 nihao
(integer) 1
127.0.0.1:6379> get key1
"nihao"
127.0.0.1:6379> setnx key1 hhh #key1已存在,则创建失败
(integer) 0
127.0.0.1:6379> get key1 #这里获取key1的值,还是第一次设置的值
"nihao"

5、mset、mget

Msetは同時に複数のキー値を設定し、mgetは同時に複数のキー値を取得します

127.0.0.1:6379> mset key1 value1 key2 value2 key3 value3
OK
127.0.0.1:6379> keys *
1) "key2"
2) "key1"
3) "key3"
127.0.0.1:6379> mget key1 key2 key3
1) "value1"
2) "value2"
3) "value3"

オブジェクト:ユーザー:1:名前をキーと見なします

127.0.0.1:6379> set user:1:name ljl
OK
127.0.0.1:6379> get user
(nil)
127.0.0.1:6379> get user:1
(nil)
127.0.0.1:6379> get user:1:name
"ljl"

6、getset

値を設定する前にまず値を取得します。値がある場合は、最初に元の値を取得してから、新しい値を設定します。

127.0.0.1:6379> getset name nihao
(nil)
127.0.0.1:6379> get name
"nihao"
127.0.0.1:6379> getset name dashaibi
"nihao"
127.0.0.1:6379> get name
"dashaibi"
127.0.0.1:6379> 

結論:文字列は文字列または数値にすることができます。さまざまなシナリオで使用できます。カウンターとして使用したり、ファンの数をカウントしたり、オブジェクトキャッシュに保存したりすることもできます。

(2)リスト

ここでのリストは、キュー、スタックと見なすことができます...右または左から挿入できます。リストを操作するためのコマンドは通常lで始まり​​、Redisでは大文字と小文字は区別されません。
ここに画像の説明を挿入します
リストの簡単な操作、データの追加、データの削除、特定のインデックスのデータの取得について説明します。

1、lpush、lpop、lrange

127.0.0.1:6379> clear
127.0.0.1:6379> LPUSH list nihao1 #从左边添加元素
(integer) 1
127.0.0.1:6379> LPUSH list nihao2
(integer) 2
127.0.0.1:6379> lpush list nihao3
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1 #获取所有元素
1) "nihao3"
2) "nihao2"
3) "nihao1"
127.0.0.1:6379> LPOP list #从左边弹出元素
"nihao3"
127.0.0.1:6379> LRANGE list 0 -1
1) "nihao2"
2) "nihao1"
127.0.0.1:6379> RPOP list #从右边弹出元素
"nihao1"
127.0.0.1:6379> LRANGE list 0 -1
1) "nihao2"

リストのような要素を追加する際に方向性があることがわかり、その上の水平方向の画像が立てられてキューになることが想像できます。ご覧のとおり、nihao1を最初に追加したとき、シリアル番号は3でした。
ここに画像の説明を挿入します

2、lindex

値にインデックスを付けると、rindexがないと、値はlindexによってのみ取得できることがわかります。ここでのlは、リストのlだけでなく、左側のlも参照していることがわかります。上の写真は覚えておくのに十分であり、その小宇宙は1からではなく0から始まります。

127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> LINDEX list 1 #从左边开始数第二个数
"two"
127.0.0.1:6379> lindex list 0
"three"
127.0.0.1:6379> rindex list 3

3、llen

長さ長さ、llenはリストの長さをチェックすることです

127.0.0.1:6379> llen list
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> 

4 r lrem

要素を削除(削除)

127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> LREM list 2 three #假如有多个相同的值,2代表要移除几个相同的元素
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> lrem list 1 two
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "one"
127.0.0.1:6379> lpush list three
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "three"
3) "one"
127.0.0.1:6379> lrem list 2 three
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "one"

5、ltrim

Javaでは、trimは左右のスペースを削除することです。ここでは、リスト内のデータを変更するカットを意味します。lindexを使用すると、元のリストを変更せずに対応するインデックスの値を取得できます。ltrimは値を丸めます。範囲外。

127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> LTRIM list 1 2 #1,2 代表要裁剪出的范围
OK
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"

ここでも範囲はゼロから始まることに注意してください。このとき、クリッピング後、元のリストが変更されています。

6、rpoplpush

右側の1つのリストから出て、左側から別のリストを入力します。他のリストが存在しない場合は、問題ありません。

127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> RPOPLPUSH list otherlist #otherlist不存在,则创建
"one"
127.0.0.1:6379> lrange otherlist 0 -1
1) "one"
127.0.0.1:6379> 

7セットlset

要素を置き換え、存在しない場合はエラーを報告します

127.0.0.1:6379> LSET list 0 nihao
OK
127.0.0.1:6379> lrange list 0 -1
1) "nihao"
2) "two"
127.0.0.1:6379> lset list 3 nihao
(error) ERR index out of range
127.0.0.1:6379> 

8、挿入

指定した要素の前後に要素を挿入します

127.0.0.1:6379> LINSERT list before nihao hello
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "nihao"
3) "two"

ここでRedisが行うことは、依然として非常に人道的です。すべてのコマンドにはプロンプトが表示され、ここに何を入力するかが示されます。これらのコマンドを大まかに覚えるだけで済みます。覚える必要はありません。重要なのは、脳の能力が許可されます。適切な怠惰であっても大丈夫です。

(3)セット

上記のようなメモの並べ替えは時間の無駄であることがわかりました。すべてのコマンドをコピーして貼り付けます。深刻ですが、時間がかかりすぎて効率があまり高くないため、以下はサイレント書き込み方法であり、フレームワークの意識に従って。

高校時代から知っているように、コレクションの要素は順序付けられておらず、反復的ではありません。各データ型は、追加、削除、クエリ、および変更と切り離せません。つまり、値を取得して前の値を上書きします。

  • サッド:付加価値
  • smembers:指定されたセットのすべての値を表示します
  • sismember:値が存在するかどうかを確認します
  • scard:指定されたコレクションの要素数を取得します
  • srem:指定された要素の要素を削除します
  • smove:特定のコレクションの要素を別のコレクションに移動することです

宝くじを実装したい場合は、次のコマンドを使用して値を取得できます

  • srandmember:指定されたセットの要素をランダムに取得し、その後に2などの数値を続けてから、2つの要素をランダムに取得します
  • spop:指定されたセットの要素をランダムに削除します

Weibo、ステーションbなどのシナリオもあります。
セットを使用できるように一緒にフォローしたい人数。和集合、交差点、違いがあります。

  • スニオン:ユニオン
  • 焼結:交差点
  • sdiff:差分セット

(4)ハッシュ

Redisハッシュは、フィールドと文字列型の値の間のマッピングテーブルです。ハッシュは、オブジェクトの格納に特に適しています。Key-Valueフォームを格納します。ハッシュには複数のキー値を格納できます。

  • hset:設定値
  • hget:値を取得します
  • hgetall:すべての値を取得します
  • hdel:指定されたハッシュのキーフィールドを削除すると、対応する値がそれに応じて削除されます
  • hlen:ハッシュテーブルのフィールド数を取得します
  • hexisits:ハッシュ内のフィールドが存在するかどうかを判別します

キーのみまたは値のみを取得します

  • hkeys:すべてのキーのみを取得します
  • hvals:すべての値のみを取得します
  • hincrby:増分を指定します
  • hsetnx:存在しない場合は設定でき、存在する場合は設定できません

ハッシュは、コンテンツが頻繁に変更されるオブジェクトや情報を格納するのに適しています。

(5)注文セット(Zset)

Redisで順序付けられたコレクションは、コレクションのような文字列型要素のコレクションでもあり、重複するメンバーは許可されません。違いは、各要素がダブルタイプのスコアに関連付けられていることです。Redisはスコアを使用して、コレクション内の実績を小さいものから大きいものに並べ替えます。順序集合のメンバーは一意ですが、スコアを繰り返すことができます。

  • zadd:要素を追加します
  • zrangebyscore:スコアに基づくランク
  • zrem:要素を削除します
  • zcard:順序集合の番号を取得します
  • zcount:指定された間隔のメンバーの数を取得します

順序付けられたセットは、ランキング、クラススコア、上位ランキングなどに適用できます。

上記は最も基本的なコマンドです。そうでない場合でも、公式Webサイトを確認する必要があります。

おすすめ

転載: blog.csdn.net/weixin_44226263/article/details/109059063