2 回答

TA貢獻1794條經(jīng)驗 獲得超8個贊
redis是一個類似memcached的key/value存儲系統(tǒng),它支持存儲的value類型相對較多,包括string(字符串)、 list(鏈表)、set(集合)和zset(有序集合)。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件(這點兒個人覺得redis比memcache 在數(shù)據(jù)保存上要安全一些),并且在此基礎(chǔ)上實現(xiàn)了master- slave(主從)同步。
redis的存取性能很高,SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次(速度很爽?。?/p>
Redis針對不同的存儲類型對象提供了不同的命令。
redis目前提供四種數(shù)據(jù)類型:string,list,set及zset(sorted set)。
string是最簡單的類型,你可以理解成與Memcached一模一個的類型,一個key對應(yīng)一個value,其上支持的操作與Memcached的操 作類似。但它的功能更豐富。
list是一個鏈表結(jié)構(gòu),主要功能是push、pop、獲取一個范圍的所有值等等。操作中key理解為鏈表的名字。
set是集合,和我們數(shù)學中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交并差等操作。操作中key理解為集合的名字。

TA貢獻1911條經(jīng)驗 獲得超7個贊
memcached 數(shù)據(jù)過期機制 lazy expiration
內(nèi)部不會監(jiān)視記錄是否過期,而是在get時查看記錄的時間戳,檢查記錄是否過期。這種技術(shù)被稱為lazy(惰性)expiration。因此,memcached不會在過期監(jiān)視上耗費CPU時間,換句話說,也不能 檢測 某個key的過期時間。。
可以使用一種較笨的方法:
definde('MEM_TIME_OUT',1800);
$memKey = "testkey";
$val = 'This is test value';
mem_set($key,$val); //調(diào)用
function mem_set($key,$val) {
$memcache -> set($memKey,$val, 0, MEM_TIME_OUT);
//當調(diào)用set 的時候順便加一條記錄時間
$memcache -> set('TIME_'.$memKey,time(), 0, MEM_TIME_OUT);
}
function mem_get($key,$is_time = false) {
$memKey = $is_time ? 'TIME_'.$key : $key;
$val = $memcache -> get($key);
if($is_time) {
$val = MEM_TIME_OUT - (time() - $val);
}
return $val;
}
- 2 回答
- 0 關(guān)注
- 742 瀏覽
添加回答
舉報