1、全局命令redis
一、keys * 查看全部鍵 時間複雜度爲O(n),線上環境禁止使用數據庫
二、dbsize 查看鍵總數緩存
三、rpush 插入一個列表類型的鍵值對 rpush mylist a b c d網絡
四、exists key 查看鍵是否存在,若是存在返回1,不存在返回0session
五、del key [key ...] 刪除鍵,返回成功刪除鍵的個數數據結構
六、expire 設置鍵過時 expire hello 10 設置鍵10s過時 app
七、ttl 返回鍵的剩餘過時時間,大於等於0 -1(沒有設置過時時間) -2(沒有這個鍵)dom
八、type key 鍵的數據結構類型 返回結果爲string list hash set zset 若是鍵不存在返回noneui
九、object encoding key 查詢內部編碼編碼
2、單線程模型
一、內存訪問
二、非阻塞I/O,Redis使用epoll做爲I/O多路複用技術的實現,再加上 Redis自身的事件處理模型將epoll中的鏈接、讀寫、關閉都轉換爲事件,不 在網絡I/O上浪費過多的時間,如圖2-6所示。由於redis採用的是單線程,可是讀寫操做又是阻塞式的,因此出現I/O多路複用技術,當一個文件處於讀寫阻塞狀態時,不至於其餘的讀寫操做也被阻塞
三、減小線程的競爭與切換
3、字符串
一、命令
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(獲取指定位置的字符串)
二、字符串編碼
int(8個字節的長整形) embstr(小於等於39個字節的字符串) raw(大於39個字節的字符串)
三、使用場景
緩存 計數 session共享 限速
4、哈希
一、命令
5、列表
一、命令
二、內部編碼
ziplist(壓縮列表) linkedlist(鏈表) quicklist
三、使用場景
消息隊列(利用lpush和brpop)
6、集合
一、命令
二、內部編碼
setint(當元素不超過512個且值是整數類型時) hashtable
三、適用場景
7、有序集合
一、有序集合、集合和列表之間的異同點
二、命令
三、內部編碼
ziplist(壓縮列表):當有序集合的元素個數小於zset-max-ziplistentries配置(默認128個),同時每一個元素的值都小於zset-max-ziplist-value配 置(默認64字節)
skiplist(跳躍表)
四、適用場景
各排行榜
8、鍵管理
一、重命名
rename renamenx
二、randomkey(隨機返回一個鍵)
三、過時
expire expireat(設置秒級過時時間戳) pexpire(設置秒級過時時間) pexpireat persist(能夠將鍵的過時時間清除)
四、setex(爲set+expire的組合)
五、遷移鍵
move dump+restore migrate
六、move、dump+restore和migrate之間的比較
七、遍歷鍵
keys scan hscan sscan zscan
數據庫方面的命令
dbsize select index(reids默認0-15號數據庫,經過select選擇) flushdb(清楚當前數據庫) flushall(清楚全部數據庫)