前言:
斷斷續續的接觸了redis的使用。但是也就簡單的記住了幾個set、get方法,用的還是太少了吧。所以來做個筆記,記錄下一些常用的命令。
內容:
首先是php連接redis。
$redis = new Redis(); //實例化個redis對象,要是這里報錯了通常是php沒有裝redis擴展,自己百度下安裝擴展(之后整理一篇博文好了)
$redis->connent($host,$port); //連接redis,參數分別是地址和端口,和連接mysql差不多。(畢竟都是數據庫,連接過程都一樣)
$redis->auth($pwd); //檢驗密碼,沒有密碼就不用進行這一步
$redis->select($db_num); //選擇數據庫,默認是0。個數再redis配置文件里面配置。
接下來就是些數據庫的操作了
redis數據庫是內存數據庫,將數據存儲再內存中,這樣子讀寫就相當的快,節省了磁盤的I/O操作。當然redis也可以將數據保存在磁盤,等重新開機后再次讀入,避免丟失數據(怎么實現的,之后被百度下,會了再來補充)。
redis和memcache都被用來進行緩存處理,兩者的共性是都將數據存儲在內存中,所以讀寫快。redis讀110000/s,寫81000/s(沒記錯的話)。兩者最大的區別在於,redis支持更多的數據格式存儲,還能進行些數據庫操作。而memcache只能以鍵值對的形式進行存儲,且只有存取操作。
redis允許的存儲格式有五種。string、list、set、zset、hash。
接下來一一的記錄下相應的常用操作。
- string
$redis->set($key,$val);
$redis->get($key);
$redis->strlen('key');//獲取當前key的長度
$redis->append('key','string');//把string追加到key現有的value中[追加后的個數]
$redis->incr('key');//自增1,如不存在key,賦值為1(只對整數有效,存儲以10進制64位,redis中為str)
$redis->incrby('key',$num);//自增$num,不存在為賦值,值需為整數[new_num | false]
$redis->decr('key');//自減1,[new_num | false]
$redis->decrby('key',$num);//自減$num,[ new_num | false]
$redis->setex('key',10,'value');//key=value,有效期為10秒
$redis->mset($arr);//設置一個或多個鍵值
$redis->mget($arr);//(string|arr),返回所查詢鍵的值
$redis->del($key_arr);//(string|arr)刪除key,支持數組批量刪除【返回刪除個數】
$redis->delete($key_str,$key2,$key3);//刪除keys,[del_num]
$redis->getset('old_key','new_value');//先獲得key的值,然后重新賦值,[old_value | false]
$redis->setnx('key','value');//key=value,key存在返回false[|true]
- set
- zset
- list
- hash
最后還有一些對數據庫的操作
$redis->dbSize();//返回當前庫中的key的個數 $redis->flushAll();//清空整個redis[總true] $redis->flushDB();//清空當前redis庫[總true] $redis->save();//同步??把數據存儲到磁盤-dump.rdb[true] $redis->bgsave();//異步??把數據存儲到磁盤-dump.rdb[true] $redis->info();//查詢當前redis的狀態 [verson:2.4.5....] $redis->lastSave();//上次存儲時間key的時間[timestamp] $redis->watch('key','keyn');//監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那么事務將被打斷 [true] $redis->unwatch('key','keyn');//取消監視一個(或多個) key [true] $redis->multi(Redis::MULTI);//開啟事務,事務塊內的多條命令會按照先后順序被放進一個隊列當中,最后由 EXEC 命令在一個原子時間內執行。 $redis->multi(Redis::PIPELINE);//開啟管道,事務塊內的多條命令會按照先后順序被放進一個隊列當中,最后由 EXEC 命令在一個原子時間內執行。 $redis->exec();//執行所有事務塊內的命令,;【事務塊內所有命令的返回值,按命令執行的先后順序排列,當操作被打斷時,返回空值 false】