基本資料結構
#String:普通的set和get,做簡單的KV快取、計數器和共享用戶session。
Hash:類似Map,一般儲存結構化的資料(簡單的物件),Hash的應用場景比較單一(現在的物件內部也嵌套一堆物件不適合Hash) 。
List:有序列表(插入時的順序)
#訊息佇列:生產者透過Lpush,多個消費者使用BRpop阻塞的「搶」清單尾部的資料。
文章清單資料分頁展示:透過lrange指令,讀取某個閉區間內的元素,例如微博向下滑動刷新出頁面。
Set:無序集合,自動去重,使用set進行交集,並集,差集的操作。例如兩個人的共同好友。
StoredSet:排序的Set
Bit-Map 實作的BloomFilter:布隆過濾器,可以用來判斷資料庫中是否存在這個訊息。
持久化
RDB:鏡像全量持久化,持久化耗費較長時間,恢復資料速度快,不夠即時
AOF:增量持久化,每一秒或每一次操作就在AOF檔最後追加上操作碼,恢復資料時間慢。
如果中途斷電會怎麼樣
取決於AOF日誌sync屬性的配置,如果不追求性能,每條寫指令時都sync一下磁盤,就不會遺失資料。一般都使用定時sync,例如1s1次,這個時候最多就會遺失1s資料
RDB原理
fork和cow,fork是指redis透過建立子程序進行RDB操作,cow是指copy on write,子進程創建後,父子進程共享資料段,父進程繼續提供讀寫服務,寫髒的頁面資料會逐漸和子進程離開來。
Pipeline有什麼好處,為什麼用
可以將多次IO往返的時間縮減為一次,前提是pipeline執行的指令之間沒有因果關係,使用redis-banchmark進行壓測的時候可以發現影響redis的QPS峰值的一個重要因素是pipeline批次指令的數目。
更多redis知識請關注redis入門教學欄位。
以上是redis快取中間件基礎知識介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!