PHP 操作redis 詳細講解轉的
phpredis是redis的php的一個擴充,效率是相當高有鏈表排序功能,對建立記憶體級的模組業務關係
很有用;以下是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: 刪除一個不存在的key
if(!$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); #同時刪除多個key
var_dump($redis->mget($array_mget)); #返回 array(3) { [0]=> bool(false) [1]=> bool(false) [2]=> bool(false) }
KEYS KEYS pattern 尋找符合給定模式的 key。 KEYS *命中資料庫中所有 key。 KEYS h?llo命中 hello, hallo and hxllo等。 KEYS h*llo命中 hllo和 heeeeello等。 KEYS h[ae]llo命中 hello和 hallo,但不命中 hillo。
特殊符號用"\"隔開 時間複雜度: 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(); # 刪除當前資料庫所有key
var_dump($redis-> randomkey()); //bool(false)