国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

phpredis

AdolphLWQ / 1269人閱讀

摘要:多線程版本中,和的工作方式和非持久連接的工作方式相同。如果設為默認,一次發出一條命令,有時會返回空數組。

Redis 類和方法
用法

Redis 類

RedisException 類

預定義常量

Redis 類

創建Redis客戶端

示例
$redis = new Redis();
RedisException 類

如果無法訪問Redis服務器,phpredis拋出RedisException異常,如Redis服務關閉,Redis主機過載等。除去服務器無法訪問的情形(key不存在,或無效命令等),phpredis返回FALSE

預定義常量

可用的Redis常量
Redis數據類型,同方法 type 返回值

Redis::REDIS_STRING - String
Redis::REDIS_SET - Set
Redis::REDIS_LIST - List
Redis::REDIS_ZSET - Sorted set
Redis::REDIS_HASH - Hash
Redis::REDIS_NOT_FOUND - Not found / other
Redis 連接

connect, open - 連接到Redis服務器

pconnect, popen - 連接到Redis服務器(持久連接)

auth - 服務器驗證

select - 切換數據庫

swapdb - 交換兩個數據庫

close - 關閉連接

setOption - 設置客戶端配置

getOption - 獲取客戶端配置

ping - 查看服務是否運行

echo - 輸出給定字符串

connect, open

連接到Redis實例

參數

host: string 域名或unix套接字
port: int 可選,端口號
timeout: float 連接超時時間,秒(可選,默認0,表示無限制)
reverved: 如果指定了retry_interval,該值應為NULL
retry_interval: int 重連延時時間,毫秒(可選)
read_timeout: float 讀取key的超時時間,秒(可選,默認0,表示無限制)

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->connect("127.0.0.1", 6379);
$redis->connect("127.0.0.1"); // 默認6379端口
$redis->connect("127.0.0.1", 6379, 2.5); // 2.5s連接超時
$redis->connect("/tmp/redis.sock"); // unix套接字
$redis->connect("127.0.0.1", 6379, 1, NULL,100); // 1s連接超時,100ms延時重連
pconnect, popen

連接到Redis實例,或重用pconnect/popen建立的連接

使用close命令或結束請求都不會關閉連接,直到php進程結束。因此,在連接到同一臺redis服務器的多臺服務器上使用持久連接時,要對大量的FD錯誤有所防備,尤其在redis服務器端。

持久連接可以通過host + port + timeouthost + persistent_idunix socket + timeout建立。

該特性不適用于多線程版本。多線程版本中,pconnectpopen的工作方式和非持久連接的工作方式相同。

參數

host: string 域名或unix套接字
port: int 端口號,可選
timeout: float 連接超時時間,秒(可選,默認0,表示無限制)
persistent_id: string 持久連接請求標識
retry_interval: int 重連時間間隔,秒
read_timeout: float 讀取key的超時時間,秒(可選,默認0,表示無限制)

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->pconnect("127.0.0.1", 6379);
$redis->pconnect("127.0.0.1"); // 默認端口6379,和上述連接為同一連接
$redis->pconnect("127.0.0.1", 6379, 2.5); // 2.5s超時,新連接
$redis->pconnect("127.0.0.1", 6379, 2.5, "x"); // x作為persistent_id,新連接
$redis->pconnect("/tmp/redis.sock"); // unix套接字,新連接
auth

使用密碼驗證連接,密碼以純文本形式發送。

參數

password: string

返回值

boolean: 驗證通過返回TRUE,否則返回FALSE

示例
$redis->auth("foobared");
select

切換到指定數據庫

參數

dbindex: int 數據庫索引

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例

參考 move 方法

swapdb

交換兩數據庫

參數

db1: int
db2: int

返回值

boolean: 成功返回TRUE,失敗返回FALSE

注意:要求Redis >= 4.0.0

示例
$redis->swapdb(0, 1); // 交換數據庫 0 和 1
close

斷開與Redis實例的連接,除非使用pconnect

setOption

設置客戶端配置

參數

parameter name
parameter value

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE); // 不序列化數據
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP); // 使用內置的序列化/反序列化
$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY); // 使用 igBinary 序列化/反序列化

$redis->setOption(Redis::OPT_PREFIX, "myAppName"); // 在所有 key 上使用自定義前綴

/*
SCAN 系列命令配置,指示是否獲取空的用戶輸入。如果設為 SCAN_NORETRY (默認),phpredis 一次發出一條 SCAN 命令,有時會返回空數組。如果設為 SCAN_RETRY ,phpredis 會重復發送 SCAN 指令,直到返回 keys 或者 Redis 返回零迭代器
*/
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_NORETRY);
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
getOption

獲取客戶端配置

參數

parameter name

返回值

parameter value

示例
$redis->getOption(Redis::OPT_SERIALIZER); // 返回 Redis::SERIALIZER_NONE, Redis::SERIALIZER_PHP 或 Redis::SERIALIZER_IGBINARY
ping

檢查連接狀態

參數

返回值

string: 成功返回+PONG,失敗時拋出RedisException異常

echo

打印字符串

參數

string: string 要輸出的字符串

返回值

string: 輸入的字符串

Redis 服務器

bgRewriteAOF - 異步執行一個AOF(append-only file)文件重寫操作

bgSave - 在后臺異步保存當前數據庫的數據到磁盤

config - 獲取/設置Redis服務器配置

dbSize - 返回當前數據庫的key的數量

flushAll - 刪除所有數據庫的所有key

flushDb - 刪除當前數據庫的所有key

info - 獲取Redis服務器的各種信息和統計數值

lastSave - 返回最近一次Redis成功將數據保存到磁盤上的時間,以UNIX時間戳格式表示

resetStat - 重置 info 命令中的某些統計數據

save - 同步保存數據到硬盤

slaveOf - 將當前服務器轉變為指定服務器的從屬服務器

time - 返回當前服務器時間

slowLog - 管理redis的慢日志

bgRewriteAOF

異步執行一個AOF(append-only file)文件重寫操作

參數

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->bgRewriteAOF();
bgSave

在后臺異步保存當前數據庫的數據到磁盤

參數

返回值

boolean: 成功返回TRUE,失敗返回FALSE。如果正在執行save操作,返回FALSE

示例
$redis->bgSave();
config

獲取/設置Redis服務器配置

參數

