Redis(9)リストリストタイプ

リストの機能は非常にユニークで、キーの下にN個の繰り返し可能な要素を格納できます。実際、文字列型の右側の値は、複数の要素のリストに置き換えられます。

1つ:文字列構造:

リストの再現性により、以下の構造例では、最初と最後の要素を繰り返すことができます。

[
    "user":[
        "camellia1",
        "camellia2",
        "camellia3"
    ]
]

2:ハッシュタイプ関連の操作コマンド(PHP + linux)

1:Linuxコマンドの使用

(1):rpushがリストに値を追加すると、現在の長さ(要素の数を含む)が返されます。(これが右側の追加で、左側の追加と同じです)

rpush list-key camellia1                     // 返回(integer) 1
rpush list-key camellia2                     // 返回(integer) 2
rpush list-key camellia3                     // 返回(integer) 3

(2):lrangeは特定の範囲の値を取得し、その範囲内のすべての要素を正常に返します。ここで、0は開始位置を表し、-1は終了位置を表します。0から-1までは、すべての値を取り出すことを意味します。

lrange list-key 0 -1

出力:

1) "camellia1"
2) "camellia2"
3) "camellia3"

(3):lindexはリスト内の要素を取得します。

lindex list-key 1                   // 返回"camellia2"

(4):lpopリストの左側から要素を削除し、削除された要素を正常に返します

hdel hash-key camellia1             // 返回(integer) 1

2:PHPの使用:

(1):追加し、自動インクリメントの主キーに正常に戻ります(左右の追加は一貫しています)

$r = $redis->rpush("list-key","camellia1"); // 从列表右侧添加一个值item
    var_dump($r);// 此时,列表中有一个元素,返回int 1
 
    $res = $redis->rpush("list-key","camellia2"); // 含有2个元素,返回int 2
    var_dump($res);

(2):すべての値を取得します

$result = $redis->lrange("list-key", 0 ,-1);
var_dump($result);  // 输出:array(2) { [0]=> string(9) "camellia1" [1]=> string(9) "camellia2" }

(3):キーに対応する値を取得します。

$result = $redis->lindex("list-key",1);
var_dump($result);              // 返回camellia2

(4):lpopは左側から要素を削除するか、rpopを使用して右側から要素を削除し、削除された要素の値を正常に返します。

$ r = redis −> lpop( "list − key"); vardump(redis-> lpop( "list-key"); var_dump(R E D私は->>l p o p " l i s tk e y " ;v a rDu m p r); //削除された値camellia1を返します

3:Redisリストリストタイプに基づく単純なキューの実装

<?php
    $redis = new Redis();
    $redis->connect("127.0.0.1", 6379);
    // 进队列
    // 随机数一个id,模仿用户id
    $userId = mt_rand(000000, 999999);
    $redis->rpush("QUEUE_NAME",json_encode(["user_id" => $userId]));
    // 随机数一个id,模仿用户id
    $userId = mt_rand(000000, 999999);
    $redis->rpush("QUEUE_NAME",json_encode(["user_id" => $userId]));
    // 随机数一个id,模仿用户id
    $userId = mt_rand(000000, 999999);
    $redis->rpush("QUEUE_NAME",json_encode(["user_id" => $userId]));
    echo "数据进队列成功 
";
    echo "<br>";
    // 查看队列
    $res = $redis->lrange("QUEUE_NAME", 0, 1000);
    echo "当前队列数据为: 
";
    print_r($res);
    echo "----------------------------- 
";
    echo "<br>";
    // 出队列
    $redis->lpop("QUEUE_NAME");
    echo "数据出队列成功 
";
    echo "<br>";
    // 查看队列
    $res = $redis->lrange("QUEUE_NAME", 0, 1000);
    echo "当前队列数据为: 
";
    print_r($res);
?>

4:その他の一般的に使用されるredisリストコマンド

シリアルナンバー

コマンドと説明

BLPOP   key1 [key2 ] timeout 
  移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOP   key1 [key2 ] timeout 
  移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOPLPUSH   source destination timeout 
  从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
LINDEX   key index 
  通过索引获取列表中的元素
LINSERT   key BEFORE|AFTER pivot value 
  在列表的元素前或者后插入元素
LLEN   key 
  获取列表长度
LPOP   key 
  移出并获取列表的第一个元素
LPUSH   key value1 [value2] 
  将一个或多个值插入到列表头部
LPUSHX   key value 
  将一个值插入到已存在的列表头部
LRANGE   key start stop 
  获取列表指定范围内的元素
LREM   key count value 
  移除列表元素
LSET   key index value 
  通过索引设置列表元素的值
LTRIM   key start stop 
  对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
RPOP   key 
  移除列表的最后一个元素,返回值为移除的元素。
RPOPLPUSH   source destination 
  移除列表的最后一个元素,并将该元素添加到另一个列表并返回
RPUSH   key value1 [value2] 
  在列表中添加一个或多个值
RPUSHX   key value 
  为已存在的列表添加值

上記は基本的に私が読んだredisリストタイプの基本的な内容です。欠点があります。大物を指摘してください。

良い提案があります、下にあなたのコメントを入力してください。

個人ブログへようこそ
https://guanchao.site

ミニプログラムへようこそ:
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_39708228/article/details/113383021