對redis的一些理解

2022-08-12 02:21:10 字數 1371 閱讀 7645

快取就是在記憶體中儲存的資料備份,當資料沒有發生本質變化的時候,我們避免資料的查詢操作直接連線資料庫,而是去    內容中讀取資料,這樣就大大降低了資料庫的讀寫次數,而且從記憶體中讀資料的速度要比從資料庫查詢要快很多。

使用redis有哪些好處?

(1) 速度快,因為資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o(1)

(2) 支援豐富資料型別,支援string,list,set,sorted set,hash

(3) 支援事務,操作都是原子性,所謂的原子性就是對資料的更改要麼全部執行,要麼全部不執行

(4) 豐富的特性:可用於快取,訊息,按key設定過期時間,過期後將會自動刪除

一.資料庫快取

常見的資料庫,比如oracle、mysql等,資料都是存放在磁碟中。雖然在資料庫層也做了對應的快取,但這種資料庫層次的快取一般針對的是查詢內容,而且粒度也太小,一般只有表中資料沒有變更的時候,資料庫對應的cache才發揮了作用。但這並不能減少業務系統對資料庫產生的增、刪、查、改的龐大io壓力。所以資料庫快取技術在此誕生,實現熱點資料的快取記憶體,提高應用的響應速度,極大緩解後端資料庫的壓力

二.資料庫快取的技術特點

1.效能優越

資料庫快取的第乙個技術特點就是提高效能,所以資料庫快取的資料基本上都是儲存在記憶體中,相比io讀寫的速度,資料訪問快速返回。

2.應用場景

3.資料一致性

在很多應用場景中,當乙個資料發生變更的時候,很多人在考慮怎麼樣確保快取資料和資料庫中資料儲存一致性,確保從快取讀取的資料是最新的。甚至,有人在對應資料變更的時候,先更新資料庫,然後再去更新快取。我覺得這個考慮不太現實,一方面這會導致**層次邏輯變得複雜,另外一方面也真想不明白還要快取幹什麼了。在絕大多數的應用中,快取中的資料和資料庫中的資料是不一致的。即,我們犧牲了實時性換回了訪問速度。比如,一篇經常訪問的帖子,可能這篇帖子已經在資料庫層次進行了變更。而我們每次訪問的時候,讀取的都是快取中的資料(帖子)。既然是快取,那麼必然是對實時性可以有一定的容忍度的資料,容忍度的時間可以是5分鐘,也可以是5小時,取決於業務場景的要求。相反,一定要求是實時性的資料庫,就不應該從快取裡讀取,比如庫存,再比如**。

刪除redis快取

1.訪問redis根目錄    cd  /usr/local/redis-2.8.19

2.登入redis:redis-cli -h 127.0.0.1 -p 6379

3.檢視所有key值:keys *

4.刪除指定索引的值:del key

5.清空整個 redis 伺服器的資料:flushall 

6.清空當前庫中的所有 key:flushdb 

redis 的一些理解

1.rdb 生成指定時間點的快照 2.aof 生成所有寫操作命令。可以對aof檔案重寫 rewrite 縮小檔案大小 可以同時使用,也可以不使用 但是還原的時候首先考慮還原aof的檔案。訊息佇列的兩個功能 1.發布,訂閱 2.延遲發布 我會有相應的文章發布。1.redis 單台容易出現故障 2.單台...

對Linux inode的一些理解

檔名 inode device block 一 inode是什麼?理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次...

對棧的一些理解

之前總結過一篇有關函式棧幀的部落格 函式棧幀以及呼叫約定相關的一些總結 但是感覺自己還是有一點知識點沒有弄懂,今天中午跟郭哥吃過飯一起 有關殼的問題的時候,順便把這個問題請教了一下郭哥,終於弄明白了,在此要特地感謝他,這裡把一些心得體會寫出來 先看一幅圖 選自ida權威指南 注意圖中是基於esp的棧...