php操作redis和memcache過期時間


php-redis 設置過期時間setTimeOut 命令行expire
redis過期時間
redis術語里面,把設置了expire time的key 叫做:volatile keys。 意思就是不穩定的key。
沒有設置過期時間的也就是永久存儲

set:set('key','value')將值 value 關聯到 key
setTimeOut:setTimeout('x', 3);設置過期時間
setex:setex('key', 3600, 'value')帶生存時間的寫入值

這個命令類似於以下兩個命令:

SET key value
setTimeOut key seconds # 設置生存時間

不同之處是, SETEX 是一個原子性(atomic)操作,關聯值和設置生存時間兩個動作會在同一時間內完成,該命令在 Redis 用作緩存時,非常實用。

 

Memcache過期時間
telnet命令格式
<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n

php命令格式
add ( string $key , mixed $var [, int $flag [, int $expire ]] )
$key :將要存儲的鍵值。
$var :存儲的值,字符型和整型會按原值保存,其他類型自動序列化以后保存。
$flag:是否用MEMCACHE_COMPRESSED來壓縮存儲的值,true表示壓縮,false表示不壓縮。
$expire:存儲值的過期時間,如果為0表示永久有效,但也會30后失效,過期時間可以是多少秒后過期,也可以是什么時候過期

 

memcache是在內存中的,所以過了有效期,數據當然是不會再有了。
memcache 的過期數據惰性刪除
當某個值過期后,並沒有從內存刪除, 因此,stats 統計時, curr_item 有其信息。 當某個新值去占用他的位置時,當成空chunk 來占用。 當get 值時,判斷是否過期,如果過期,返回空,並且清空,curr_item 就減少了。即這個過期,只是讓用戶看不到這個數據而已,並沒有在過期的瞬間立即從內存刪除。這個稱為惰性失效。好處是節省了cpu 時間和檢測的成本。

 

redis 1.有有效期
也是運行在內存中的,雖然redis可以做持久化,aof或者快照。
在訪問key的時候判定key是否過期,如果過期,則進行過期處理。其次,每秒對volatile keys 進行抽樣測試,如果有過期鍵,那么對所有過期key進行處理。
redis過期處理機制見http://my.oschina.net/u/1466553/blog/332830,寫的很詳細了。
2.永久存儲,但是沒有做持久化時,關閉的時候數據就會丟失或者


memcache與redis LRU刪除機制
原理: 當某個單元被請求時,維護一個計數器,通過計數器來判斷最近誰最少被使用。
注: 即使某個key 是設置的永久有效期,也一樣會被踢出來! 即–永久數據被踢現象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM