1. 程式人生 > >(二)redis API的理解和使用

(二)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(清楚所有資料庫)