Redis でよく使われる 5 つのデータ型 (詳細) が更新されています

1キー

1、現在のライブラリ内のすべてのキーを表示します。

key *

テストする前に、最初にいくつかの値を入力します

 set k1 mary
 set k2 jack
 set k3 frank
 

  keys *      

70260e3cea044357a186ab22823e1cce.png

 2、キーが含まれているかどうかを確認します

exists key

d42a3deaa1804f11a2776ef6fa1709bc.png

3、キーの種類を確認する

type key

 24cf98bf9b7847c1b32e6bdf3ed558a3.png

 4、指定したキーのデータを削除します

del key      删除指定key的数据
unlink key   根据value选择非阻塞删除 

65768107a6e84f4999c4796b82e24aae.png

539738b77aa0434c8219f19ad6c574ec.png

効果は同じですが、del キーは直接削除され、リンク解除キーは非ブロック削除であり、直接削除されません。キーのみがキースペース メタデータから削除され、実際の削除は後で非同期的に実行されます。 。

5. キーの有効期限を設定します

expire key 10 指定key10秒删除

 46668c7cbbee4678a798c967ef763464.png

 6. キーの有効期限が切れるまでの秒数を確認します

-1 は期限切れがないことを意味し、-2 は期限切れであることを意味します

35a7691d0da042dfa50d778a2732b8a5.png

7、スイッチデータベース

Redis にはデフォルトで 16 個のデータベース (0 ~ 15 個のデータベース) があり、デフォルトの選択は 0 データベースです

 c3722bd58637425ebe5351452adcced2.png

8. 現在のライブラリにあるキーの数を確認します。

前回の操作でキーが削除されたため、さらにいくつか追加します。

8c998d7f891f44b5b298a29e5f9eca03.png

現在のライブラリ内のキーの数を表示する 

 ffa5042669914eeaae850c30aebf1b51.png

 9. 現在のライブラリをクリアします

flushdb

9d6cf5a84fa742be8000ead5ec1bef33.png

10、すべてのライブラリを強制終了します

flushall

e58286957d784b5888792fb4c91b7c58.png

2、Redis 文字列型 (String)

1 はじめに

String は Redis の最も基本的な型であり、Memcached とまったく同じ型として理解でき、キーが値に対応します。

String 型はバイナリ セーフですRedis 文字列には任意のデータを含めることができることを意味します。jpg画像やシリアル化されたオブジェクトなど。

String 型は Redis の最も基本的なデータ型であり、Redis の文字列値は最大 512M です。

2. 共通コマンド

1. キーと値のペアを追加する

set <key> <value>

 2、値を取得する

get key

3. 文字を追加する 

append <key> <value>

 4、値の長さを取得します

strlen key

5、キーが存在しない場合にのみ値を設定します

setnx key

6、+1、-1 キーに格納されているデジタル値

incr <key> +1
decr <key> -1

数値にのみ有効です。incr、空の場合、新しい値は 1 です。decr、空の場合、新しい値は -1 です。

 7、キー + - に格納されているデジタル値でステップ サイズを指定します

incrby key 步长
decrby key 步长

原子性 

 いわゆるアトミック操作とは、スレッド スケジューリング メカニズムによって中断されない操作を指します。 

この操作が開始されると、途中でコンテキストを切り替える (別のスレッドに切り替える) ことなく、最後まで実行されます。

 (1) 単一スレッドでは、割り込みは命令間でのみ発生する可能性があるため、単一の命令で完了できる操作は「アトミック操作」とみなすことができます。

(2) マルチスレッドでは、他のプロセス (スレッド) が中断できない操作をアトミック操作と呼びます。

Redis の単一コマンドの原子性は、主に Redis の単一スレッドから派生します。

8、mset、mget、set、複数のキーと値を取得します

mset k1 v1 k2 v2 k3 v3
mget k1 k2 k3

9、msetnx は存在しないキーを設定します。キーが存在する場合、設定は失敗します。 

10、getrange <key> start end はキーの文字列を開始から終了までインターセプトします。

 11、setrange <key> 開始位置の値

12、setex キーの有効期限値、キー値を設定するときに有効期限を設定します

13、getset kv 古い値を新しい値に置き換えます

3、データ構造

String のデータ構造は Simple Dynamic String (略して SDS) です。これは変更可能な文字列であり、その内部構造は Java の ArrayList に似ており、事前に割り当てられた冗長スペースを使用してメモリの頻繁な割り当てを削減します。

図に示すように、現在の文字列に実際に内部的に割り当てられる容量は、通常、実際の文字列の長さ len よりも大きくなります。文字列の長さが 1M 未満の場合は、既存のスペースの 2 倍に拡張されますが、1M を超える場合は、一度に 1M ずつ拡張されます。文字列の最大長は 512M であることに注意してください。

三、Redisリスト(List)

1 はじめに

単一キー複数値

Redis リストは、挿入順に並べ替えられた文字列の単純なリストであり、要素はリストの先頭 (左) または末尾 (右) に追加できます。

その最下層は実際には二重リンク リストであり、操作の両端で高いパフォーマンスを発揮しますが、インデックス添字操作による中間のノードのパフォーマンスは低下します。

 2. 共通コマンド

1、lpush/rpush <key> <v1><v2>.... 1 つ以上の値を左/右から挿入します。

左に挿入

右に挿入

 注: 挿入プロセスは次の図に示すとおりです。

左に挿入:

ある
b ある
c b ある
d c b ある

右に挿入:

ある
ある

b

ある b c
ある b c d

2、lpop/rpop <key>は左/右から値を吐き出します。値は key にあり、値は key にあります

3. rpoplpush <k1><k2> は、k1 リストの右側から値を吐き出し、それを k2 リストの左側に挿入します。

例として左挿入を見てみましょう。

 4、lrange key start end インデックス添字に従って要素を取得します(左から右)

上に示したようにわずかに

注: lrange キー 0 -1 はすべての値を取得できます

5、lindexキーインデックス インデックスの添字に従って要素を取得します(左から右へ)

6、llenキーでリストの長さを取得します

7、値 newvalue の前にキーを挿入します。値を挿入するには、値の後に newvalue を挿入します。

8、lremキーn値左からn個の値を削除(左から右へ)

9. lset key Index value インデックスとして添え字が付いたリストキーの値を値に変更します

3、データ構造

List の基礎となるデータ構造は、クイック リンク リスト QuickList です。

まず、リスト内の要素が少ない場合には、連続的なメモリ ストレージが使用され、この構造は圧縮されたリストである ziplist です。すべての要素を並べて保存し、連続したメモリを割り当てます。

データ量が多い場合はquickListに変更されます。

通常のリンクリストで必要な追加ポインタ空間が大きすぎるため、例えば、このリストには int 型データのみを格納し、構造内に 2 つの追加ポインタ prev と next が必要になるため、無駄な空間が発生します。

Redis は、リンクされたリストと zipList を組み合わせて、quickList を形成します。つまり、双方向ポインタを使用して複数の zipList が連続して使用されます。これにより、高速な挿入および削除のパフォーマンスが満たされるだけでなく、過剰なスペースの冗長性も発生しません。

4、Redisコレクション(セット)

1 はじめに

Redisのsetが提供する機能はlistと似ています。リスト関数です。setを自動的に取り直せるのが特徴です。データのリストを保存する必要があり、データが重複したくない場合にはsetが適しています。選択。

更新中....

おすすめ

転載: blog.csdn.net/Yajyaj123/article/details/126918559