phpredis

Redis 類和方法


用法

  1. Redis 類
  2. RedisException 類
  3. 預約義常量

Redis 類


建立Redis客戶端php

示例
$redis = new Redis();

RedisException 類


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

預約義常量


可用的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 鏈接

  1. connect, open - 鏈接到Redis服務器
  2. pconnect, popen - 鏈接到Redis服務器(持久鏈接)
  3. auth - 服務器驗證
  4. select - 切換數據庫
  5. swapdb - 交換兩個數據庫
  6. close - 關閉鏈接
  7. setOption - 設置客戶端配置
  8. getOption - 獲取客戶端配置
  9. ping - 查看服務是否運行
  10. 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創建的鏈接app

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

持久鏈接能夠經過host + port + timeouthost + persistent_idunix socket + timeout創建。異步

該特性不適用於多線程版本。多線程版本中,pconnectpopen的工做方式和非持久鏈接的工做方式相同。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套接字,新鏈接

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 服務器

  1. bgRewriteAOF - 異步執行一個AOF(append-only file)文件重寫操做
  2. bgSave - 在後臺異步保存當前數據庫的數據到磁盤
  3. config - 獲取/設置Redis服務器配置
  4. dbSize - 返回當前數據庫的key的數量
  5. flushAll - 刪除全部數據庫的全部key
  6. flushDb - 刪除當前數據庫的全部key
  7. info - 獲取Redis服務器的各類信息和統計數值
  8. lastSave - 返回最近一次Redis成功將數據保存到磁盤上的時間,以UNIX時間戳格式表示
  9. resetStat - 重置 info 命令中的某些統計數據
  10. save - 同步保存數據到硬盤
  11. slaveOf - 將當前服務器轉變爲指定服務器的從屬服務器
  12. time - 返回當前服務器時間
  13. 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\n";

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的選項(COMMANDSTSTSCPU等)

示例
$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\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";

object


獲取key對象信息

參數

info: string 須要獲取的key信息,能夠爲下列值:

  • encoding
  • refcount
  • idletime
返回值

string/int/boolean: encoding返回stringrefcount返回int,若是爲idletimekey不存在時返回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\n";
    }
}

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); // 返回集合全部元素組成的數組
$redis->sRandMember('key1', 2); // 返回集合中 2 個元素組成的數組
$redis->sRandMember('key1', -100); // 返回 100 個元素組成的數
$redis->sRandMember('empty-set', 100); // 返回空數組
$redis->sRandMember('not-a-set', 100); // 返回 FALSE

sRem, sRemove


移除集合中的一個或多個成員元素,不存在的成員元素會被忽略

參數

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'}

sUnion


返回給定集合的並集。不存在的集合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"
}
*/

sUnionStore


將給定集合的並集存儲在指定的集合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"
}
*/

sScan


迭代集合中的元素

參數

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";
    }
}

Redis 有序集和

  • zAdd - 向有序集合添加一個或多個成員,或者更新已存在成員的分數
  • zCard, zSize - 獲取有序集合的成員數
  • zCount - 計算在有序集合中指定區間分數的成員數
  • zIncrBy - 有序集合中對指定成員的分數加上增量
  • zInter - 計算給定的一個或多個有序集的交集並將結果集存儲在新的有序集合中
  • zRange - 經過索引區間返回有序集合成指定區間內的成員
  • zRangeByScore, zRevRangeByScore - 經過分數返回有序集合指定區間內的成員
  • zRangeByLex - 經過字典區間返回有序集合的成員
  • zRank, zRevRank - 返回有序集合中指定成員的索引
  • zRem, zDelete - 移除有序集合中的一個或多個成員
  • zRemRangeByRank, zDeleteRangeByRank - 移除有序集合中給定的排名區間的全部成員
  • zRemRangeByScore, zDeleteRangeByScore - 移除有序集合中給定的分數區間的全部成員
  • zRevRange - 返回有序集中指定區間內的成員,經過索引,分數從高到底
  • zScore - 返回有序集中,成員的分數值
  • zUnion - 計算給定的一個或多個有序集的並集,並存儲在新的有序集合中
  • zScan - 迭代有序集合中的元素(包括元素成員和元素分值)

zAdd


向有序集合添加一個或多個成員,或者更新已存在成員的分數

參數

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)

zCard, zSize


計算集合中元素的數量

參數

key: string

返回值

int: 返回有序集的基數

示例
$redis->zAdd('key', 0, 'val0');
$redis->zAdd('key', 2, 'val2');
$redis->zAdd('key', 10, 'val10');
$redis->zSize('key'); // 3

zCount


計算有序集合中指定分數區間的成員數量

參數

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

zIncrBy


對有序集合中指定成員的分數加上增量

參數

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

zInter


參數

keyOutput: string
ZSetKeys: array
Weights: array 可選,權重,聚合操做以前,集合中全部元素的分數值先乘上權重
aggregateFunction: string 可選,SUMMINMAX,定義如何計算結果集中某個成員的分數值

返回值

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')

zRange


經過索引區間返回有序集合成指定區間內的成員

下標參數startstop都以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)

zRangeByScore, zRevRangeByScore


返回有序集合中指定分數區間的成員列表。有序集成員按分數值遞增(從小到大,zRevRangeByScore爲從大到小)次序排列

參數

key: string
start: string
end: string
options: array 有兩種可用options: withscores => TRUElimit => 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)

zRangeByLex


經過字典區間返回有序集合的成員
minmax參數必須以([開頭,或者爲-+
必須使用三個或五個參數調用該方法,不然將返回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')

zRange, zRevRank


返回有序集中指定成員的排名,排名以 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

zRem, zDelete


移除有序集合中的一個或多個成員

參數

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')

zRemRangeByRank, zDeleteRangeByRank


移除有序集合中給定的排名區間的全部成員

參數

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)

zRemRangeByScore, zDeleteRangeByScore


移除有序集合中給定的分數區間的全部成員

參數

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

zRevRange


返回有序集中指定區間內的成員,經過索引,分數從高到底
下標參數startstop都以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)

zScore


返回有序集中,成員的分數值

參數

key: string
member: string

返回值

float

示例
$redis->zAdd('key', 2.5, 'val2');
$redis->zScore('key', 'val2'); // 2.5

zUnion


計算給定的一個或多個有序集的並集,並存儲在新的key

參數

keyOutput: string
ZSetKeys: array
Weights: array 權重,聚合操做以前,集合的全部元素分數值乘上權重
aggregateFunction: string SUMMINMAX,定義如何計算結果集中某個成員的分數值

返回值

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')

zScan


迭代有序集合中的元素(包括元素成員和元素分值)

參數

key: string
iterator: int 迭代次數的引用,初始值爲 0
pattern: 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";
    }
}
相關文章
相關標籤/搜索