redis 在 php 中的應用(List篇)
本文為我閱讀了 redis參考手冊 之後結合 博友的博客 編寫,註意 php_redis 和 redis-cli 的區別(主要是返回值類型和參數用法)
目錄:
一、List(列表)
1、LPUSH
Redis Lpush 命令將一個或多個值插入到列表頭部。 如果 key 不存在,一個空列表會被創建並執行 LPUSH 操作。 當 key 存在但不是列表類型時,返回一個錯誤。(在Redis 2.4版本以前的 LPUSH 命令,都只接受單個 value 值。)
語法:
redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN
返回值: 執行 LPUSH 命令後,列表的長度。
可用版本: >= 1.0.0
時間復雜度:O(1)
具體實例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> lPush(‘favorite_fruit‘,‘cherry‘)); // key 不存在,創建一個新的列表, 返回 int 1
var_dump($redis -> lPush(‘favorite_fruit‘,‘banana‘)); // key 存在。但是 list 類型, 返回 int 2
$redis -> set(‘pats‘,‘dog‘);
var_dump($redis -> lPush(‘pats‘,‘cat‘)); // key 存在。但不是是 list 類型, 返回 boolean false
2、LPUSHX
Redis Lpushx 將一個或多個值插入到已存在的列表頭部,列表不存在時操作無效。
語法:
redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN
返回值: LPUSHX 命令執行之後,列表的長度。
可用版本: >= 2.2.0
時間復雜度:O(1)
具體實例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> rPush(‘favorite_fruit‘,‘cherry‘));
var_dump($redis -> rPush(‘favorite_fruit‘,‘banana‘));
var_dump($redis -> lPushx(‘favorite_fruit‘,‘apple‘)); // 返回 int 3
var_dump($redis -> lRange(‘favorite_fruit‘,0,-1));
// array (size=3)
// 0 => string ‘apple‘ (length=5)
// 1 => string ‘cherry‘ (length=6)
// 2 => string ‘banana‘ (length=6)
var_dump($redis -> lPushx(‘fake_key‘,‘invalid_val‘)); // 列表不存在時操作無效返回 int (0)
3、RPUSH
Redis Rpush 命令用於將一個或多個值插入到列表的尾部(最右邊)。如果列表不存在,一個空列表會被創建並執行 RPUSH 操作。 當列表存在但不是列表類型時,返回一個錯誤。(註意:在 Redis 2.4 版本以前的 RPUSH 命令,都只接受單個 value 值)。
語法:
redis 127.0.0.1:6379> RPUSH KEY_NAME VALUE1..VALUEN
返回值: 執行 RPUSH 操作後,列表的長度。
可用版本: >= 1.0.0
時間復雜度:O(1)
具體實例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> rPush(‘favorite_fruit‘,‘cherry‘)); // key 不存在,創建一個新的列表, 返回 int 1
var_dump($redis -> rPush(‘favorite_fruit‘,‘banana‘)); // key 存在。但是 list 類型, 返回 int 2
$redis -> set(‘pats‘,‘dog‘);
var_dump($redis -> rPush(‘pats‘,‘cat‘)); // key 存在。但不是是 list 類型, 返回 boolean false
4、RPUSHX
Redis Rpushx 命令用於將一個或多個值插入到已存在的列表尾部(最右邊)。如果列表不存在,操作無效。
語法:
redis 127.0.0.1:6379> RPUSHX KEY_NAME VALUE1..VALUEN
返回值:執行 Rpushx 操作後,列表的長度。
可用版本: >= 2.2.0
時間復雜度:O(1)
具體實例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> lPush(‘favorite_fruit‘,‘cherry‘));
var_dump($redis -> lPush(‘favorite_fruit‘,‘banana‘));
var_dump($redis -> rPushx(‘favorite_fruit‘,‘apple‘)); // 返回 int 3
var_dump($redis -> lRange(‘favorite_fruit‘,0,-1));
// array (size=3)
// 0 => string ‘banana‘ (length=6)
// 1 => string ‘cherry‘ (length=6)
// 2 => string ‘apple‘ (length=5)
var_dump($redis -> rPushx(‘fake_key‘,‘invalid_val‘)); // 列表不存在時操作無效返回 int (0)
5、LPOP
Redis Lpop 命令用於移除並返回列表的第一個元素。
語法:
redis 127.0.0.1:6379> LPOP KEY_NAME
返回值:列表的第一個元素。 當列表 key 不存在時,返回 nil 。
可用版本:>= 1.0.0
時間復雜度:O(1)
具體實例:
<?php
$redis = new redis();
$redis -> connect(‘127.0.0.1‘,6379);
$redis -> flushAll();
var_dump($redis -> lPush(‘favorite_fruit‘,‘cherry‘));
var_dump($redis -> lPush(‘favorite_fruit‘,‘banana‘));
var_dump($redis -> lPush(‘favorite_fruit‘,‘apple‘));
var_dump($redis -> lPop(‘favorite_fruit‘)); // string apple
var_dump($redis -> lRange(‘favorite_fruit‘,0,-1));
// array (size=2)
// 0 => string ‘banana‘ (length=6)
// 1 => string ‘cherry‘ (length=6)
redis 在 php 中的應用(List篇)