SSDB PHP程序api文檔
SSDB PHP 客戶(hù)端 API 文檔
- @更新: 2014-11-05
SSDB 是一個(gè)高性能 NoSQL 數(shù)據(jù)庫(kù), 支持 zset 數(shù)據(jù)結(jié)構(gòu), 用于替代 Redis. 官方網(wǎng)站是 http://ssdb.io. 本文檔介紹了 SSDB 的 PHP 客戶(hù)端 API.
注意: SSDB 所使用的名詞 "hashmap", "hash", "map" 表示相同的意思.
類(lèi) SimpleSSDB
快速開(kāi)始
<?php include_once('SSDB.php'); try{ $ssdb = new SimpleSSDB('127.0.0.1', 8888); }catch(SSDBException $e){ die(LINE . ' ' . $e->getMessage()); } $ret = $ssdb->set('key', 'value'); if($ret === false){ // error! } echo $ssdb->get('key');
錯(cuò)誤處理
如果無(wú)法連接到 SSDB 服務(wù)器, SimpleSSDB 將拋出異常. 大多數(shù)的方法(除了少數(shù)幾個(gè)例外)通過(guò)返回 false
來(lái)標(biāo)明出錯(cuò). 所以要使用強(qiáng)制等于(===)來(lái)判斷返回值.
如果出現(xiàn)網(wǎng)絡(luò)錯(cuò)誤, 所有的方法將會(huì)拋出 SSDBException 異常.
注意: 因?yàn)閷?shí)現(xiàn)的原因, 請(qǐng)保證所有的參數(shù)加起來(lái)不超過(guò) 10MB 大小.
方法
SimpleSSDB::__construct
說(shuō)明
創(chuàng)建 SimpleSSDB 的實(shí)例, 并連接到 SSDB 服務(wù)器. 如果無(wú)法連接到服務(wù)器, 將拋出異常.
參數(shù)
host
- SSDB 服務(wù)器的主機(jī)名或者 IP.port
- SSDB 服務(wù)器的端口號(hào).timeout_ms
- 可選, 連接超時(shí)時(shí)間, 和發(fā)送接收數(shù)據(jù)的超時(shí)時(shí)間, 單位毫秒. 默認(rèn)是 2000 ms.
返回值
SimpleSSDB 的實(shí)例.
示例
$ssdb = new SimpleSSDB('127.0.0.1', 8888);
auth
Since: 1.7.0.0
說(shuō)明
配置密碼, 之后將用于向服務(wù)器校驗(yàn). 這個(gè)校驗(yàn)不是立即進(jìn)行的, 而是等你執(zhí)行第一條命令的時(shí)候才發(fā)給服務(wù)器. 注意, 密碼是明文傳輸?shù)?
參數(shù)
password
-
返回值
出錯(cuò)則返回 false
, 否則返回 null
.
示例
$ssdb->auth('very-strong-password');
set
說(shuō)明
設(shè)置指定 key 的值內(nèi)容.
參數(shù)
key
-value
-
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->set('key', 'value');
setx
說(shuō)明
設(shè)置指定 key 的值內(nèi)容, 同時(shí)設(shè)置存活時(shí)間.
參數(shù)
key
-value
-ttl
- 存活時(shí)間(秒)
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->setx('key', 'value', 60);
setnx
說(shuō)明
當(dāng) key 不存在時(shí), 設(shè)置指定 key 的值內(nèi)容. 如果已存在, 則不設(shè)置.
參數(shù)
key
-value
-
返回值
出錯(cuò)則返回 false
, 1: value 已經(jīng)設(shè)置, 0: key 已經(jīng)存在, 不更新.
示例
$ssdb->setnx('key', 'value');
expire
說(shuō)明
設(shè)置 key(只針對(duì) KV 類(lèi)型) 的存活時(shí)間.
參數(shù)
key
-ttl
- 存活時(shí)間(秒)
返回值
出錯(cuò)則返回 false
. 如果 key 存在并設(shè)置成功, 返回 1, 如果 key 不存在, 返回 0.
示例
$ssdb->expire('key', 60);
ttl
說(shuō)明
返回 key(只針對(duì) KV 類(lèi)型) 的存活時(shí)間.
參數(shù)
key
-
返回值
出錯(cuò)則返回 false
, 否則返回 key 的存活時(shí)間(秒), -1 表示沒(méi)有設(shè)置存活時(shí)間.
示例
$ssdb->ttl('key');
get
說(shuō)明
獲取指定 key 的值內(nèi)容.
參數(shù)
key
-
返回值
如果 key 不存在則返回 null
, 如果出錯(cuò)則返回 false
, 否則返回 key 對(duì)應(yīng)的值內(nèi)容.
示例
$ssdb->get('key');
getset
說(shuō)明
更新 key 對(duì)應(yīng)的 value, 并返回更新前的舊的 value.
參數(shù)
key
-value
-
返回值
如果 key 不存在則返回 null
, 如果出錯(cuò)則返回 false
, 否則返回 key 對(duì)應(yīng)的值內(nèi)容.
示例
$ssdb->getset('key', 'value');
del
說(shuō)明
刪除指定的 key.
參數(shù)
key
-
返回值
如果出錯(cuò)則返回 false
, 其它值表示正常. 你無(wú)法通過(guò)返回值來(lái)判斷被刪除的 key 是否存在.
示例
$ssdb->del('key');
incr
從 1.7.0.1 起, 如果 value 不能轉(zhuǎn)換成整數(shù), incr 會(huì)返回錯(cuò)誤.
說(shuō)明
使 key
對(duì)應(yīng)的值增加 num
. 參數(shù) num
可以為負(fù)數(shù). 如果原來(lái)的值不是整數(shù)(字符串形式的整數(shù)), 它會(huì)被先轉(zhuǎn)換成整數(shù).
參數(shù)
key
-num
- 可選, 必須是有符號(hào)整數(shù), 默認(rèn)是 1.
返回值
如果出錯(cuò)則返回 false
, 否則返回新的值.
示例
$ssdb->incr('key', 1);
exists
說(shuō)明
判斷指定的 key 是否存在.
參數(shù)
key
-
返回值
如果存在, 返回 true
, 否則返回 false
.
示例
$ssdb->exists('key');
getbit
說(shuō)明
獲取字符串內(nèi)指定位置的位值(BIT).
參數(shù)
key
-offset
- 位偏移
返回值
返回位值(0 或 1), 如果 key 不存在或者偏移超過(guò)活字符串長(zhǎng)度范圍, 返回 0.
示例
$ssdb->getbit('key', 9);
setbit
說(shuō)明
設(shè)置字符串內(nèi)指定位置的位值(BIT), 字符串的長(zhǎng)度會(huì)自動(dòng)擴(kuò)展.
參數(shù)
key
-offset
- 位偏移, 取值范圍 [0, 1073741824]val
- 0 或 1
返回值
返回原來(lái)的位值. 如果 val 不是 0 或者 1, 返回 false
.
示例
$ssdb->setbit('key', 9, 1);
bitcount
說(shuō)明
計(jì)算字符串的子串所包含的位值為 1 的個(gè)數(shù). 若 start
是負(fù)數(shù), 則從字符串末尾算起. 若 end
是負(fù)數(shù), 則表示從字符串末尾算起(包含). 類(lèi)似 Redis 的 bitcount
參數(shù)
key
-start
- 可選, 子串的字節(jié)偏移end
- 可選
返回值
返回位值為 1 的個(gè)數(shù). 出錯(cuò)返回 false
.
示例
$ssdb->bitcount('key', 2, 10);
countbit
說(shuō)明
計(jì)算字符串的子串所包含的位值為 1 的個(gè)數(shù). 若 start
是負(fù)數(shù), 則從字符串末尾算起. 若 size
是負(fù)數(shù), 則表示從字符串末尾算起, 忽略掉那么多字節(jié).
參數(shù)
key
-start
- 可選, 子串的字節(jié)偏移size
- 可選, 子串的長(zhǎng)度(字節(jié)數(shù)), 默認(rèn)為到字符串最后一個(gè)字節(jié)
返回值
返回位值為 1 的個(gè)數(shù). 出錯(cuò)返回 false
.
示例
$ssdb->countbit('key', 2, 10);
substr
說(shuō)明
獲取字符串的子串. 若 start
是負(fù)數(shù), 則從字符串末尾算起. 若 size
是負(fù)數(shù), 則表示從字符串末尾算起, 忽略掉那么多字節(jié)(類(lèi)似 PHP 的 substr()).
參數(shù)
key
-start
- 可選, int, 子串的字節(jié)偏移size
- 可選, int, 子串的長(zhǎng)度(字節(jié)數(shù)), 默認(rèn)為到字符串最后一個(gè)字節(jié)
返回值
字符串的子串.
示例
$ssdb->substr('key', 2, 10);
strlen
說(shuō)明
計(jì)算字符串的長(zhǎng)度(字節(jié)數(shù)).
參數(shù)
key
-
返回值
返回字符串的長(zhǎng)度, key 不存在則返回 0.
示例
$ssdb->strlen('key');
keys/rkeys
說(shuō)明
列出處于區(qū)間 (key_start, key_end] 的 key 列表.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
key_start
- 返回的起始 key(不包含), 空字符串表示 -inf.key_end
- 返回的結(jié)束 key(包含), 空字符串表示 +inf.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key 的數(shù)組.
示例
$ssdb->keys('a', 'z', 10);
scan
說(shuō)明
列出處于區(qū)間 (key_start, key_end] 的 key-value 列表.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
key_start
- 返回的起始 key(不包含), 空字符串表示 -inf.key_end
- 返回的結(jié)束 key(包含), 空字符串表示 +inf.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-value 的數(shù)關(guān)聯(lián)組.
示例
$ssdb->scan('a', 'z', 10);遍歷 key-value 對(duì)列表
$start = ''; $limit = 1000; while(1){ $kvs = $ssdb->scan($start, '', $limit); if(!$kvs){ break; } // do something on key-value pairs... $keys = array_keys(array_slice($kvs, -1, 1, true)); $max_key = $keys[0]; $start = $max_key; }
rscan
說(shuō)明
列出處于區(qū)間 (key_start, key_end] 的 key-value 列表, 反向順序.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
key_start
- 返回的起始 key(不包含), 空字符串表示 +inf.key_end
- 返回的結(jié)束 key(包含), 空字符串表示 -inf.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-value 的數(shù)關(guān)聯(lián)組.
示例
$ssdb->rscan('a', 'z', 10);
multi_set
說(shuō)明
批量設(shè)置一批 key-value.
參數(shù)
kvs
- 包含 key-value 的關(guān)聯(lián)數(shù)組 .
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->multi_set(array( 'a' => 1, 'b' => 2, ));
multi_get
說(shuō)明
批量獲取一批 key 對(duì)應(yīng)的值內(nèi)容.
參數(shù)
keys
- 包含 key 的數(shù)組 .
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-value 的關(guān)聯(lián)數(shù)組, 如果某個(gè) key 不存在, 則它不會(huì)出現(xiàn)在返回?cái)?shù)組中.
示例
$ssdb->multi_get(array('k1', 'k2'));
multi_del
說(shuō)明
批量刪除一批 key 和其對(duì)應(yīng)的值內(nèi)容.
參數(shù)
keys
- 包含 key 的數(shù)組 .
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->multi_del(array('k1', 'k2'));
hset
說(shuō)明
設(shè)置 hashmap 中指定 key 對(duì)應(yīng)的值內(nèi)容.
參數(shù)
name
- hashmap 的名字.key
- hashmap 中的 key.value
- key 對(duì)應(yīng)的值內(nèi)容.
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->hset('h', 'key', 'value');
hget
說(shuō)明
獲取 hashmap 中指定 key 的值內(nèi)容.
參數(shù)
name
- hashmap 的名字.key
- hashmap 中的 key.
返回值
如果 key 不存在則返回 null
, 如果出錯(cuò)則返回 false
, 否則返回 key 對(duì)應(yīng)的值內(nèi)容.
示例
$ssdb->hget('h', 'key');
hdel
說(shuō)明
獲取 hashmap 中的指定 key.
參數(shù)
name
- hashmap 的名字.key
- hashmap 中的 key.
返回值
如果出錯(cuò)則返回 false
, 其它值表示正常. 你無(wú)法通過(guò)返回值來(lái)判斷被刪除的 key 是否存在.
示例
$ssdb->hdel('h', 'key');
hincr
從 1.7.0.1 起, 如果 value 不能轉(zhuǎn)換成整數(shù), incr 會(huì)返回錯(cuò)誤.
說(shuō)明
使 hashmap 中的 key
對(duì)應(yīng)的值增加 num
. 參數(shù) num
可以為負(fù)數(shù). 如果原來(lái)的值不是整數(shù)(字符串形式的整數(shù)), 它會(huì)被先轉(zhuǎn)換成整數(shù).
參數(shù)
name
- hashmap 的名字.key
-num
- 可選, 必須是有符號(hào)整數(shù), 默認(rèn)是 1.
返回值
如果出錯(cuò)則返回 false
, 否則返回新的值.
示例
$ssdb->hincr('h', 'key', 1);
hexists
說(shuō)明
判斷指定的 key 是否存在于 hashmap 中.
參數(shù)
name
- hashmap 的名字.key
-
返回值
如果存在, 返回 true
, 否則返回 false
.
示例
$ssdb->hexists('h', 'key');
hsize
說(shuō)明
返回 hashmap 中的元素個(gè)數(shù).
參數(shù)
name
- hashmap 的名字.
返回值
出錯(cuò)則返回 false
, 否則返回元素的個(gè)數(shù), 0 表示不存在 hashmap(空).
示例
$ssdb->hsize('h');
hlist, hrlist
說(shuō)明
列出名字處于區(qū)間 (name_start, name_end] 的 hashmap.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
name_start
- 返回的起始名字(不包含), 空字符串表示 -inf.name_end
- 返回的結(jié)束名字(包含), 空字符串表示 +inf.limit
- 最多返回這么多個(gè)元素.
返回值
出錯(cuò)則返回 false
, 返回返回包含名字的數(shù)組.
示例
$ssdb->hlist('a', 'z', 10);
hkeys
說(shuō)明
列出 hashmap 中處于區(qū)間 (key_start, key_end] 的 key 列表.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
name
- hashmap 的名字.key_start
- 起始 key(不包含), 空字符串表示 -inf.key_end
- 結(jié)束 key(包含), 空字符串表示 +inf.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key 的數(shù)組.
示例
$ssdb->hkeys('h', 'a', 'z', 10);
hgetall
說(shuō)明
返回整個(gè) hashmap.
參數(shù)
name
- hashmap 的名字.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-value 的關(guān)聯(lián)數(shù)組.
示例
$ssdb->hgetall('h');
hscan
說(shuō)明
列出 hashmap 中處于區(qū)間 (key_start, key_end] 的 key-value 列表.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
name
- hashmap 的名字.key_start
- 返回的起始 key(不包含), 空字符串表示 -inf.key_end
- 返回的結(jié)束 key(包含), 空字符串表示 +inf.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-value 的關(guān)聯(lián)數(shù)組.
示例
$ssdb->hscan('h', 'a', 'z', 10);
遍歷 hash:
$start = ''; while(1){ $kvs = $ssdb->hscan($name, $start, '', 10); if(!$kvs){ break; } // do sth on kvs here$keys = array_keys($kvs);$start = $keys[count($keys) - 1];}
hrscan
說(shuō)明
列出 hashmap 中處于區(qū)間 (key_start, key_end] 的 key-value 列表, 反向順序.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
name
- hashmap 的名字.key_start
- 返回的起始 key(不包含), 空字符串表示 +inf.key_end
- 返回的結(jié)束 key(包含), 空字符串表示 -inf.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-score 的關(guān)聯(lián)數(shù)組.
示例
$ssdb->hrscan('h', 'a', 'z', 10);
hclear
說(shuō)明
刪除 hashmap 中的所有 key.
參數(shù)
name
- hashmap 的名字.
返回值
如果出錯(cuò)則返回 false
, 否則返回刪除的 key 的數(shù)量.
示例
$ssdb->hclear('h');
multi_hset
說(shuō)明
批量設(shè)置 hashmap 中的 key-value.
參數(shù)
name
- hashmap 的名字.kvs
- 包含 key-value 的關(guān)聯(lián)數(shù)組 .
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->multi_hset('h', array( 'a' => 1, 'b' => 2, ));
multi_hget
說(shuō)明
批量獲取 hashmap 中多個(gè) key 對(duì)應(yīng)的權(quán)重值.
參數(shù)
name
- hashmap 的名字.keys
- 包含 key 的數(shù)組 .
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-value 的關(guān)聯(lián)數(shù)組, 如果某個(gè) key 不存在, 則它不會(huì)出現(xiàn)在返回?cái)?shù)組中.
示例
$ssdb->multi_hget('h', array('k1', 'k2'));
multi_hdel
說(shuō)明
批量刪除 hashmap 中的 key.
參數(shù)
name
- hashmap 的名字.keys
- 包含 key 的數(shù)組 .
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->multi_hdel('h', array('k1', 'k2'));
zset
說(shuō)明
設(shè)置 zset 中指定 key 對(duì)應(yīng)的權(quán)重值.
參數(shù)
name
- zset 的名字.key
- zset 中的 key.score
- 整數(shù), key 對(duì)應(yīng)的權(quán)重值
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->zset('z', 'key', 100);
zget
說(shuō)明
獲取 zset 中指定 key 的權(quán)重值.
參數(shù)
name
- zset 的名字.key
- zset 中的 key.
返回值
如果 key 不存在則返回 null
, 如果出錯(cuò)則返回 false
, 否則返回 key 對(duì)應(yīng)的權(quán)重值.
示例
$ssdb->zget('z', 'key');
zdel
說(shuō)明
獲取 zset 中的指定 key.
參數(shù)
name
- zset 的名字.key
- zset 中的 key.
返回值
如果出錯(cuò)則返回 false
, 其它值表示正常. 你無(wú)法通過(guò)返回值來(lái)判斷被刪除的 key 是否存在.
示例
$ssdb->zdel('hz, 'key');
zincr
說(shuō)明
使 zset 中的 key
對(duì)應(yīng)的值增加 num
. 參數(shù) num
可以為負(fù)數(shù). 如果原來(lái)的值不是整數(shù)(字符串形式的整數(shù)), 它會(huì)被先轉(zhuǎn)換成整數(shù).
參數(shù)
name
- zset 的名字.key
-num
- 必須是有符號(hào)整數(shù).
返回值
如果出錯(cuò)則返回 false
, 否則返回新的值.
示例
$ssdb->zincr('z', 'key', 1);
zexists
說(shuō)明
判斷指定的 key 是否存在于 zset 中.
參數(shù)
name
- zset 的名字.key
-
返回值
如果存在, 返回 true
, 否則返回 false
.
示例
$ssdb->zexists('z', 'key');
zsize
說(shuō)明
返回 zset 中的元素個(gè)數(shù).
參數(shù)
name
- zset 的名字.
返回值
出錯(cuò)則返回 false
, 否則返回元素的個(gè)數(shù), 0 表示不存在 zset(空).
示例
$ssdb->zsize('z');
zlist, zrlist
說(shuō)明
列出名字處于區(qū)間 (name_start, name_end] 的 zset.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
name_start
- 返回的起始名字(不包含), 空字符串表示 -inf.name_end
- 返回的結(jié)束名字(包含), 空字符串表示 +inf.limit
- 最多返回這么多個(gè)元素.
返回值
出錯(cuò)則返回 false
, 否則返回包含名字的數(shù)組.
示例
$ssdb->zlist('a', 'z', 10);
zkeys
說(shuō)明
列出 zset 中的 key 列表. 參見(jiàn) zscan()
.
參數(shù)
name
- zset 的名字.key_start
- 參見(jiàn)zscan()
.score_start
- 參見(jiàn)zscan()
.score_end
- 參見(jiàn)zscan()
.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key 的數(shù)組.
示例
$ssdb->zkeys('z', '', 1, 100, 10);
zscan
說(shuō)明
列出 zset 中處于區(qū)間 (key_start+score_start, score_end] 的 key-score 列表. 如果 key_start 為空, 那么對(duì)應(yīng)權(quán)重值大于或者等于 score_start 的 key 將被返回. 如果 key_start 不為空, 那么對(duì)應(yīng)權(quán)重值大于 score_start 的 key, 或者大于 key_start 且對(duì)應(yīng)權(quán)重值等于 score_start 的 key 將被返回.
也就是說(shuō), 返回的 key 在 (key.score == score_start && key > key_start || key.score > score_start), 并且 key.score <= score_end
區(qū)間. 先判斷 score_start, score_end, 然后判斷 key_start.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
name
- zset 的名字.key_start
- score_start 對(duì)應(yīng)的 key.score_start
- 返回 key 的最小權(quán)重值(可能不包含, 依賴(lài) key_start), 空字符串表示 -inf.score_end
- 返回 key 的最大權(quán)重值(包含), 空字符串表示 +inf.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-score 的關(guān)聯(lián)數(shù)組.
示例
$ssdb->zscan('z', '', 1, 100, 10);
遍歷 zset:
$key_start = ''; $score_start = ''; while(1){ $items = $ssdb->zscan($zname, $key_start, $score_start, '', 10); if(!$items){ break; } foreach($items as $key=>$score){ // process($key, $score)... // 記住最大的元素和它的權(quán)重 $key_start = $key; $score_start = $score; } }
zrscan
說(shuō)明
列出 zset 中的 key-score 列表, 反向順序. 參見(jiàn) zkeys()
.
參數(shù)
name
- zset 的名字.key_start
- 參見(jiàn)zkeys()
.score_start
- 參見(jiàn)zkeys()
.score_end
- 參見(jiàn)zkeys()
.limit
- 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-score 的關(guān)聯(lián)數(shù)組.
示例
$ssdb->zrscan('z', '', 100, 1, 10);
zrank, zrrank
說(shuō)明
注意! 本方法可能會(huì)非常慢! 請(qǐng)?jiān)陔x線環(huán)境中使用.
返回指定 key 在 zset 中的排序位置(排名), 排名從 0 開(kāi)始. zrrank 獲取是是倒序排名.
參數(shù)
name
- zset 的名字.key
-
返回值
found.出錯(cuò)則返回 false
, null
表示 key 不存在于 zset, 否則返回排名.
示例
$ssdb->zrank('z', 'k1');
zrange, zrrange
說(shuō)明
注意! 本方法在 offset 越來(lái)越大時(shí), 會(huì)越慢!
根據(jù)下標(biāo)索引區(qū)間 [offset, offset + limit) 獲取 key-score 對(duì), 下標(biāo)從 0 開(kāi)始. zrrange 是反向順序獲取.
參數(shù)
name
- zset 的名字.offset
- 正整數(shù), 從此下標(biāo)處開(kāi)始返回. 從 0 開(kāi)始.limit
- 正整數(shù), 最多返回這么多個(gè) key-score 對(duì).
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-score 的關(guān)聯(lián)數(shù)組.
示例
$ssdb->zrange('z', 0, 10);
zclear
說(shuō)明
刪除 zset 中的所有 key.
參數(shù)
name
- zset 的名字.
返回值
如果出錯(cuò)則返回 false
, 否則返回刪除的 key 的數(shù)量.
示例
$ssdb->zclear('z');
zcount
說(shuō)明
返回處于區(qū)間 [start,end] key 數(shù)量.
參數(shù)
name
- zset 的名字.score_start
- key 的最小權(quán)重值(包含), 空字符串表示 -inf.score_end
- key 的最大權(quán)重值(包含), 空字符串表示 +inf.
返回值
如果出錯(cuò)則返回 false
, 否則返回符合條件的 key 的數(shù)量.
示例
$ssdb->zcount('z', 0, 100);
zsum
說(shuō)明
返回 key 處于區(qū)間 [start,end] 的 score 的和.
參數(shù)
name
- zset 的名字.score_start
- key 的最小權(quán)重值(包含), 空字符串表示 -inf.score_end
- key 的最大權(quán)重值(包含), 空字符串表示 +inf.
返回值
如果出錯(cuò)則返回 false
, 否則返回符合條件的 score 的求和.
示例
$ssdb->zsum('z', 0, 100);
zavg
說(shuō)明
返回 key 處于區(qū)間 [start,end] 的 score 的平均值.
參數(shù)
name
- zset 的名字.score_start
- key 的最小權(quán)重值(包含), 空字符串表示 -inf.score_end
- key 的最大權(quán)重值(包含), 空字符串表示 +inf.
返回值
如果出錯(cuò)則返回 false
, 否則返回符合條件的 score 的平均值.
示例
$ssdb->zavg('z', 0, 100);
zremrangebyrank
說(shuō)明
刪除位置處于區(qū)間 [start,end] 的元素.
參數(shù)
name
- zset 的名字.start
- (包含).end
-(包含).
返回值
出錯(cuò)則返回 false
, 否則返回被刪除的元素個(gè)數(shù).
示例
$ssdb->zremrangebyrank('z', 1, 2);
zremrangebyscore
說(shuō)明
刪除權(quán)重處于區(qū)間 [start,end] 的元素.
參數(shù)
name
- zset 的名字.start
- (包含).end
-(包含).
返回值
出錯(cuò)則返回 false
, 否則返回被刪除的元素個(gè)數(shù).
示例
$ssdb->zremrangebyscore('z', 1, 2);
zpop_front
說(shuō)明
從 zset 首部刪除并返回 limit
個(gè)元素.
參數(shù)
name
- zset 的名字.limit
- 正整數(shù), 最多要?jiǎng)h除并返回這么多個(gè) key-score 對(duì).
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-score 的關(guān)聯(lián)數(shù)組.
示例
$ssdb->zpop_front('z', 3);
zpop_back
說(shuō)明
從 zset 尾部刪除并返回 limit
個(gè)元素.
參數(shù)
name
- zset 的名字.limit
- 正整數(shù), 最多要?jiǎng)h除并返回這么多個(gè) key-score 對(duì).
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-score 的關(guān)聯(lián)數(shù)組.
示例
$ssdb->zpop_back('z', 3);
multi_zset
說(shuō)明
批量設(shè)置 zset 中的 key-score.
參數(shù)
name
- zset 的名字.kvs
- 包含 key-score 的關(guān)聯(lián)數(shù)組 .
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->multi_zset('z', array( 'a' => 1, 'b' => 2, ));
multi_zget
說(shuō)明
批量獲取 zset 中多個(gè) key 對(duì)應(yīng)的權(quán)重值.
參數(shù)
name
- zset 的名字.keys
- 包含 key 的數(shù)組 .
返回值
如果出錯(cuò)則返回 false
, 否則返回包含 key-score 的關(guān)聯(lián)數(shù)組, 如果某個(gè) key 不存在, 則它不會(huì)出現(xiàn)在返回?cái)?shù)組中.
示例
$ssdb->multi_zget('z', array('k1', 'k2'));
multi_zdel
說(shuō)明
批量刪除 zset 中的 key.
參數(shù)
name
- zset 的名字.keys
- 包含 key 的數(shù)組 .
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->multi_zdel('z', array('k1', 'k2'));
qsize
說(shuō)明
返回隊(duì)列的長(zhǎng)度.
參數(shù)
name
-
返回值
出錯(cuò)返回 false
, 否則返回一個(gè)整數(shù), 0 表示隊(duì)列不存在(或者為空).
示例
$ssdb->qsize('q');
qlist, qrlist
說(shuō)明
列出名字處于區(qū)間 (name_start, name_end] 的 queue/list.
("", ""] 表示整個(gè)區(qū)間.
參數(shù)
name_start
- 返回的起始名字(不包含), 空字符串表示 -inf.name_end
- 返回的結(jié)束名字(包含), 空字符串表示 +inf.limit
- 最多返回這么多個(gè)元素.
返回值
出錯(cuò)則返回 false
, 返回返回包含名字的數(shù)組.
示例
$ssdb->qlist('a', 'z', 10);
qclear
說(shuō)明
清空一個(gè)隊(duì)列.
參數(shù)
name
-
返回值
出錯(cuò)返回 false
.
示例
$ssdb->qclear('q');
qfront
說(shuō)明
返回隊(duì)列的第一個(gè)元素.
參數(shù)
name
-
返回值
出錯(cuò)返回 false
, 隊(duì)列不存在(或者為空)則返回 null
, 否則返回一個(gè)元素.
示例
$ssdb->qfront('q');
qback
說(shuō)明
返回隊(duì)列的最后一個(gè)元素.
參數(shù)
name
-
返回值
出錯(cuò)返回 false
, 隊(duì)列不存在(或者為空)則返回 null
, 否則返回一個(gè)元素.
示例
$ssdb->qback('q');
qget
說(shuō)明
返回指定位置的元素. 0 表示第一個(gè)元素, 1 是第二個(gè) ... -1 是最后一個(gè).
參數(shù)
name
-index
- 可傳負(fù)數(shù).
返回值
出錯(cuò)返回 false
, 如果指定位置不存在一個(gè)元素, 則返回 null
, 否則返回一個(gè)元素.
示例
$ssdb->qget('q', -2);
qset
Since: 1.7.0.0
說(shuō)明
更新位于 index 位置的元素. 如果超過(guò)現(xiàn)有的元素范圍, 會(huì)返回錯(cuò)誤.
參數(shù)
name
-index
- 可傳負(fù)數(shù).val
-
返回值
出錯(cuò)則返回 false
, 其它值表示正常.
示例
$ssdb->qset('q', 0, 'new val');
qrange
說(shuō)明
返回下標(biāo)處于區(qū)域 [offset, offset + limit] 的元素.
參數(shù)
name
- queue 的名字.offset
- 整數(shù), 從此下標(biāo)處開(kāi)始返回. 從 0 開(kāi)始. 可以是負(fù)數(shù), 表示從末尾算起.limit
- 正整數(shù), 最多返回這么多個(gè)元素.
返回值
如果出錯(cuò)則返回 false
, 否則返回?cái)?shù)組.
示例
$ssdb->qrange('q', 0, 10);
qslice
說(shuō)明
返回下標(biāo)處于區(qū)域 [begin, end] 的元素. begin 和 end 可以是負(fù)數(shù)
參數(shù)
name
-begin
-end
-
返回值
出錯(cuò)返回 false
, 否則返回包含元素的數(shù)組.
示例
$ssdb->qslice('q', 0, -1);
qpush
說(shuō)明
本函數(shù)是 qpush_back()
的別名.
qpush_front
說(shuō)明
往隊(duì)列的首部添加一個(gè)或者多個(gè)元素
參數(shù)
name
-item
- 字符串或是字符串?dāng)?shù)組.
返回值
添加元素之后, 隊(duì)列的長(zhǎng)度, 出錯(cuò)返回 false
.
示例
$ssdb->qpush_front('q', 'a');
qpush_back
說(shuō)明
往隊(duì)列的尾部添加一個(gè)或者多個(gè)元素
參數(shù)
name
-item
- 字符串或是字符串?dāng)?shù)組.
返回值
添加元素之后, 隊(duì)列的長(zhǎng)度, 出錯(cuò)返回 false
.
示例
$ssdb->qpush_back('q', 'a');
qpop
說(shuō)明
本函數(shù)是 qpop_front()
的別名.
qpop_front
說(shuō)明
從隊(duì)列首部彈出一個(gè)或者多個(gè)元素.
參數(shù)
name
-size
- 可選, 最多從隊(duì)列彈出這么多個(gè)元素
返回值
出錯(cuò)返回 false
. 當(dāng) size
未指定或者小于等于 1 時(shí), 隊(duì)列不存在(或者為空)則返回 null
, 否則刪除并返回一個(gè)元素. 當(dāng) size
大于等于 2 時(shí), 返回一個(gè)數(shù)組包含彈出的元素.
示例
$ssdb->qpop_front('q');
qpop_back
說(shuō)明
從隊(duì)列尾部彈出一個(gè)或者多個(gè)元素.
參數(shù)
name
-size
- 可選, 最多從隊(duì)列彈出這么多個(gè)元素
返回值
出錯(cuò)返回 false
. 當(dāng) size
未指定或者小于等于 1 時(shí), 隊(duì)列不存在(或者為空)則返回 null
, 否則刪除并返回一個(gè)元素. 當(dāng) size
大于等于 2 時(shí), 返回一個(gè)數(shù)組包含彈出的元素.
示例
$ssdb->qpop_back('q');
qtrim_front
說(shuō)明
從隊(duì)列頭部刪除多個(gè)元素.
參數(shù)
name
-size
- 最多從隊(duì)列刪除這么多個(gè)元素
返回值
出錯(cuò)返回 false
. 返回被刪除的元素?cái)?shù)量.
示例
$ssdb->qtrim_front('q', 3);
qtrim_back
說(shuō)明
從隊(duì)列頭部刪除多個(gè)元素.
參數(shù)
name
-size
- 最多從隊(duì)列刪除這么多個(gè)元素
返回值
出錯(cuò)返回 false
. 返回被刪除的元素?cái)?shù)量.
示例
$ssdb->qtrim_back('q', 3);
batch, exec
說(shuō)明
批量執(zhí)行一批命令. 批量命令可以減少客戶(hù)端和服務(wù)器之間的交互延時(shí), 能提高性能和響應(yīng)速度.
這個(gè)特性是在客戶(hù)端實(shí)現(xiàn)的, ssdb-server 不支持批量命令, 而是當(dāng)作獨(dú)立的一個(gè)命令一個(gè)命令地執(zhí)行. 所有命令和參數(shù)的大小應(yīng)小于 10MB.
參數(shù)
返回值
如果 exec()
出錯(cuò)則返回 false
, 否則返回一個(gè)數(shù)組包含對(duì)應(yīng)每一條命令的結(jié)果.
示例
$ret = $ssdb->batch() ->set('a', 1) ->get('a') ->exec(); // 或者 $ssdb->batch(); $ssdb->set('a', 1); $ssdb->get('a'); $ret = $ssdb->exec();
dbsize
說(shuō)明
返回?cái)?shù)據(jù)庫(kù)的估計(jì)大小, 以字節(jié)為單位. 如果服務(wù)器開(kāi)啟了壓縮, 返回壓縮后的大小.
參數(shù)
返回值
出錯(cuò)返回 false
. 返回?cái)?shù)據(jù)庫(kù)大小.
示例
$ssdb->dbsize();
info
說(shuō)明
返回服務(wù)器的信息.
參數(shù)
opt
- 可選, 可以是cmd, leveldb
返回值
出錯(cuò)返回 false
. 返回服務(wù)器信息的關(guān)聯(lián)數(shù)組.
示例
$ssdb->info();