建立Redis
客戶端php
$redis = new Redis();
若是沒法訪問Redis
服務器,phpredis
拋出RedisException
異常,如Redis
服務關閉,Redis
主機過載等。除去服務器沒法訪問的情形(key
不存在,或無效命令等),phpredis
返回FALSE
redis
可用的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
服務器Redis
服務器(持久鏈接)鏈接到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延時重連
鏈接到Redis
實例,或重用pconnect
/popen
創建的鏈接app
使用close
命令或結束請求都不會關閉鏈接,直到php
進程結束。所以,在鏈接到同一臺redis
服務器的多臺服務器上使用持久鏈接時,要對大量的FD
錯誤有所防備,尤爲在redis
服務器端。dom
持久鏈接能夠經過host + port + timeout
或host + persistent_id
或unix socket + timeout
創建。異步
該特性不適用於多線程版本。多線程版本中,pconnect
和popen
的工做方式和非持久鏈接的工做方式相同。socket
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套接字,新鏈接
使用密碼驗證鏈接,密碼以純文本形式發送。
password
: string
boolean
: 驗證經過返回TRUE
,不然返回FALSE
$redis->auth('foobared');
切換到指定數據庫
dbindex
: int
數據庫索引
boolean
: 成功返回TRUE
,失敗返回FALSE
參考 move 方法
交換兩數據庫
db1
: int
db2
: int
boolean
: 成功返回TRUE
,失敗返回FALSE
注意:要求Redis >= 4.0.0
$redis->swapdb(0, 1); // 交換數據庫 0 和 1
斷開與Redis
實例的鏈接,除非使用pconnect
設置客戶端配置
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);
獲取客戶端配置
parameter name
parameter value
$redis->getOption(Redis::OPT_SERIALIZER); // 返回 Redis::SERIALIZER_NONE, Redis::SERIALIZER_PHP 或 Redis::SERIALIZER_IGBINARY
檢查鏈接狀態
無
string
: 成功返回+PONG
,失敗時拋出RedisException
異常
打印字符串
string
: string
要輸出的字符串
string
: 輸入的字符串
AOF(append-only file)
文件重寫操做Redis
服務器配置key
的數量key
key
Redis
服務器的各類信息和統計數值Redis
成功將數據保存到磁盤上的時間,以UNIX
時間戳格式表示redis
的慢日誌異步執行一個AOF(append-only file)
文件重寫操做
無
boolean
: 成功返回TRUE
,失敗返回FALSE
$redis->bgRewriteAOF();
在後臺異步保存當前數據庫的數據到磁盤
無
boolean
: 成功返回TRUE
,失敗返回FALSE
。若是正在執行save
操做,返回FALSE
$redis->bgSave();
獲取/設置Redis
服務器配置
operation
: string
GET
或SET
key
: string
value
: string
可選(僅針對SET
)
array
/boolean
: GET
返回關聯數組,SET
返回布爾值
$redis->config('GET', '*max-*entries*'); $redis->config('SET', 'dir', '/var/run/redis/dumps/');
返回當前數據庫的key
的數量
無
int
: 當前數據庫的key
的數量
$count = $redis->dbSize(); echo "Redis has $count keys\n";
刪除全部數據庫的全部key
無
boolean
: 始終返回TRUE
$redis->flushAll();
刪除當前數據庫的全部key
無
boolean
: 始終返回TRUE
$redis->flushDb();
獲取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信息
返回最近一次Redis
成功將數據保存到磁盤上的時間,以UNIX
時間戳格式表示
無
int
: UNIX
時間戳
$redis->lastSave();
重置 info 命令中的某些統計數據
清空如下統計信息:
Keyspace hits
Keyspace missed
Number of commands processed
Number of connections received
Number of expired keys
無
boolean
: 成功返回TRUE
,失敗返回FALSE
$redis->resetStat();
同步保存數據到硬盤
無
boolean
: 成功返回TRUE
,失敗返回FALSE
。若是save
操做正在執行,返回FALSE
$redis->save();
將當前服務器轉變爲指定服務器的從屬服務器
host
: string
port
: int
不傳遞參數表示終止從屬關係
boolean
: 成功返回TRUE
,失敗返回FALSE
$redis->slaveOf('10.0.1.7', 6379); $redis->slaveOf();
返回當前服務器時間
無
array
: 成功時返回一個關聯數組,數組的第一個元素是unix
時間戳秒數,第二個元素是微秒數
$redis->time();
管理redis
的慢日誌
Operation
: string
GET
、LEN
或RESET
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');
key
key
的值key
的值key
所儲存的字符串值,獲取指定偏移量上的位(bit
)key
中字符串值的子字符串key
的值設爲value
,並返回key
的舊值(old value
)key
的值key
所儲存的值加上給定的浮點增量值(increment
)key
的值key-value
對key
的值key
所儲存的字符串值,設置或清除指定偏移量上的位(bit
)key
賦值,並設置過時時間key
不存在時設置key
的值key
所儲存的字符串值key
所儲存的字符串值的長度key
key
,並返回被序列化的值key
是否存在key
設置過時時間key
的過時時間設置爲unix
時間戳pattern
)的key
key
key
從一個Redis
實例轉移到另外一個實例key
移動到給定的數據庫當中key
對象信息key
的過時時間,key
將持久保持key
key
的名稱key
不存在時,將key
更名爲新的key
名key
所儲存的值的類型key
的剩餘的過時時間key
獲取key
的值
key
: string
string
/boolean
: key
不存在時返回FALSE
,不然返回key
的值
$redis->get('key');
設置指定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));
爲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過時
只有在key
不存在時設置key
的值
key
: string
value
: string
boolean
: 成功返回TRUE
,失敗返回FALSE
$redis->setNx('key', 'value'); // 返回 TRUE $redis->setNx('key', 'value'); // 返回 FALSE
刪除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'));
檢查給定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
時,該方法僅接受一個參數,返回布爾值
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
將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
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
獲取全部(一個或多個)給定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');
將給定key
的值設爲value
,並返回key
的舊值
Key
: string
string
: key
的舊值
$redis->set('x', '42'); $exValue = $redis->getSet('x', 'lol'); // 返回 '42', key 的值替換爲 'lol' $newValue = $redis->get('x'); // 返回 'lol'
從當前數據庫中隨機返回一個key
無
string
: 隨機的一個key
值
$key = $redis->randomKey(); $surprise = $redis->get($key);
將當前數據庫的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'
修改key
的名稱
srckey
: string
舊名稱dstkey
: string
新名稱
boolean
: 成功返回TRUE
,失敗返回FALSE
$redis->set('x', '42'); $redis->rename('x', 'y'); $redis->get('y'); // 42 $redis->get('x'); // FALSE
僅當新key
不存在時,將key
更名爲新的key
名
爲給定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
將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
查找全部符合給定模式(pattern
)的key
pattern
: string
使用*
做爲通配符
array
: 與特定模式匹配的key
$allKeys = $redis->keys('*'); // 匹配全部 key $keyWithUserPrefix = $redis->keys('user*');
掃描全部key
iterator
: int
迭代次數的引用,初始值爲NULL
pattern
: string
可選,匹配模式count
: int
可選,每次迭代的key
的數量
array
/boolean
: 返回keys
數組,若是Redis
中key
數量爲 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\n"; } } } while ($it > 0); echo "No more keys to scan!\n"; // 啓用 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\n"; } } echo "No more keys to scan!\n";
獲取key
對象信息
info
: string
須要獲取的key
信息,能夠爲下列值:
encoding
refcount
idletime
string
/int
/boolean
: encoding
返回string
,refcount
返回int
,若是爲idletime
,key
不存在時返回FALSE
$redis->object('encoding', 'l'); // ziplist $redis->object('refcount', 'l'); // 1 $redis->object('idletime', '1'); // 400s,精度爲10s
返回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');
追加一個值到key
Key
: string
Value
: string
int
: 追加指定值以後,key
中字符串的長度
$redis->set('key', 'value1'); $redis->append('key', 'value2'); // 返回 12 $redis->get('key'); // 'value1value'
返回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'
從指定偏移量開始,覆寫給定key
所儲存的字符串值
key
: string
offset
: int
value
: string
int
: 修改後的字符串長度
$redis->set('key', 'Hello world'); $redis->setRange('key', 6, 'redis'); // 返回 11 $redis->get('key'); // 'Hello redis'
返回key
所儲存的字符串值的長度
key
: string
int
$redis->set('key', 'value'); $redis->strLen('key'); // 5
對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
對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')
在字符串之間執行按位運算
operation
: string
AND
, OR
, NOT
, XOR
ret_key
: string
目標key
key
: string
key2...
: string
int
: 存儲在目標key
中的字符串長度
統計指定位區間上,值爲 1 的位的個數
key
: string
int
: 返回key
值的全部位中,值爲 1 的位的個數
對列表、集合或有序集中的元素進行排序
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
獲取key
的剩餘的過時時間,秒數(ttl
),毫秒數(pptl
)
Key
: string
int
: key
的過時時間。若是key
沒有過時時間,返回-1
;key
不存在,返回-2
$redis->ttl('key');
移除key
的過時時間,key
將持久保持
Key
: string
boolean
: 成功移除過時時間,返回TRUE
;key
不存在,或沒有過時時間,返回FALSE
;
$redis->persist('key');
同時設置一個或多個 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"
序列化給定key
,並返回被序列化的值
key
string
string
/boolean
: 返回序列化以後的值,若是key
不存在,返回FALSE
$redis->set('foo', 'bar'); $val = $redis->dump('foo');
用經過 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'的值
將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);
爲哈希表中的一個字段賦值
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'
只有在字段不存在時,設置哈希表字段的值
boolean
: 成功返回TRUE
,字段已存在則返回FALSE
$redis->delete('h'); $redis->hSetNx('h', 'key1', 'hello'); // TRUE $redis->hSetNx('h', 'key1', 'world'); // FALSE
獲取存儲在哈希表中指定字段的值,若是哈希表或key
不存在,返回FALSE
key
: string
hashKey
: string
string
/boolean
: 成功時返回字段的值,失敗返回FALSE
獲取哈希表中字段的數量
key
: string
int
: 哈希表中字段的數量,若是key
不存在或非哈希表,返回FALSE
$redis->delete('h'); $redis->hSet('h', 'key1', 'hello'); $redis->hSet('h', 'key2', 'plop'); $redis->hLen('h'); // 返回 2
刪除一個或多個哈希表字段,若是哈希表或key
不存在,返回FALSE
key
: string
hashKey1
: string
hashKey2
: string
int
/boolean
: 被刪除的字段數量,key
不存在時返回 0,key
非哈希則返回FALSE
獲取哈希表中的全部字段名,返回字符串數組
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
集合的內部排序
獲取哈希表中全部值,返回字符串數組
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
集合的內部排序
獲取在哈希表中的全部字段和值
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" } */
查看哈希表中,指定的字段是否存在
key
: string
memberKey
: string
boolean
: 若哈希表中,指定字段存在,返回TRUE
,不然返回FALSE
$redis->hSet('h', 'a', 'x'); $redis->hExists('h', 'a'); // TRUE $redis->hExists('h', 'NonExistingKey'); // FALSE
爲哈希表中的指定字段的整數值加上增量
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
爲哈希表中的指定字段的浮點數值加上增量
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
同時爲哈希表中的多個字段賦值,非字符串值將被轉換爲字符串,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);
獲取全部給定字段的值
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')
迭代哈希表中的鍵值對
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\n"; } }
獲取哈希表中,字段值的長度
key
: string
field
: string
int
: 字段值的長度,哈希表或字段不存在時,返回 0
trim
),就是說,讓列表只保留指定區間內的元素,不在指定區間以內的元素都將被刪除移出並獲取列表的第一個/最後一個元素, 若是列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止
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')
rPopLPush
的阻塞版本,第三個參數爲等待超時時間
srcKey
: string
dstKey
: string
timeout
: int
超時時間
string
/boolean
: 返回被移除的元素,等待超時則返回FALSE
返回列表中,指定位置的元素
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
在列表的元素前或者後插入元素
當列表不存在,或指定元素不存在與列表中時,不執行任何操做
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
移出並獲取列表的第一個元素
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']
將一個或多個值插入到列表頭部。若是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']
將一個值插入到已存在的列表頭部
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']
返回列表中指定區間內的元素,區間以偏移量start
和end
指定。
其中 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')
根據參數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')
經過索引設置列表元素的值
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'
對一個列表進行修剪(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')
移除並獲取列表最後一個元素
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']
移除列表的最後一個元素,並將該元素添加到另外一個列表並返回
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
操做。 當列表存在但不是列表類型時,返回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']
將一個值插入到已存在的列表尾部(最右邊)。失敗返回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']
返回列表的長度。
若是列表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
key
中key
中key
集合中將一個或多個成員元素加入到集合中。若是元素已存在於集合中,返回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'}
返回集合中元素的數量
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
返回給定集合之間的差集
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" } */
將給定集合之間的差集存儲在指定的集合中
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" } */
返回給定全部給定集合的交集
當給定集合當中有一個空集時,結果也爲空集。若是某個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" } */
將給定集合之間的交集存儲在指定的集合中
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" } */
判斷成員元素是不是集合的成員
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
返回集合中的全部的成員
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
集合內部的排序
將指定元素從當前集合移動到目標集合
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'} */
移除集合中的一個或多個隨機元素,返回移除的元素
key
: string
count
: int
可選
string
/boolean
: 被移除的元素。集合不存在或爲空,返回FALSE
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); // 返回全部成員,順序隨機
返回集合中的一個隨機元素
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); // 返回集合全部元素組成的數組 $redis->sRandMember('key1', 2); // 返回集合中 2 個元素組成的數組 $redis->sRandMember('key1', -100); // 返回 100 個元素組成的數 $redis->sRandMember('empty-set', 100); // 返回空數組 $redis->sRandMember('not-a-set', 100); // 返回 FALSE
移除集合中的一個或多個成員元素,不存在的成員元素會被忽略
key
: string
member
: string
int
: 返回被成功移除的元素的數量
$redis->sAdd('key1', 'member1'); $redis->sAdd('key1', 'member2'); $redis->sAdd('key1', 'member3'); // key1 => {'member1', 'member2', 'member3'} $redis->sRem('key1', 'member2', 'member3'); // 返回 2, key1 => {'member1'}
返回給定集合的並集。不存在的集合key
被視爲空集
Keys
: string
key
, key2
, ..., keyN
任意數量指向集合的key
array
: 並集成員組成的數組
$redids->delete('s0', 's1', 's2'); $redis->sAdd('s0', '1'); $redis->sAdd('s0', '2'); $redis->sAdd('s1', '3'); $redis->sAdd('s1', '1'); $redis->sAdd('s2', '3'); $redis->sAdd('s2', '4'); var_dump($redis->sUnion('s0', 's1', 's2')); /* 返回存在於 s0、s1 或 s2 中的元素 array(4) { [0]=> string(1) "3" [1]=> string(1) "4" [2]=> string(1) "1" [3]=> string(1) "2" } */
將給定集合的並集存儲在指定的集合key
中
dstKey
: string
用於存儲並集的key
Keys
: string
key
, key2
, ..., keyN
任意數量指向集合的key
int
: 返回結果集中的元素數量。某個key
不存在則返回FALSE
$redis->delete('s0', 's1', 's2'); $redis->sAdd('s0', '1'); $redis->sAdd('s0', '2'); $redis->sAdd('s1', '3'); $redis->sAdd('s1', '1'); $redis->sAdd('s2', '3'); $redis->sAdd('s2', '4'); var_dump($redis->sUnionStore('dst', 's0', 's1', 's2')); var_dump($redis->sMembers('dst')); /* 返回存在於 s0、s1 或 s2 中的元素 int(4) array(4) { [0]=> string(1) "3" [1]=> string(1) "4" [2]=> string(1) "1" [3]=> string(1) "2" } */
迭代集合中的元素
Key
: string
待迭代的key
iterator
: int
(引用) 迭代次數pattern
: string
可選,匹配模式count
: int
每次迭代返回的元素數量
array
/boolean
: 返回元素數組或者FALSE
$it = NULL; $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); // 迭代完成前,不要返回空值 while ($arr_mems = $redis->sScan('set', $it, '*pattern*')) { foreach ($arr_mems as $str_mem) { echo "Member: $str_mem\n"; } } $it = NULL; $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); // 每次迭代都返回結果,不管結果是否爲空 while ($arr_mems = $redis->sScan('set', $it, '*pattern*') !== FALSE) { if (count($arr_mems) > 0) { foreach ($arr_mems as $str_mem) { echo "Member found: $str_mem\n"; } } else { echo "No members in this iteration, iterator value: $it\n"; } }
向有序集合添加一個或多個成員,或者更新已存在成員的分數
key
: string
score
: double
value
: string
int
: 成員添加成功返回 1,不然返回 0
$redis->zAdd('key', 1, 'val1'); $redis->zAdd('key', 0, 'val0'); $redis->zAdd('key', 5, 'val5'); $redis->zRange('key', 0, -1); // array(val0, val1, val5)
計算集合中元素的數量
key
: string
int
: 返回有序集的基數
$redis->zAdd('key', 0, 'val0'); $redis->zAdd('key', 2, 'val2'); $redis->zAdd('key', 10, 'val10'); $redis->zSize('key'); // 3
計算有序集合中指定分數區間的成員數量
key
: string
start
: float
end
: float
int
: 分數值在指定間的成員的數量
$redis->zAdd('key', 0, 'val0'); $redis->zAdd('key', 2, 'val2'); $redis->zAdd('key', 10, 'val10'); $redis->zCount('key', 0, 3); // 2
對有序集合中指定成員的分數加上增量
key
: string
value
: float
分數的增量member
: string
float
: 返回成員的新分數值
$redis->delete('key'); $redis->zIncrBy('key', 2.5, 'member1'); // key 或 member1 不存在,member1 的分數被初始化爲 0。如今 member1 的分數爲 2.5 $redis->zIncrBy('key', 1, 'member1'); // 3.5
keyOutput
: string
ZSetKeys
: array
Weights
: array
可選,權重,聚合操做以前,集合中全部元素的分數值先乘上權重aggregateFunction
: string
可選,SUM
或MIN
或MAX
,定義如何計算結果集中某個成員的分數值
int
: 保存到目標結果集的的成員數量
$redis->delete('k1'); $redis->delete('k2'); $redis->delete('k3'); $redis->delete('ko1'); $redis->delete('ko2'); $redis->delete('ko3'); $redis->delete('ko4'); $redis->zAdd('k1', 0, 'val0'); $redis->zAdd('k1', 1, 'val1'); $redis->zAdd('k1', 3, 'val3'); $redis->zAdd('k2', 2, 'val1'); $redis->zAdd('k2', 3, 'val3'); $redis->zInter('ko1', ['k1', 'k2']); // 2, ko1 => array('val1', 'val3') $redis->zInter('ko2', ['k1', 'k2'], [1, 1]); // 2, ko2 => array('val1', 'val3') // 使用 Weights 參數 $redis->zInter('ko3', ['k1', 'k2'], [1, 5], 'min'); // 2, ko3 => array('val1', 'val3') $redis->zInter('ko4', ['k1', 'k2'], [1, 5], 'max'); // 2, ko4 => array('val3', 'val1')
經過索引區間返回有序集合成指定區間內的成員
下標參數start
和stop
都以0
爲底,0
表示有序集第一個成員,以 1 表示有序集第二個成員,以此類推。
以 -1 表示最後一個成員, -2 表示倒數第二個成員,以此類推
key
: string
start
: int
end
: int
withscores
: bool
默認FALSE
array
: 指定區間內,帶有分數值(可選)的有序集成員的列表
$redis->zAdd('key1', 0, 'val0'); $redis->zAdd('key1', 2, 'val2'); $redis->aAdd('key1', 10, 'val10'); $redis->zRange('key1', 0, -1); // array('val0', 'val2', 'val10') // 帶上分值 $redis->zRange('key1', 0, -1, true); // array('val0' => 0, 'val2' => 2, 'val10' => 10)
返回有序集合中指定分數區間的成員列表。有序集成員按分數值遞增(從小到大,zRevRangeByScore
爲從大到小)次序排列
key
: string
start
: string
end
: string
options
: array
有兩種可用options
: withscores => TRUE
和limit => array($offset, $count)
array
: 指定區間內,帶有分數值(可選)的有序集成員的列表
$redis->zAdd('key', 0, 'val0'); $redis->zAdd('key', 2, 'val2'); $redis->zAdd('key', 10, 'val10'); $redis->zRangeByScore('key', 0, 3); // array('val0', 'val2') $redis->zRangeByScore('key', 0, 3, ['withscores' => TRUE]); // array('val0' => 0, 'val2' => 2) $redis->zRangeByScore('key', 0, 3, ['limit' => [1, 1]]); // array('val2') $redis->zRangeByScore('key', 0, 3, ['withscores' => TRUE, 'limit' => [1, 2]]); // array('val2' => 2)
經過字典區間返回有序集合的成員min
和max
參數必須以(
、[
開頭,或者爲-
和+
。
必須使用三個或五個參數調用該方法,不然將返回FALSE
key
: string
min
: string
max
: string
offset
: int
可選,起始位置limit
: int
可選,返回元素的個數
array
: 指定區間內的元素列表
foreach (['a', 'b', 'c', 'd', 'e', 'f', 'g'] as $c){ $redis->zAdd('key', 0, $c); } $redis->zRangeByLex('key', '-', '[c'); // array('a', 'b', 'c') $redis->zRangeByLex('key', '-', '(c'); // array('a', 'b') $redis->zRangeByLext('key', '-', '[c', 1, 2); // array('b', 'c')
返回有序集中指定成員的排名,排名以 0 開始。其中有序集成員按分數值遞增(從小到大,zRevRank
有大到小)順序排列
key
: string
member
: string
int
: 元素在集合中的排名
$redis->delete('z'); $redis->zAdd('key', 1, 'one'); $redis->zAdd('key', 2, 'two'); $redis->zRank('key', 'one'); // 0 $redis->zRank('key', 'two'); // 1 $redis->zRevRank('key', 'one'); // 1 $redis->zRevRank('key', 'two'); // 0
移除有序集合中的一個或多個成員
key
: string
member
: string
int
: 成功返回 1,失敗返回 0
$redis->zAdd('key', 0, 'val0'); $redis->zAdd('key', 2, 'val2'); $redis->zAdd('key', 10, 'val10'); $redis->zDelete('key', 'val2'); $redis->zRange('key', 0, -1); // array('val0', 'val10')
移除有序集合中給定的排名區間的全部成員
key
: string
start
: int
end
: int
int
: 被移除成員的數量
$redis->zAdd('key', 1, 'one'); $redis->zAdd('key', 2, 'two'); $redis->zAdd('key', 3, 'three'); $redis->zRemRangeByRank('key', 0, 1); // 2 $redis->zRange('key', 0, -1, ['withscores' => TRUE]); // array('three' => 3)
移除有序集合中給定的分數區間的全部成員
key
: string
start
: float
/string
end
: float
/string
int
: 被移除成員的數量
$redis->zAdd('key', 0, 'val0'); $redis->zAdd('key', 2, 'val2'); $redis->zAdd('key', 10, 'val10'); $redis->zRemRangeByScore('key', 0, 3); // 2
返回有序集中指定區間內的成員,經過索引,分數從高到底
下標參數start
和stop
都以0
爲底,0
表示有序集第一個成員,以 1 表示有序集第二個成員,以此類推。
以 -1 表示最後一個成員, -2 表示倒數第二個成員,以此類推
key
: string
start
: int
end
: int
withscores
: bool
默認FALSE
array
: 指定區間內,帶有分數值(可選)的有序集成員的列表
$redis->zAdd('key', 0, 'val0'); $redis->zAdd('key', 2, 'val2'); $redis->zAdd('key', 10, 'val10'); $redis->zRevRange('key', 0, -1); // array('val10', 'val2', 'val0') // 帶分數值 $redis->zRevRange('key', 0, -1, true); // array('val10' => 10, 'val2' => 2, 'val0' => 0)
返回有序集中,成員的分數值
key
: string
member
: string
float
$redis->zAdd('key', 2.5, 'val2'); $redis->zScore('key', 'val2'); // 2.5
計算給定的一個或多個有序集的並集,並存儲在新的key
中
keyOutput
: string
ZSetKeys
: array
Weights
: array
權重,聚合操做以前,集合的全部元素分數值乘上權重aggregateFunction
: string
SUM
、MIN
或MAX
,定義如何計算結果集中某個成員的分數值
int
: 保存到結果集的成員數量
$redis->delete('k1'); $redis->delete('k2'); $redis->delete('k3'); $redis->delete('ko1'); $redis->delete('ko2'); $redis->delete('ko3'); $redis->zAdd('k1', 0, 'val0'); $redis->zAdd('k1', 1, 'val1'); $redis->zAdd('k2', 2, 'val2'); $redis->zAdd('k2', 3, 'val3'); $redis->zUnion('ko1', ['k1', 'k2']); // 4, ko1 => array('val0', 'val1', 'val2', 'val3') // 使用 Weights 參數 $redis->zUnion('ko2', ['k1', 'k2'], [1, 1]); // 4, ko2 => array('val0', 'val1', 'val2', 'val3') $redis->zUnion('ko3', ['k1', 'k2'], array(5, 1)); // 4, ko3 => array('val0', 'val2', 'val3', 'val1')
迭代有序集合中的元素(包括元素成員和元素分值)
key
: string
iterator
: int
迭代次數的引用,初始值爲 0pattern
: string
可選,匹配模式
array
/boolean
: 返回符合匹配模式的元素集合,迭代完成時返回FALSE
$it = NULL; $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); while ($arr_matches = $redis->zScan('zset', $it, '*pattern*')) { foreach ($arr_matches as $str_mem => $f_score) { echo "key: $str_mem, Score: $f_score\n"; } }