phpredis中文手冊——《redis中文手冊》 php版
阿新 • • 發佈:2019-01-23
很有用;以下是redis官方提供的命令使用技巧:
下載地址如下:
https://github.com/owlient/phpredis(支援redis 2.0.4)
Redis::__construct建構函式
$redis = new Redis();
connect, open 連結redis服務
引數
host: string,服務地址
port: int,埠號
timeout: float,連結時長 (可選, 預設為 0 ,不限連結時間)
注: 在redis.conf中也有時間,預設為300
pconnect, popen 不會主動關閉的連結
參考上面
setOption 設定redis模式
getOption 檢視redis設定的模式
ping檢視連線狀態
KEY相關操作
DEL
移除給定的一個或多個key。
如果key不存在,則忽略該命令。
- 時間複雜度:
- O(N),N為要移除的key的數量。 移除單個字串型別的key,時間複雜度為O(1)。 移除單個列表、集合、有序集合或雜湊表型別的key,時間複雜度為O(M),M為以上資料結構內的元素數量。
- 返回值:
- 被移除key的數量。
//DEL
# 情況1: 刪除單個key$redis->set('myname','ikodota');
echo $redis->get('myname').'<br>'; #返回:ikodota
$redis->del('myname');# 返回 TRUE(1)var_dump($redis->get('myname')); # 返回 bool(false)
# 情況2: 刪除一個不存在的keyif(!$redis->exists('fake_key')) # 不存在var_dump($redis->del('fake_key')); # 返回 int(0)
# 情況3: 同時刪除多個key$array_mset=array('first_key'=>'first_val',
'second_key'=>'second_val',
'third_key'=>'third_val');
$redis->mset($array_mset); #用MSET一次儲存多個值$array_mget=array('first_key','second_key','third_key');
var_dump($redis->mget($array_mget)); #一次返回多個值 //array(3) { [0]=> string(9) "first_val" [1]=> string(10) "second_val" [2]=> string(9) "third_val" }
$redis->del($array_mget); #同時刪除多個keyvar_dump($redis->mget($array_mget)); #返回 array(3) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(false) }
- KEYS
- KEYS pattern
- 查詢符合給定模式的key。
特殊符號用"\"隔開
- 時間複雜度:
- O(N),N為資料庫中key的數量。
- 返回值:
- 符合給定模式的key列表。
警告 :KEYS的速度非常快,但在一個大的資料庫中使用它仍然可能造成效能問題,如果你需要從一個數據集中查詢特定的key,你最好還是用集合(Set)。
//KEYS
#$redis->FLUSHALL();$array_mset_keys=array('one'=>'1',
'two'=>'2',
'three '=>'3',
'four'=>'4');
$redis->mset($array_mset_keys); #用MSET一次儲存多個值var_dump($redis->keys('*o*')); //array(3) { [0]=> string(4) "four" [1]=> string(3) "two" [2]=> string(3) "one" }var_dump($redis->keys('t??')); //array(1) { [0]=> string(3) "two" }var_dump($redis->keys('t[w]*')); //array(1) { [0]=> string(3) "two" }print_r($redis->keys('*')); //Array ( [0] => four [1] => three [2] => two [3] => one )
RANDOMKEY
從當前資料庫中隨機返回(不刪除)一個key。
- 時間複雜度:
- O(1)
- 返回值:
- 當資料庫不為空時,返回一個key。 當資料庫為空時,返回nil。
//RANDOMKEY$redis->FLUSHALL();
# 情況1:資料庫不為空$array_mset_randomkey=array('fruit'=>'apple',
'drink'=>'beer',
'food'=>'cookis');
$redis->mset($array_mset_randomkey);
echo $redis->randomkey();
print_r($redis->keys('*')); # 檢視資料庫內所有key,證明RANDOMKEY並不刪除key//Array ( [0] => food [1] => drink [2] => fruit )
# 情況2:資料庫為空$redis->flushdb(); # 刪除當前資料庫所有keyvar_dump($redis-> randomkey()); //bool(false)
-
TTL
TTL key
返回給定key的剩餘生存時間(time to live)(以秒為單位)。
- 時間複雜度:
- O(1)
- 返回值:
- key的剩餘生存時間(以秒為單位)。 當key不存在或沒有設定生存時間時,返回-1 。
//TTL
# 情況1:帶TTL的key$redis->flushdb();
//$redis->set('name','ikodota'); # 設定一個key$redis->expire('name',30); # 設定生存時間為30秒 //return (integer) 1echo $redis->get('name'); //return ikodotaecho $redis->ttl('name'); //(integer) 25
//echo $redis->ttl('name'); # 30秒過去,name過期 //(integer) -1var_dump($redis->get('name')); # 過期的key將被刪除 //return bool(false);
# 情況2:不帶TTL的key$redis->set('site','wikipedia.org');//OKvar_dump($redis->ttl('site'));//int(-1)
# 情況3:不存在的key$redis->EXISTS('not_exists_key');//int(0)var_dump($redis->TTL('not_exists_key'));//int(-1)
- EXISTS
- EXISTS key
檢查給定key是否存在。
- 時間複雜度:
- O(1)
- 返回值:
- 若key存在,返回1,否則返回0。
//EXISTSecho '<br>EXISTS<br>';
$redis->set('db',"redis"); //bool(true) var_dump($redis->exists('db')); # key存在 //bool(true) $redis->del('db'); # 刪除key //int(1)var_dump($redis->exists('db')) # key不存在 //bool(false)
MOVE
MOVE key db
將當前資料庫(預設為0)的key移動到給定的資料庫db當中。
如果當前資料庫(源資料庫)和給定資料庫(目標資料庫)有相同名字的給定key,或者key不存在於當前資料庫,那麼MOVE沒有任何效果。
因此,也可以利用這一特性,將MOVE當作鎖(locking)原語。
- 時間複雜度:
- O(1)
- 返回值:
- 移動成功返回1,失敗則返回0。
//MOVEecho '<br><br>MOVE<br>';
# 情況1: key存在於當前資料庫$redis->SELECT(0); # redis預設使用資料庫0,為了清晰起見,這裡再顯式指定一次。//OK$redis->SET('song',"secret base - Zone"); //OKvar_dump ($redis->MOVE('song',1)); # 將song移動到資料庫1 //bool(true)
# 情況2:當key不存在的時候$redis->SELECT(1);
var_dump ($redis->EXISTS('fake_key'));//bool(false);var_dump($redis->MOVE('fake_key', 0)); # 試圖從資料庫1移動一個不存在的key到資料庫0,失敗) //bool(false)
$redis->SELECT(0); # 使用資料庫0va