(二)redis API的理解和使用
一、全域性命令
1、keys * 檢視所有鍵 時間複雜度為O(n),線上環境禁止使用
2、dbsize 檢視鍵總數
3、rpush 插入一個列表型別的鍵值對 rpush mylist a b c d
4、exists key 檢視鍵是否存在,如果存在返回1,不存在返回0
5、del key [key ...] 刪除鍵,返回成功刪除鍵的個數
6、expire 設定鍵過期 expire hello 10 設定鍵10s過期
7、ttl 返回鍵的剩餘過期時間,大於等於0 -1(沒有設定過期時間) -2(沒有這個鍵)
8、type key 鍵的資料結構型別 返回結果為string list hash set zset 如果鍵不存在返回none
9、object encoding key 查詢內部編碼
二、單執行緒模型
1、記憶體訪問
2、非阻塞I/O,Redis使用epoll作為I/O多路複用技術的實現,再加上 Redis自身的事件處理模型將epoll中的連線、讀寫、關閉都轉換為事件,不 在網路I/O上浪費過多的時間,如圖2-6所示。因為redis採用的是單執行緒,但是讀寫操作又是阻塞式的,所以出現I/O多路複用技術,當一個檔案處於讀寫阻塞狀態時,不至於其他的讀寫操作也被阻塞
3、減少執行緒的競爭與切換
三、字串
1、命令
set(setnx(鍵必須不存在 setxx與nx相反 [ex seconds] [px millisecond])) get mset mget incr(計數,當key中的值為數值時成功計數) decr incrby decrby incrbyfloat
append strlen(中文佔用3個字元) getset(先設定值,返回歷史數值,當鍵為空的時候,返回nil) setrange key offeset value(設定指定位置的字元)
getrange key start end(獲取指定位置的字串)
2、字串編碼
int(8個位元組的長整形) embstr(小於等於39個位元組的字串) raw(大於39個位元組的字串)
3、使用場景
快取 計數 session共享 限速
四、雜湊
1、命令
五、列表
1、命令
2、內部編碼
ziplist(壓縮列表) linkedlist(連結串列) quicklist
3、使用場景
訊息佇列(利用lpush和brpop)
六、集合
1、命令
2、內部編碼
setint(當元素不超過512個且值是整數型別時) hashtable
3、適用場景
七、有序集合
1、有序集合、集合和列表之間的異同點
2、命令
3、內部編碼
ziplist(壓縮列表):當有序集合的元素個數小於zset-max-ziplistentries配置(預設128個),同時每個元素的值都小於zset-max-ziplist-value配 置(預設64位元組)
skiplist(跳躍表)
4、適用場景
各排行榜
八、鍵管理
1、重新命名
rename renamenx
2、randomkey(隨機返回一個鍵)
3、過期
expire expireat(設定秒級過期時間戳) pexpire(設定秒級過期時間) pexpireat persist(可以將鍵的過期時間清除)
4、setex(為set+expire的組合)
5、遷移鍵
move dump+restore migrate
6、move、dump+restore和migrate之間的比較
7、遍歷鍵
keys scan hscan sscan zscan
資料庫方面的命令
dbsize select index(reids預設0-15號資料庫,通過select選擇) flushdb(清楚當前資料庫) flushall(清楚所有資料庫)