目錄
一、引言
二、基礎命令
1.set
2.get?
3.keys
3.1 keys ?
3.2 keys *
3.3 keys [abe]?
3.4 keys [^]
3.5 keys [a-b]
4.exists
5.delete
6.expire
?7.ttl
8.type?
三、Redis中的過期策略(面試題)
1.惰性刪除
2.定期刪除
3.定時器
四、總結
一、引言
? 本篇文章就Redis在Ubunto上面的一些簡單命令進行介紹。
二、基礎命令
1.set
? set命令就是設置鍵值對的,例如 set key value
2.get?
獲取鍵的值
3.keys
? 全局命令,簡單理解就是在整個redis上面進行查找
3.1 keys ?
? ?能夠代替其中一個字符
3.2 keys *
? * 能夠代替零個或者多個字符
3.3 keys [abe]?
?[]查找里面的內容代替的字符
?
3.4 keys [^]
? 查找除了這個的字符
3.5 keys [a-b]
? 查找a-b的內容
?注意:盡量少使用keys * 這樣的查找全部的操作,可能會把服務器卡崩,所以盡量不用這類操作
4.exists
? 判定key是否存在,返回值是key存在的個數,時間復雜度是O(1)
5.delete
和keys,exists一樣,返回值是刪除的個數,時間復雜度是O(1)
6.expire
? 給指定的key設置過期時間,超過這個時間這個key就會被自動刪除。返回值是一個數字,1表示成功,0表示失敗。此處的設定過期時間,必須是針對已經存在的key設置,時間復雜度也是O(1).
想使用毫秒的話,使用pexpire key。
?7.ttl
? 查詢過期時間,time to live 存活時間,同時還存在pttl 這樣的操作命令,時間復雜度是O(1)
返回值是剩余過期時間,-1表示沒有關聯過期時間,-2表示key不存在
8.type?
返回key對應的數據類型,但redis所有的key都是String類型,此處指的是對應的value的類型。
三、Redis中的過期策略(面試題)
? redis整體的策略是定期刪除和惰性刪除
1.惰性刪除
? 假設key已經到過期時間了,暫時還沒進行刪除。key還存在。后面訪問到了這個key,發現這個key已經過期,這次訪問就會讓redis服務器觸發刪除key的操作,同時返回一個nil
2.定期刪除
? 每次抽取一部分key進行過期時間(保證抽取檢查的過程足夠快)
? redis還提供了一系列內存淘汰=策略。
3.定時器
在某個時間到達之后,執行指定的任務。
1.基于優先級隊列(堆),過期時間早的先出隊列。
隊首元素就是最早要過期的key。
此時定時器只要一個線程,讓這個線程去檢查隊首元素,看其是否過期即可,如果隊首元素還沒過期,后續元素一定沒過期。
2.時間輪
設置一個類似輪盤來進行定時的操作
但以上兩種方案redis都沒有實現。
四、總結
? 本篇文章就介紹了Redis的通用命令,但Redis還有更多的命令,這就需要再使用時大家能夠去Redis官網進行查詢。感謝大家觀看!