operation: string GETSET
key: string
value: string 可選(僅針對SET

返回值

array/boolean: GET返回關聯數組,SET返回布爾值

示例
$redis->config("GET", "*max-*entries*");
$redis->config("SET", "dir", "/var/run/redis/dumps/");
dbSize

返回當前數據庫的key的數量

參數

返回值

int: 當前數據庫的key的數量

示例
$count = $redis->dbSize();
echo "Redis has $count keys
";
flushAll

刪除所有數據庫的所有key

參數

返回值

boolean: 始終返回TRUE

示例
$redis->flushAll();
flushDb

刪除當前數據庫的所有key

參數

返回值

boolean: 始終返回TRUE

示例
$redis->flushDb();
info

獲取Redis服務器的各種信息和統計數值

返回Redis服務器信息組成的數組,不傳遞參數時,返回如下信息:

redis_version

arch_bits

uptime_in_seconds

uptime_in_days

connected_clients

connected_slaves

used_memory

changes_since_last_save

bgsave_in_progress

last_save_time

total_connections_received

total_commands_processed

role

通過傳遞一系列參數,可以讓命令只返回某一部分信息。

參數

option: string 提供給redis的選項(COMMANDSTSTS,CPU等)

示例
$redis->info();
$redis->info("COMMANDSTATS"); // 已執行命令信息 (版本 >= 2.6)
$redis->info("CPU"); // CPU信息
lastSave

返回最近一次Redis成功將數據保存到磁盤上的時間,以UNIX時間戳格式表示

參數

返回值

int: UNIX時間戳

示例
$redis->lastSave();
resetStat

重置 info 命令中的某些統計數據

清空以下統計信息:

Keyspace hits

Keyspace missed

Number of commands processed

Number of connections received

Number of expired keys

參數

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->resetStat();
save

同步保存數據到硬盤

參數

返回值

boolean: 成功返回TRUE,失敗返回FALSE。如果save操作正在執行,返回FALSE

示例
$redis->save();
slaveOf

將當前服務器轉變為指定服務器的從屬服務器

參數

host: string
port: int
不傳遞參數表示終止從屬關系

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->slaveOf("10.0.1.7", 6379);

$redis->slaveOf();
time

返回當前服務器時間

參數

返回值

array: 成功時返回一個關聯數組,數組的第一個元素是unix時間戳秒數,第二個元素是微秒數

示例
$redis->time();
slowLog

管理redis的慢日志

參數

Operation: string GETLENRESET
Length: int 可選,如果執行SLOWLOG GET命令,可以傳遞該參數

返回值

array/int/boolean:
SLOWLOG返回值取決于執行的操作:
SLOWLOG GET 返回關聯數組
SLOWLOG LEN 返回slowLog長度 integer
SLOWLOG RESET 返回Boolean

示例
// 獲取10條slowlog記錄
$redis->slowLog("get", 10);
// 獲取默認條數的slowlog記錄
$redis->slowLog("get");
// 重置slowlog
$redis->slowLog("reset");

// 獲取slowlog長度
$redis->slowLog("len");
Redis 字符串和 Redis 鍵 Redis 字符串

append - 追加一個值到key

bitCount - 統計指定位區間上,值為 1 的位的個數

bitOp - 在字符串之間執行按位運算

decr, decrBy - 減少key的值

get - 獲取key的值

getBit - 對key所儲存的字符串值,獲取指定偏移量上的位(bit)

getRange - 返回key中字符串值的子字符串

getSet - 將給定key的值設為value,并返回key的舊值(old value)

incr, incrBy - 增加key的值

incrByFloat - 將key所儲存的值加上給定的浮點增量值(increment

mGet, getMultiple - 獲取所有(一個或多個)給定key的值

mSet, mSetNX - 同時設置一個或多個 key-value

set - 設置指定key的值

setBit - 對key所儲存的字符串值,設置或清除指定偏移量上的位(bit)

setEx, pSetEx - 為key賦值,并設置過期時間

setNx - 只有在key不存在時設置key的值

setRange - 從指定偏移量開始,覆寫給定key所儲存的字符串值

strLen - 返回key所儲存的字符串值的長度

Redis 鍵

del, delete, unlink - 刪除key

dump - 序列化給定key,并返回被序列化的值

exists - 檢查給定key是否存在

expire, setTimeout, pexpire - 為給定key設置過期時間

expireAt, pexpireAt - 將key的過期時間設置為unix時間戳

keys, getKeys - 查找所有符合給定模式(pattern)的key

scan - 掃描所有key

migrate - 將key從一個Redis實例轉移到另一個實例

move - 將當前數據庫的key移動到給定的數據庫當中

object - 獲取key對象信息

persist - 移除key的過期時間,key將持久保持

randomKey - 從當前數據庫中隨機返回一個key

rename, renameKey - 修改key的名稱

renameNx - 僅當新key不存在時,將key改名為新的key

type - 返回key所儲存的值的類型

sort - 對列表、集合或有序集中的元素進行排序

ttl, pttl - 獲取key的剩余的過期時間

restore - 用通過 dump 獲得的序列化值創建一個key


get

獲取key的值

參數

key: string

返回值

string/boolean: key不存在時返回FALSE,否則返回key的值

示例
$redis->get("key");
set

設置指定key的值

參數

Key: string
Value: string
int/array: 可選,若傳遞int,將調用SETEX命令。如果Redis >= 2.6.12,則可以傳遞擴展選項

返回值

boolean: 成功時返回TRUE

示例
$redis->set("key", "value");

// 將調用SETEX方法
$redis->set("key", "value", 10);

// 設置key值,如果key不存在,設置10s過期
$redis->set("key", "value", array("nx", "ex" => 10));

// 設置key值,如果key不存在,設置1000ms過期
$redis->set("key", "value", array("xx", "px" => 1000));
setEx, pSetEx

key賦值,并設置過期時間(setEx使用秒數,pSetEx使用毫秒)

參數

Key: string
TTL: int
Value: string

返回值

boolean: 成功返回TRUE

示例
$redis->setEx("key", 3600, "value"); // 設置key值,1h過期
$redis->pSetEx("key", 100, "value"); // 設置key值,100ms過期
setNx

只有在key不存在時設置key的值

參數

key: string
value: string

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->setNx("key", "value"); // 返回 TRUE
$redis->setNx("key", "value"); // 返回 FALSE
del, delete, unlink

刪除key

參數

array/string: keys組成的數組,或多個key: key1 key2 key3 ... keyN

返回值

int: 被刪除的key數量

示例
$redis->set("key1", "val1");
$redis->set("key2" ,"val2");
$redis->set("key3", "val3");
$redis->set("key4", "val4");

$redis->delete("key1" ,"key2"); // 返回 2
$redis->delete(array("key3", "key4")); // 返回 2

// Redis >= 4.0.0 時可以調用unlink方法
$redis->unlink("key1", "key2");
$redis->unlink(array("key1", "key2"));
exists

檢查給定key是否存在

參數

key: string

返回值

int: 檢測的keys中,key存在的數量

示例
$redis->set("key", "value");
$redis->exists("key"); // 1
$redis->exists("NonExistingKey"); // 0

$redis->mSet(["foo" => "foo", "bar" => "bar", "baz" => "baz"]);
$redis->exists(["foo", "bar", "barz"]); // 3
$redis->exists("foo", "bar", "baz"); // 3

注意Redis < 4.0.0時,該方法僅接受一個參數,返回布爾值

incr, incrBy

key的值自增 1, 如果傳遞第二個參數,則作為key的增量

參數

key: string
value: int key的增量(僅對incrBy有效)

返回值

int: 自增后的值

示例
$redis->incr("key1"); // 若 key1 不存在,自增前默認為 0 ,然后自增 1
$redis->incr("key1"); // 2
$redis->incr("key1"); // 3
$redis->incr("key1"); // 4

// 將調用INCRBY
$redis->incr("key1", 10); // 14
$redis->incr("key1", 10); // 24
incrByFloat

key所儲存的值加上給定的浮點增量值

參數

key: string
value: float 增量

返回值

float: 自增后的值

示例
$redis->incrByFloat("key1", 1.5); // 1.5

$redis->incrByFloat("key1", 1.5); // 3
$redis->incrByFloat("key1", -1.5); // 1.5
$redis->incrByFloat("key1", 2.5); // 4
decr, decrBy

key的值自減 1,如果傳遞第二個參數,將該參數作為減量

參數

key: string
value: int key的減量(僅對decrBy有效)

返回值

int: 自減后的值

示例
$redis->decr("key1"); // key1不存在,初始化為0,然后自減

$redis->decr("key1"); // -2
$redis->decr("key1"); // -3

// 將調用DECRBY
$redis->decr("key1", 10); // -13
$redis->decr("key1", 10); // -23
mGet, getMultiple

獲取所有(一個或多個)給定key的值,如果有一個或多個key不存在,對應的key值為FALSE

參數

keys: array key列表

返回值

array: keys對應的值

示例
$redis->set("key1", "value1");
$redis->set("key2", "value2");
$redis->set("key3", "value3");
$redis->mGet(array("key1", "key2", "key3")); // array("value1", "value2", "value3");

$redis->mGet(array("key0", "key1", "key5")); // array("FALSE", "value1", "FALSE");
getSet

將給定key的值設為value,并返回key的舊值

參數

Key: string

返回值

string: key的舊值

示例
$redis->set("x", "42");
$exValue = $redis->getSet("x", "lol"); // 返回 "42", key 的值替換為 "lol"
$newValue = $redis->get("x"); // 返回 "lol"
randomKey

從當前數據庫中隨機返回一個key

參數

返回值

string: 隨機的一個key

示例
$key = $redis->randomKey();
$surprise = $redis->get($key);
move

將當前數據庫的key移動到給定的數據庫當中

參數

Key: string 待移動的key
dbindex: int 數據庫索引

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->select(0); // 切換到數據庫 0
$redis->set("x", "42"); // 設置 x 值為 "42"
$redis->move("x", 1); // 移動 x 到數據庫 1
$redis->select(1); // 切換到數據庫 1
$redis->get("x"); // 返回 "42"
rename, renameKey

修改key的名稱

參數

srckey: string 舊名稱
dstkey: string 新名稱

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->set("x", "42");
$redis->rename("x", "y");
$redis->get("y"); // 42
$redis->get("x"); // FALSE
renameNx

僅當新key不存在時,將key改名為新的key

expire, setTimeout, pexpire

為給定key設置過期時間,以秒計(pexpire為毫秒)

參數

Key: string
ttl: int key存活時長

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->set("x", "42");
$redis->setTimeout("x", 3); // x 在 3s 后過期
sleep(5);
$redis->get("x"); // 返回 FALSE
expireAt, pexpireAt

key的過期時間設置為unix時間戳

參數

Key: string
timestamp: int Unix時間戳,key的過期時間

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->set("x", "42");
$now = time(NULL);
$redis->expireAt("x", $now + 3); // x 在 3s 后過期
sleep(5);
$redis->get("x"); // 返回 FALSE
keys, getKeys

查找所有符合給定模式(pattern)的key

參數

pattern: string 使用*作為通配符

返回值

array: 與特定模式匹配的key

示例
$allKeys = $redis->keys("*"); // 匹配所有 key
$keyWithUserPrefix = $redis->keys("user*");
scan

掃描所有key

參數

iterator: int 迭代次數的引用,初始值為NULL
pattern: string 可選,匹配模式
count: int 可選,每次迭代的key的數量

返回值

array/boolean: 返回keys數組,如果Rediskey數量為 0,返回FALSE

示例
// 默認不啟用 Redis::SCAN_RETRY
$it = NULL;
do {
    // 掃描 keys
    $arr_keys = $redis->scan($it);
    // 返回值可能為空,預防這種情形
    if ($arr_keys !== FALSE) {
        foreach ($arr_keys as $str_key) {
            echo "Here is a key: $str_key
";
        }
    }
} while ($it > 0);
echo "No more keys to scan!
";

// 啟用 Redis::SCAN_RETRY
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
$it = NULL;
// 如果返回值為空,phpredis 會再次執行 SCAN,因此不需要檢查結果是否為空
while ($arr_keys = $redis->scan($it)) {
    foreach ($arr_keys as $str_key) {
        echo "Here is a key: $str_key
";
    }
}
echo "No more keys to scan!
";
object

獲取key對象信息

參數

info: string 需要獲取的key信息,可以為下列值:

encoding

refcount

idletime

返回值

string/int/boolean: encoding返回stringrefcount返回int,如果為idletime,key不存在時返回FALSE

示例
$redis->object("encoding", "l"); // ziplist
$redis->object("refcount", "l"); // 1
$redis->object("idletime", "1"); // 400s,精度為10s
type

返回key所儲存的值的類型

參數

Key: string

返回值

string
根據key值的數據類型,此方法返回以下值:
string: Redis::REDIS_STRING
set: Redis::REDIS_SET
list: Redis::REDIS_LIST
zset: Redis::REDIS_ZSET
hash: Redis::REDIS_HASH
other: Redis::REDIS_NOT_FOUND

示例
$redis->type("key");
append

追加一個值到key

參數

Key: string
Value: string

返回值

int: 追加指定值之后,key中字符串的長度

示例
$redis->set("key", "value1");
$redis->append("key", "value2"); // 返回 12
$redis->get("key"); // "value1value"
getRange

返回key中字符串值的子字符串

參數

key: string
start: int
end: int

返回值

string: 子字符串

示例
$redis->set("key", "string value");
$redis->getRange("key", 0, 5); // "string"
$redis->getRange("key", -5, -1); // "value"
setRange

從指定偏移量開始,覆寫給定key所儲存的字符串值

參數

key: string
offset: int
value: string

返回值

int: 修改后的字符串長度

示例
$redis->set("key", "Hello world");
$redis->setRange("key", 6, "redis"); // 返回 11
$redis->get("key"); // "Hello redis"
strLen

返回key所儲存的字符串值的長度

參數

key: string

返回值

int

示例
$redis->set("key", "value");
$redis->strLen("key"); // 5
getBit

key所儲存的字符串值,獲取指定偏移量上的位(bit)

參數

key: string
offset: int

返回值

int: 指定位上的值(0 或 1)

示例
$redis->set("key", "x7f"); // 0111 1111
$redis->getBit("key", 0); // 0
$redis->getBit("key", 1); // 1
setBit

key所儲存的字符串值,設置或清除指定偏移量上的位(bit)

參數

key: string
offset: int
value: int 1 或 0

返回值

int: 0 或 1,設置之前的位值

示例
$redis->set("key", "*"); // ord("*") = 42 = 0x2a = "0010 1010"
$redis->setBit("key", 5, 1); // 返回 0
$redis->setBit("key", 7, 1); // 返回 0
$redis->get("key"); // chr(0x2f) = "/" = b("0010 1111")
bitOp

在字符串之間執行按位運算

參數

operation: string AND, OR, NOT, XOR
ret_key: string 目標key
key: string
key2...: string

返回值

int: 存儲在目標key中的字符串長度

bitCount

統計指定位區間上,值為 1 的位的個數

參數

key: string

返回值

int: 返回key值的所有位中,值為 1 的位的個數

sort

對列表、集合或有序集中的元素進行排序

參數

Key: string
Options: array array(key => value, ...) - 可選,使用以下鍵值對:

"by" => "some_pattern_*",
"limit" => array(0, 1),
"get" => "some_other_pattern_*" 或 patterns 數組
"sort" => "asc"/"desc",
"alpha" => TRUE,
"store" => "external-key"
返回值

array: key值數組,或存儲的元素個數

示例
$redis->delete("s");
$redis->sAdd("s", 5);
$redis->sAdd("s", 4);
$redis->sAdd("s", 2);
$redis->sAdd("s", 1);
$redis->sAdd("s", 3);

var_dump($redis->sort("s")); // 1, 2, 3, 4, 5
var_dump($redis->sort("s", array("sort" => "desc"))); // 5, 4, 3, 2, 1
var_dump($redis->sort("s", array("sort" => "desc", "store" => "out"))); // (int) 5
ttl, pttl

獲取key的剩余的過期時間,秒數(ttl),毫秒數(pptl)

參數

Key: string

返回值

int: key的過期時間。如果key沒有過期時間,返回-1key不存在,返回-2

示例
$redis->ttl("key");
persist

移除key的過期時間,key將持久保持

參數

Key: string

返回值

boolean: 成功移除過期時間,返回TRUEkey不存在,或沒有過期時間,返回FALSE;

示例
$redis->persist("key");
mSet, mSetNx

同時設置一個或多個 key-value

參數

Pairs: array array(key => value, ...)

返回值

boolean: 成功返回TRUE,失敗返回FALSE

示例
$redis->mSet(array("key0" => "value0", "key1" => "value1"));
var_dump($redis->get("key0")); // string(6) "value0"
var_dump($redis->get("key1")); // string(6) "value1"
dump

序列化給定key,并返回被序列化的值

參數

key string

返回值

string/boolean: 返回序列化之后的值,如果key不存在,返回FALSE

示例
$redis->set("foo", "bar");
$val = $redis->dump("foo");
restore

用通過 dump 獲得的序列化值創建一個key

參數

key: string
ttl: integer key的存活時間,為 0 時不設置過期時間
value: string dump獲得的序列化值

示例
$redis->set("foo", "bar");
$val = $redis->dump("foo");
$redis->restore("bar", 0, $val); // "bar"的值不等于"foo"的值
migrate

key從一個Redis實例轉移到另一個實例

參數

host:string 目標域名
port: int 要連接的TCP端口
key(s): string/array
destination-db: int 目標數據庫
timeout: int 轉移超時時間
copy: boolean 可選,是否復制
replace: boolean 是否替換

示例
$redis->migrate("backup", 6379, "foo", 0, 3600);
$redis->migrate("backup", 6379, "foo", 0, 3600, true, true); // 復制和替換
$redis->migrate("backup", 6379, "foo", 0, 3600, false, true); // 僅替換

// 轉移多個 key,要求 Redis >= 3.0.6
$redis->migrate("backup", 6379, ["key1", "key2", "key3"], 0, 3600);
Redis 哈希

hDel - 刪除一個或多個哈希表字段

hExists - 查看哈希表中,指定的字段是否存在

hGet - 獲取存儲在哈希表中指定字段的值

hGetAll - 獲取在哈希表中的所有字段和值

hIncrBy - 為哈希表中的指定字段的整數值加上增量

hIncrByFloat - 為哈希表中的指定字段的浮點數值加上增量

hKeys - 獲取哈希表中的所有字段名

hLen - 獲取哈希表中字段的數量

hMGet - 獲取所有給定字段的值

hMSet - 同時為哈希表中的多個字段賦值

hSet - 為哈希表中的一個字段賦值

hSetNx - 只有在字段不存在時,設置哈希表字段的值

hVals - 獲取哈希表中所有值

hScan - 迭代哈希表中的鍵值對

hStrLen - 獲取哈希表中,字段值的長度

hSet

為哈希表中的一個字段賦值

參數

key: string
hashkey: string
value: string

返回值

int/false: 如果字段是哈希表中的一個新建字段,并且值設置成功,返回 1 。 如果哈希表中域字段已經存在且舊值已被新值覆蓋,返回 0 。出錯時返回FALSE

示例
$redis->delete("h");
$redis->hSet("h", "key1", "hello"); // 返回 1,"key` => "hello"
$redis->hGet("h", "key1"); // 返回 "hello"

$redis->hSet("h", "key1", "plop"); // 替換字段值,返回 0
$redis->hGet("h", "key1"); // 返回 "plop"
hSetNx

只有在字段不存在時,設置哈希表字段的值

返回值

boolean: 成功返回TRUE,字段已存在則返回FALSE

示例
$redis->delete("h");
$redis->hSetNx("h", "key1", "hello"); // TRUE
$redis->hSetNx("h", "key1", "world"); // FALSE
hGet

獲取存儲在哈希表中指定字段的值,如果哈希表或key不存在,返回FALSE

參數

key: string
hashKey: string

返回值

string/boolean: 成功時返回字段的值,失敗返回FALSE

hLen

獲取哈希表中字段的數量

參數

key: string

返回值

int: 哈希表中字段的數量,如果key不存在或非哈希表,返回FALSE

示例
$redis->delete("h");
$redis->hSet("h", "key1", "hello");
$redis->hSet("h", "key2", "plop");
$redis->hLen("h"); // 返回 2
hDel

刪除一個或多個哈希表字段,如果哈希表或key不存在,返回FALSE

參數

key: string
hashKey1: string
hashKey2: string

返回值

int/boolean: 被刪除的字段數量,key不存在時返回 0,key非哈希則返回FALSE

hKeys

獲取哈希表中的所有字段名,返回字符串數組

參數

Key: string

返回值

array: 哈希表中所有字段名稱組成的數組,類似PHP中的array_keys()

示例
$redis->delete("h");
$redis->hSet("h", "a", "x");
$redis->hSet("h", "b", "y");
$redis->hSet("h", "c", "z");
$redis->hSet("h", "d", "t");
var_dump($redis->hKeys("h"));

/*
輸出
array(4) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
  [3]=>
  string(1) "d"
}
*/

字段的順序是隨機的,對應于Redis集合的內部排序

hVals

獲取哈希表中所有值,返回字符串數組

參數

Key: string

返回值

array: 哈希表中所有字段值組成的數組,類似PHP中的array_values()

示例
$redis->delete("h");
$redis->hSet("h", "a", "x");
$redis->hSet("h", "b", "y");
$redis->hSet("h", "c", "z");
$redis->hSet("h", "d", "t");
var_dump($redis->hVals("h"));
/*
輸出
array(4) {
  [0]=>
  string(1) "x"
  [1]=>
  string(1) "y"
  [2]=>
  string(1) "z"
  [3]=>
  string(1) "t"
}
*/

字段的順序是隨機的,對應于Redis集合的內部排序

hGetAll

獲取在哈希表中的所有字段和值

參數

Key: string

返回值

array: 關聯數組,哈希表的字段名稱為鍵名,字段值為鍵值

示例
$redis->delete("h");
$redis->hSet("h", "a", "x");
$redis->hSet("h", "b", "y");
$redis->hSet("h", "c", "z");
$redis->hSet("h", "d", "t");
var_dump($reids->hGetAll("h"));
/*
輸出
array(4) {
  ["a"]=>
  string(1) "x"
  ["b"]=>
  string(1) "y"
  ["c"]=>
  string(1) "z"
  ["d"]=>
  string(1) "t"
}
*/
hExists

查看哈希表中,指定的字段是否存在

參數

key: string
memberKey: string

返回值

boolean: 若哈希表中,指定字段存在,返回TRUE,否則返回FALSE

示例
$redis->hSet("h", "a", "x");
$redis->hExists("h", "a"); // TRUE
$redis->hExists("h", "NonExistingKey"); // FALSE
hIncrBy

為哈希表中的指定字段的整數值加上增量

參數

key: string
member: string
value: int 字段的增量

返回值

int: 自增后的字段值

示例
$redis->delete("h");
$redis->hIncrBy("h", "x", 2); // 返回 2,h[x] = 2
$redis->hIncrBy("h", "x", 1); // h[x] = 2 + 1,返回 2
hIncrByFloat

為哈希表中的指定字段的浮點數值加上增量

參數

key: string
member: string
value: float 字段的浮點值增量

返回值

float: 自增后的字段值

示例
$redis->delete("h");
$redis->hIncrByFloat("h", "x", 1.5); // 返回 1.5,h[x] = 1.5
$redis->hIncrByFloat("h", "x", 1.5); // 返回 3.0,h[x] = 3.0
$redis->hIncrByFloat("h", "x", -3.0); // 返回 0.0,h[x] = 0.0
hMSet

同時為哈希表中的多個字段賦值,非字符串值將被轉換為字符串,NULL值轉化為空字符串

參數

key: string
members: array key => value數組

返回值

boolean

示例
$redis->delete("user:1");
$redis->hMSet("user:1", array("name" => "Joe", "salary" => 2000));
$redis->hIncrBy("user:1", "salary", 100);
hMGet

獲取所有給定字段的值

參數

key: string
memberKeys array

返回值

array: 字段名稱為鍵名,字段值為鍵值的數組

示例
$redis->delete("h");
$redis->hSet("h", "field1", "value1");
$redis->hSet("h", "field2", "value2");
$redis->hMGet("h", ["field1", "field2"]); // 返回 array("field1" => "value1", "field2" => "value2")
hScan

迭代哈希表中的鍵值對

參數

key: string
iterator: int 迭代次數的引用
pattern: string 可選,匹配模式
count: int 每次返回的字段數

返回值

array: 與給定模式匹配的元素組成的數組

示例
$it = NULL;
// 在迭代完成之前,不返回空值
$redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
while ($arr_keys = $redis->hScan("hash", $it)) {
    foreach ($arr_keys as $str_field => $str_value) {
        echo "$str_field => $str_value
";
    }
}
hStrLen

獲取哈希表中,字段值的長度

參數

key: string
field: string

返回值

int: 字段值的長度,哈希表或字段不存在時,返回 0

Redis 列表

blPop, brPop - 移出并獲取列表的第一個/最后一個元素

bRPopLPush - 從列表中彈出一個值,將彈出的元素插入到另外一個列表中并返回它

lIndex, lGet - 通過索引獲取列表中的元素

lInsert - 在列表的元素前或者后插入元素

lLen, lSize - 獲取列表長度

lPop - 移出并獲取列表的第一個元素

lPush - 將一個或多個值插入到列表頭部

lPushX - 將一個值插入到已存在的列表頭部

lRange, lGetRange - 獲取列表指定范圍內的元素

lRem, lRemove - 移除列表元素

lSet - 通過索引設置列表元素的值

lTrim, listTrim - 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除

rPop - 移除并獲取列表最后一個元素

rPopLPush - 移除列表的最后一個元素,并將該元素添加到另一個列表并返回

rPush - 在列表中添加一個或多個值

rPushX - 為已存在的列表添加值

blPop, brPop

移出并獲取列表的第一個/最后一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止

參數

keys: array 包含列表中key的數組
timeout: int 超時時間

key: string
key2: string
key3: string
...
keyn: string
timeout: int 超時時間

返回值

array: array("listName", "element")

示例
// 非阻塞
$redis->lPush("key1", "A");
$redis->delete("key2");

$redis->blPop("key1", "key2", 10); // array("key1", "A")
// 或
$redis->blPop(["key1", "key2"], 10); // array("key1", "A")

$redis->brPop("key1", "key2", 10); // array("key1", "A");
// 或
$redis->brPop(["key1", "key2"], 10); // array("key1", "A")

// 阻塞
// 進程 1
$redis->delete("key1");
$redis->blPop("key1", 10); // 阻塞 10s

// 進程 2
$redis->lPush("key1", "A")

// 進程 1
// 返回 array("key1", "A")
bRPopLPush

rPopLPush的阻塞版本,第三個參數為等待超時時間

參數

srcKey: string
dstKey: string
timeout: int 超時時間

返回值

string/boolean: 返回被移除的元素,等待超時則返回FALSE

lIndex, lGet

返回列表中,指定位置的元素

0 指第一個元素,1 指第二個元素...
-1 指最后一個元素,-2 指倒數第二個元素

如果key未指向列表,或索引值無效,返回FALSE

參數

key: string
index: int

返回值

string/boolean: 返回指定索引處的元素。如果索引對應的元素不存在,或非字符串類型,返回FALSE

示例
$redis->rPush("key1", "A");
$redis->rPush("key1" ,"B");
$redis->rPush("key1", "C"); // key1 => ["A", "B", "C"]
$redis->lGet("key1", 0); // "A"
$redis->lGet("key1", -1); // "C"
$redis->lGet("key1", 10); // FALSE
lInsert

在列表的元素前或者后插入元素

當列表不存在,或指定元素不存在與列表中時,不執行任何操作

參數

key: string
position: string Redis::BEFORE | Redis::AFTER
pivot: string
value: string

返回值

int: 返回插入操作完成之后,列表的長度。如果沒有找到指定元素,返回 -1

示例
$redis->delete("key1");
$redis->lInsert("key1", Redis::AFTER, "A", "X"); // 0

$redis->lPush("key1", "A");
$redis->lPush("key1", "B");
$redis->lPush("key1", "C");

$redis->lInsert("key1", Redis::BEFORE, "C", "X"); // 4
$redis->lRange("key1", 0, -1); // array("A", "B", "X", "C")

$redis->lInsert("key1", Redis::AFTER, "C", "Y"); // 5
$redis->lRange("key1", 0, -1); // array("A", "B", "X", "C", "Y")

$redis->lInsert("key1", Redis::AFTER, "W", "value"); // -1
lPop

移出并獲取列表的第一個元素

參數

key: string

返回值

string/boolean: 返回列表的第一個元素,失敗時(空列表)返回FALSE

示例
$redis->rPush("key1", "A");
$redis->rPush("key1", "B");
$redis->rPush("key1", "C"); // key1 => ["A", "B", "C"]
$redis->lPop("key1"); // key1 => ["B", "C"]
lPush

將一個或多個值插入到列表頭部。如果key不存在,一個空列表會被創建并執行lPush操作。當key存在但不是列表類型時,返回FALSE

參數

key: string
value: string 要插入到列表中的字符串

返回值

int: 返回執行插入操作后,列表的長度。失敗時返回FALSE

示例
$redis->delete("key1");
$redis->lPush("key1", "C"); // 返回 1
$redis->lPush("key1", "B"); // 返回 2
$redis->lPush("key1", "A"); // 返回 3
// key1 現在指向列表: ["A", "B", "C"]
lPushX

將一個值插入到已存在的列表頭部

參數

key: string
value: string 要插入到列表中的字符串

返回值

int: 返回執行插入操作后,列表的長度。失敗時返回FALSE

示例
$redis->delete("key1");
$redis->lPushX("key1", "A"); // 返回 0
$redis->lPush("key1", "A"); // 返回 1
$redis->lPushX("key1", "B"); // 返回 2
$redis->lPushX("key1", "C"); // 返回 3
// key1 現在指向列表: ["A", "B", "C"]
lRange, lGetRange

返回列表中指定區間內的元素,區間以偏移量startend指定。
其中 0 表示列表的第一個元素, 1 表示列表的第二個元素...
以 -1 表示列表的最后一個元素, -2 表示列表的倒數第二個元素...

參數

key: string
start: int
end: int

返回值

array: 包含指定區間內元素的數組

示例
$redis->rPush("key1", "A");
$redis->rPush("key1", "B");
$redis->rPush("key1", "C");
$redis->lRange("key1", 0, -1); // array("A", "B", "C")
lRem, lRemove

根據參數count的值,移除列表中與參數value相等的元素。
如果count = 0,移除表中所有與value相等的值;
如果count < 0,從表尾開始向表頭搜索,移除與value相等的元素,數量為count的絕對值;
如果count > 0,從表頭開始向表尾搜索,移除與value相等的元素,數量為count

參數

key: string
value: string
count: int

返回值

int/boolean: 返回被移除元素的數量。列表不存在時返回FALSE

示例
$redis->lPush("key1", "A");
$redis->lPush("key1", "B");
$redis->lPush("key1", "C");
$redis->lPush("key1", "A");
$redis->lPush("key1", "A");

$redis->lRange("key1", 0, -1); // array("A", "A", "C", "B", "A")
$redis->lRem("key1", "A", 2); // 2
$redis->lRange("key1", 0, -1); // array("C", "B", "A")
lSet

通過索引設置列表元素的值

參數

key: string
index: int
value: string

返回值

boolean: 操作成功返回TRUE。如果索引超出范圍,或者key不指向列表,返回FALSE

示例
$redis->rPush("key1", "A");
$redis->rPush("key1", "B");
$redis->rPush("key1", "C"); // key1 => ["A", "B", "C"]
$redis->lGet("key1", 0); // "A"
$redis->lSet("key1", 0, "X");
$redis->lGet("key1", 0); // "X"
lTrim, listTrim

對一個列表進行修剪(trim),讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除

參數

key: string
start: int
stop: int

返回值

array: 返回列表中剩余元素組成的數組。如果key值不是列表,返回FALSE

示例
$redis->rPush("key1", "A");
$redis->rPush("key1", "B");
$redis->rPush("key1", "C");
$redis->lRange("key1", 0, -1); // array("A", "B", "C")
$redis->lTrim("key1", 0, 1);
$redis->lRange("key1", 0, -1); // array("A", "B")
rPop

移除并獲取列表最后一個元素

參數

key: string

返回值

string: 返回被移除的元素。失敗(列表為空)返回FALSE

示例
$redis->rPush("key1", "A");
$redis->rPush("key1", "B");
$redis->rPush("key1", "C"); // key1 => ["A", "B", "C"]
$redis->rPop("key1"); // key1 => ["A", "B"]
rPopLPush

移除列表的最后一個元素,并將該元素添加到另一個列表并返回

參數

srcKey: string
dstKey: string

返回值

string: 返回被移除的元素。失敗返回FALSE

示例
$redis->delete("x", "y");

$redis->lPush("x", "abc");
$redis->lPush("x", "def");
$redis->lPush("y", "123");
$redis->lPush("y", "456");

var_dump($redis->rPopLPush("x", "y"));
var_dump($redis->lRange("x", 0, -1));
var_dump($redis->lRange("y", 0, -1));
/*
輸出
string(3) "abc"
array(1) {
  [0]=>
  string(3) "def"
}
array(3) {
  [0]=>
  string(3) "abc"
  [1]=>
  string(3) "456"
  [2]=>
  string(3) "123"
}
*/
rPush

將一個或多個值插入到列表的尾部(最右邊),如果列表不存在,一個空列表會被創建并執行rPush操作。 當列表存在但不是列表類型時,返回FALSE

參數

key: string
value: string 要插入到列表的字符串

返回值

int: 執行插入操作后,列表的長度。失敗返回FALSE

示例
$redis->delete("key1");
$redis->rPush("key1", "A"); // 返回 1
$redis->rPush("key1", "B"); // 返回 2
$redis->rPush("key1", "C"); // 返回 3
// key1 => ["A", "B", "C"]
rPushX

將一個值插入到已存在的列表尾部(最右邊)。失敗返回FALSE

參數

key: string
value: string 要插入到列表的字符串

返回值

int: 執行插入操作后,列表的長度。失敗返回FALSE

示例
$redis->delete("key1");
$redis->rPushX("key1", "A"); // 返回 0
$redis->rPush("key1", "A"); // 返回 1
$redis->rPushX("key1", "B"); // 返回 2
$redis->rPushX("key1", "C"); // 返回 3
// key1 => ["A", "B", "C"]
lLen, lSize

返回列表的長度。
如果列表key不存在或為空列表,返回 0 。如果key不是列表類型,返回FALSE

參數

Key: string

返回值

int: 返回列表的長度。如果key不是列表,返回FALSE

示例
$redis->rPush("key1", "A");
$redis->rPush("key1", "B");
$redis->rPush("key1", "C"); // key1 => ["A", "B", "C"]
$redis->lSize("key1"); // 3
$redis->rPop("key1");
$redis->lSize("key1"); // 2
Redis 集合

sAdd - 向集合添加一個或多個成員

sCard, sSize - 獲取集合的成員數

sDiff - 返回給定所有集合的差集

sDiffStore - 返回給定所有集合的差集并存儲在key

sInter - 返回給定所有集合的交集

sInterStore - 返回給定所有集合的交集并存儲在key

sIsMember, sContains - 判斷元素是否是集合的成員

sMembers, sGetMembers - 返回集合中的所有成員

sMove - 將元素從一個集合移動到另一個集合

sPop - 移除并返回集合中的一個或多個隨機元素

sRandMember - 返回集合中一個或多個隨機元素

sRem, sRemove - 移除集合中一個或多個成員

sUnion - 返回所有給定集合的并集

sUnionStore - 所有給定集合的并集存儲在key集合中

sScan - 迭代集合中的元素

sAdd

將一個或多個成員元素加入到集合中。如果元素已存在于集合中,返回FALSE

參數

key: string
value: string

返回值

int: 返回被添加到集合中的新元素的數量

示例
$redis->sAdd("key1", "member1"); // 1, key1 => {"member"}
$redis->sAdd("key1", "member2", "member3"); // 2, key1 => {"member1", "member2", "member3"}
$redis->sAdd("key1", "member2"); // 0, key1 => {"member1", "member2", "member3"}
sCard, sSize

返回集合中元素的數量

參數

key: string

返回值

int: 返回集合中元素的數量。 當集合key不存在時,返回 0

示例
$redis->sAdd("key1", "member1");
$redis->sAdd("key1", "member2");
$redis->sAdd("key1", "member3"); // key1 => {"member1", "member2", "member3"}
$redis->sCard("key1"); // 3
$redis->sCard("keyX); // 0
sDiff

返回給定集合之間的差集

參數

Keys: string key, key2, ..., keyN 指向集合的任意數量的key

*返回值`

array: 第一個集合與其他所有集合差集元素組成的數組

示例
$redis->delete("s0", "s1", "s2");

$redis->sAdd("s0", "1");
$redis->sAdd("s0", "2");
$redis->sAdd("s0", "3");
$redis->sAdd("s0", "4");

$redis->sAdd("s1", "1");
$redis->sAdd("s2", "3");

var_dump($redis->sDiff("s0", "s1", "s2"));
/*
返回所有存在于 s0,但既不存在于 s1 也不存在于 s2 中的元素
array(2) {
  [0]=>
  string(1) "4"
  [1]=>
  string(1) "2"
}
*/
sDiffStore

將給定集合之間的差集存儲在指定的集合中

參數

dstKey: string 用于存儲差集的key
keys: string key1, key2, ..., keyN 指向集合的任意數量的key

返回值

int: 返回差集中的元素數量。如果某個key不存在,返回FALSE

示例
$redis->delete("s0", "s1", "s2");

$redis->sAdd("s0", "1");
$redis->sAdd("s0", "2");
$redis->sAdd("s0", "3");
$redis->sAdd("s0", "4");

$redis->sAdd("s1", "1");
$redis->sAdd("s2", "3");

var_dump($redis->sDiffStore("dst", "s0", "s1", "s2"));
var_dump($redis->sMembers("dst"));
/*
返回所有存在于 s0,但既不存在于 s1 也不存在于 s2 中的元素
int(2)
array(2) {
  [0]=>
  string(1) "4"
  [1]=>
  string(1) "2"
}
*/
sInter

返回給定所有給定集合的交集

當給定集合當中有一個空集時,結果也為空集。如果某個key不存在,返回FALSE

參數

keys: string key1, key2, ..., keyN: string,指向集合的任意數量的key

返回值

array: 返回交集成員組成的數組。如果交集為空,返回空數組

示例
$redis->sAdd("key1", "val1");
$redis->sAdd("key1", "val2");
$redis->sAdd("key1", "val3");
$redis->sAdd("key1", "val4");

$redis->sAdd("key2", "val3");
$redis->sAdd("key2", "val4");

$redis->sAdd("key3", "val3");
$redis->sAdd("key3", "val4");

var_dump($redis->sInter("key1", "key2", "key3"));
/*
輸出
array(2) {
  [0]=>
  string(4) "val4"
  [1]=>
  string(4) "val3"
}
*/
sInterStore

將給定集合之間的交集存儲在指定的集合中

參數

dstKey: string 用于存儲交集的key
keys: string key, key2, ..., keyN 指向集合的任意數量的key

返回值

int: 返回存儲交集的集合的元素數量。如果某個key不存在,返回FALSE

示例
$redis->sAdd("key1", "val1");
$redis->sAdd("key1", "val2");
$redis->sAdd("key1", "val3");
$redis->sAdd("key1", "val4");

$redis->sAdd("key2", "val3");
$redis->sAdd("key2", "val4");

$redis->sAdd("key3", "val3");
$redis->sAdd("key3", "val4");

var_dump($redis->sInterStore("output", "key1", "key2", "key3"));
var_dump($redis->sMembers("output"));
/*
輸出
int(2)

array(2) {
  [0]=>
  string(4) "val4"
  [1]=>
  string(4) "val3"
}
*/
sIsMember, sContains

判斷成員元素是否是集合的成員

參數

key: string
value: string

返回值

boolean: 如果元素是集合的成員,返回TRUE。否則返回FALSE

示例
$redis->sAdd("key1", "member1");
$redis->sAdd("key1", "member2");
$redis->sAdd("key1", "member3"); // key1 => {"member1", "member2", "member3"}

$redis->sIsMember("key1", "member1"); // TRUE
$redis->sIsMember("key1", "memberX"); // FALSE
sMembers, sGetMembers

返回集合中的所有的成員

參數

Key: string

返回值

array: 集合中的所有成員組成的數組

示例
$redis->delete("s");
$redis->sAdd("s", "a");
$redis->sAdd("s", "b");
$redis->sAdd("s", "a");
$redis->sAdd("s", "c");
var_dump($redis->sMembers("s"));
/*
輸出
array(3) {
  [0]=>
  string(1) "c"
  [1]=>
  string(1) "a"
  [2]=>
  string(1) "b"
}
*/

順序隨機,對應于Redis集合內部的排序

sMove

將指定元素從當前集合移動到目標集合

參數

srcKey: string
dstKey: string
member: string

返回值

boolean: 操作成功返回TRUE。如果當前key或目標key不存在,或元素不存在于當前key中,返回FALSE

示例
$redis->sAdd("key1", "member11");
$redis->sAdd("key1", "member12");
$redis->sAdd("key1", "member13"); // key1 => {"member11", "member12", "member13"}
$redis->sAdd("key2", "member21");
$redis->sAdd("key2", "member22"); // key2 => {"member21", "member22"}
$redis->sMove("key1", "key2", "member13");
/*
key1 => {"member11", "member12"}
key2 => {"member21", "member22", "member13"}
*/
sPop

移除集合中的一個或多個隨機元素,返回移除的元素

參數

key: string
count: int 可選

返回值(不傳遞count參數)

string/boolean: 被移除的元素。集合不存在或為空,返回FALSE

返回值(傳遞count參數)

array/boolean: 被移除元素組成的數組。集合不存在時,返回空數組。key不是集合,返回FALSE

示例
$redis->sAdd("key1", "member1");
$redis->sAdd("key1", "member2");
$redis->sAdd("key1", "member3"); // key1 => {"member3", "member1", "member2"}
$redis->sPop("key1"); // "member1", key1 => {"member3", "member2"}
$redis->sPop("key1"); // "member3", key1 => {"member2"}

// 傳遞 count 參數
$redis->sAdd("key2", "member1", "member2", "member3");
$redis->sPop("key2", 3); // 返回所有成員,順序隨機
sRandMember

返回集合中的一個隨機元素

參數

key: string
count: int 可選

返回值

string/array/boolean:
不提供count參數:返回一個隨機元素(String)。
提供count參數:如果count為正數,且小于集合基數,返回一個包含count個元素的數組,數組中的元素各不相同。如果count大于等于集合基數,那么返回整個集合。如果count為負數,返回一個數組,數組中的元素可能會重復出現多次,而數組的長度為count的絕對值。集合不存在,返回FALSE

示例
$redis->sAdd("key1", "member1");
$redis->sAdd("key1", "member2");
$redis->sAdd("key1", "member3"); // key1 => {"member3", "member1", "member2"}

// 無 count 參數
$redis->sRandMember("key1"); // "member1", key1 => {"member3", "member1", "member2"}
$redis->sRandMember("key1"); // "member3", key1 => {"member3", "member1", "member2"}

// 有 count 參數
$redis->sRandMember("key1", 3); // 返回集合所有元           
               
                                           
                       
                 

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29612.html

相關文章

  • Lumen中使用速度更快的PhpRedis擴展(更新隊列驅動)

    摘要:發布,新增隊列驅動,緩存驅動移動至,使用老版本的需要修改中緩存驅動加載位置。目前支持根據獲取配置的基本讀寫等。和可以繼續使用自帶的驅動,兩者互不影響。下一步如有需要可以繼續完善這兩部分的驅動。 歡迎關注我的博客 http://targetliu.com Lumen的確是一款適合做API,速度很快的框架。但是在項目中使用Redis時發現Lumen默認使用的 predis/predis 會...

    kyanag 評論0 收藏0
  • 【redis學習二】多php版本下phpredis擴展安裝

    摘要:背景安裝完之后,需要安裝擴展,才能讓操作本機有多個版本,安裝過程中遇到的坑分享一下。四問題修復已修復,但是原因可能不太準確編譯報錯最初以為是多個版本生成問題,采用指定版本,指定位置。 背景:安裝完redis之后,需要安裝phpredis擴展,才能讓php操作redis;本機有多個php版本,安裝過程中遇到的坑分享一下。 一 下載 git上下載redis的擴展包 git clone ht...

    siberiawolf 評論0 收藏0
  • Linux php7.0安裝phpredis

    摘要:下載我用的瀏覽器右擊,點擊復制鏈接地址,在目錄下,使用網絡下載解壓下載好的文件配置使用命令行查找位置進解壓好的目錄里配置,在當前目錄輸入以下四條命令記下目錄,配置需要用到,也可以用命令查找查看安裝信息查看配置在文件里添加兩條信息存儲擴展 1、下載phpredis https://github.com/phpredis/p... 我用的chrome瀏覽器右擊tar.gz,點擊復制鏈接地址...

    YancyYe 評論0 收藏0
  • MAC下安裝php-redis擴展

    摘要:下載,地址下載完成得到移動到目錄中進入目錄解壓得到文件夾,將文件夾改名為進入文件夾執行若未安裝,則會報錯需要先安裝若未安裝,則另外百度安裝的方法安裝完之后,再執行,接著執行下面的代碼執行執行由于點幾開始本身關閉了對 下載php-redis,地址:https://nodeload.github.com/n... 下載完成得到phpredis-master.zip 移動到/usr/loca...

    zlyBear 評論0 收藏0

發表評論

0條評論

AdolphLWQ

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<