redis
中可以使用
expire
命令設定乙個鍵的生存時間,到時間後
redis
會自動刪除它。
expirekey seconds
如果想知道乙個鍵還有多久的時間會被刪除,可以使用
ttl命令,返回值是鍵的剩餘時間。當鍵不存在或者沒有設定生存時間時,返回-1。
redis>set foo bar ok
redis>expire foo 20
(integer)1
redis>ttl foo
(integer)15
redis>ttl foo
(integer)-1
如果想取消鍵的生存時間設定,可以使用
persist
命令。如果生存時間被成功清除則返回
1;否則返回
0(因為鍵不存在或鍵本來就是永久的)。 使用
set、或者
getset
命令為鍵賦值也會同時清除鍵的生存時間。
redis> expire foo 20
(integer)1
redis> set foo bar ok
redis> ttl foo
(integer)-1
其他只對鍵值進行操作的命令(如
incr
、lpush
、hset
、zrem
)均不會影響鍵的生存時間。
pexpire
與expire
命令相似,但是其單位是毫秒。
expireat
和pexpireat
不常用,
expireat
的單位是
unix
時間,表示鍵的生存時間的截止時間。
pexpireat
命令的單位是毫秒。
redis> set foo bar ok
redis> expireat foo 1351858600
(integer)1
redis> ttl foo
(integer)142
redis> pexpireat foo 1351858700000
(integer)1
實現訪問頻率限制之一:
$iskeyexists= exists rate.limiting:$ip
if$iskeyexists is 1
$times = incr rate.limiting:$ip
if $times > 100
訪問頻率超過了限制,請稍後再試。
exist
else
multi
incr rate.limiting:$ip
expire $keyname 60
exec
實現訪問頻率限制之二:
$listlen= llen rate.limiting:$ip
if$listlen < 10
lpush rate.limiting:$ip now()
else
$time = lindex rate.limiting:$ip -1
if now() - $time < 60
訪問頻率超過了限制,請稍後再試。
else
lpush rate.limiting:$ip now()
ltrim rate.limiting:$ip 0 9
實現快取:
可以限制
redis
能夠使用的最大記憶體,並讓
redis
按照一定的規則淘汰不需要的快取鍵,這種方式在只將
redis
用作快取系統時非常的使用。
具體設定方法:修改配置檔案的
maxmemory
引數,限制
redis
最大可用記憶體大小(單位位元組),當超出了這個限制時,
redis
會依據max
memory-policy
引數指定的策略來刪除不需要的鍵,直到
redis
占用的記憶體小於指定記憶體。
lru(least
recently used)
規則說明
volatile
-lru 使用
lru演算法刪除乙個鍵(只對設定了生存時間的鍵)
allkeys
-lru 使用
lru演算法刪除乙個鍵
volatile-
random
隨機刪除乙個鍵(只對設定了生存時間的鍵)
allkeys-random
隨機刪除乙個鍵
volatile
-ttl
刪除生存時間最近的乙個鍵
noeviction
不刪除鍵,只返回錯誤
Redis 學習筆記(八)事務
更多的資料型別命令可在redis中文官網中查詢和學習,下面學習redis的事務。原子性是指乙個操作或者多個操作,要麼全部執行並且執行的過程不會被任何因素打斷,要麼就都不執行。事務是指一系列操作,這些操作要麼同時成功,要麼同時失敗,它是一種原子操作。事務沒有隔離級別的概念。redis的單條命令都具有原...
Redis學習之AOF八
aof是以日誌的形式來記錄每個寫操作,將redis執行過的所有寫指令記錄下來 讀操作不記錄 只許追加檔案但不可以改寫檔案,redis啟動之初會讀取改檔案重新構架資料,換言之,redis重啟的話就根據日誌檔案的內容將寫指令從前到後執行一次以完成資料的恢復工作。1.預設情況下 everysec 出廠預設...
redis學習 事物,生存時間
事物 1 multi exec 2 錯誤處理 語法錯誤可以檢測到,執行錯誤無法檢測,即使事物裡一條命令出現了語法錯誤,事物裡其他的命令依然會繼續執行 3 watch 檢測鍵值被修改後阻止之後的乙個事物的執行,並不能保證其他客戶端不修改這個鍵值 unwatch可以取消監控 生存時間 expire ke...