redis 所有模糊key 查詢 Redis剖析

2021-10-14 09:18:54 字數 2995 閱讀 5895

前言

常用的sql資料庫的資料都是存在磁碟中的,雖然在資料庫底層也做了對應的快取來減少資料庫的io壓力,但由於資料庫的快取一般是針對查詢的內容,而且粒度也比較小,一般只有表中的資料沒有發生變動的時候,資料庫的快取才會產生作用,但這並不能減少業務邏輯對資料庫的增刪改操作的io壓力,因此快取技術應運而生,該技術實現了對熱點資料的快取記憶體,可以大大緩解後端資料庫的壓力。

主流應用架構

客戶端在對資料庫發起請求時,先到快取層檢視是否有所需的資料,如果快取層存有客戶端所需的資料,則直接從快取層返回,否則進行穿透查詢,對資料庫進行查詢,如果在資料庫中查詢到該資料,則將該資料回寫到快取層,以便下次客戶端再次查詢能夠直接從快取層獲取資料。

快取中介軟體 -- memcache和redis的區別

為什麼redis能這麼快

redis的效率很高,官方給出的資料是100000+qps(query per second),這是因為:

1.redis完全基於記憶體,絕大部分請求是純粹的記憶體操作,執行效率高。

2.redis使用單程序單執行緒模型的(k,v)資料庫,將資料儲存在記憶體中,訪問均不會受到硬碟io的限制,因此其執行速度極快,另外單執行緒也能處理高併發請求,還可以避免頻繁上下文切換和鎖的競爭,如果想要多核執行也可以啟動多個例項。

3.資料結構簡單,對資料操作也簡單,redis不使用表,不會強制使用者對各個關係進行關聯,不會有複雜的關係限制,其儲存結構就是鍵值對,類似於hashmap,hashmap最大的優點就是訪問的時間複雜度為o(1)。

:redis採用的i/o多路復用函式:epoll/kqueue/evport/select選用策略:

1.因地制宜,優先選擇時間複雜度為o(1)的i/o多路復用函式作為底層實現。

2.由於select要遍歷每乙個io,所以其時間複雜度為o(n),通常被作為保底方案。

3.基於react設計模式監聽i/o事件。

注:如果重複寫入key相同的鍵值對,後寫入的會將之前寫入的覆蓋。

hash

string元素組成的字典,適用於儲存物件。

列表,按照string元素插入順序排序。其順序為後進先出。由於其具有棧的特性,所以可以實現如「最新訊息排行榜」這類的功能。

string元素組成的無序集合,通過雜湊表實現(增刪改查時間複雜度為o(1)),不允許重複。

另外,當我們使用smembers遍歷set中的元素時,其順序也是不確定的,是通過hash運算過後的結果。redis還對集合提供了求交集、並集、差集等操作,可以實現如同共同關注,共同好友等功能。

sorted set

通過分數來為集合中的成員進行從小到大的排序。

從海量key裡查詢出某乙個固定字首的key

如何通過redis實現分布式鎖

用法:expire key seconds

如何實現非同步佇列

redis持久化

redis資料的恢復

pineline

pipeline和linux的管道類似,它可以讓redis批量執行指令。

redis基於請求/響應模型,單個請求處理需要一一應答。如果需要同時執行大量命令,則每條命令都需要等待上一條命令執行完畢後才能繼續執行,這中間不僅僅多了rtt,還多次使用了系統io。pipeline由於可以批量執行指令,所以可以節省多次io和請求響應往返的時間。但是如果指令之間存在依賴關係,則建議分批傳送指令。

redis的同步機制

redis集群

結語

redis 模糊刪除key

由於在我們的專案中使用spring cached和redis結合的方式對一部分資料做資料庫快取,當快取和資料庫資料不一致時 由於手動改資料庫引起 就得清空資料庫的快取,這就涉及到redis迷糊匹配刪除資料的情況發生。redis keys命令支援模式匹配,但是del命令不支援模式匹配,有時候需要根據一...

redis 刪除所有key

刪除所有key,可以使用redis的flushdb和flushall命令 刪除當前資料庫中的所有key flushdb 刪除所有資料庫中的key flushall 如果要訪問 redis 中特定的資料庫,使用下面的命令 下面的命令指定資料序號為0,即預設資料庫 redis cli n 0 keys ...

redis 刪除所有key

刪除所有key,可以使用redis的flushdb和flushall命令 刪除當前資料庫中的所有key flushdb 刪除所有資料庫中的key flushall 如果要訪問 redis 中特定的資料庫,使用下面的命令 下面的命令指定資料序號為0,即預設資料庫 redis cli n 0 keys ...