Redis基本知識

一、什么是Redis
Redis是一種基于內存的數據庫,對數據的讀寫操作都是在內存中完成,因此讀寫速度非常快,用于存儲鍵值對、緩存、消息隊列、分布式鎖等。

二、Redis和mencached的區別
相同:都是基于內存的數據庫,讀寫都很快
不同:
1.Redis支持的數據類型更豐富(string、list、hash、set、zset);而mencached只支持string
2.Redis支持數據的持久化,可以將內存中數據保存在磁盤中,重啟的時候可以重新加載使用;mencached沒有持久化功能
3.Redis原生支持集群模式

三、Redis實現持久化
1.AOF日志:Redis在執行完一條寫操作命令后,把該命令以追加的方式寫入到一個文件里面(先執行后寫入),重啟Redis時會讀取該文件里的命令逐一操作來進行數據恢復
2.AOF重寫機制:當AOF日志過大時,讀取每一條鍵值對最新的操作命令記錄到新的AOF文件中。相當于壓縮了AOF日志。
3.RDB快照:每次執行把內存中所有的數據都記錄到磁盤中,這樣恢復數據的效率會比AOF高些。用save(主線程里執行)和bgsave命令。
4.混合持久化:工作在AOF日志重寫的過程。新的AOF文件前半部分是RDB格式的全量數據,后半部分是AOF格式的增量數據。重啟時由于前半部分是RDB全量數據所以加載速度會很快,后半部分的增量數據會使丟失的數據更少。

四、Redis實現服務高可用
1.主從復制:主服務器進行讀寫操作;從服務器只進行讀操作;主服務器將寫操作同步到從服務器
2.哨兵模式:哨兵群進行監控,當主服務器發生故障,選舉出新的主服務器

五、Redis過期刪除策略
1.惰性刪除:數據庫訪問key時才檢測key是否過期
2.定期刪除:每隔一段時間隨機從數據庫中取出一定數量的key進行檢查

六、Redis內存淘汰算法
1.LRU(least recently used,最近最少使用算法):最新操作的鍵會被移動到表頭
2.Redis采用的近似LRU算法:在Redis對象結構體中添加一個額外字段來記錄此數據的最后一次訪問時間,使用隨機采樣的方式淘汰數據

七、Redis的三大緩存問題
1.緩存雪崩:大量數據同時過期,或Redis故障宕機,大量請求直接訪問數據庫導致數據庫壓力驟增
解決方法:
(1)均勻設置過期時間
(2)設置互斥鎖。訪問到過期數據,在對其進行緩存重構時加鎖(鎖要設置超時時間避免阻塞)。未能獲得互斥鎖的要么等待要么返回默認值或空值
(3)后臺更新緩存
(4)服務器熔斷或請求限流
(5)構建高可用的Redis主從集群
2.緩存擊穿:頻繁被訪問的熱點數據過期了,也會導致大量請求直接訪問數據庫
解決方法:
(1)互斥鎖
(2)后臺更新緩存
3.緩存穿透:數據在緩存和數據庫里都沒有。緩存里找不到->訪問數據庫->數據庫找不到無法重構緩存
解決方法:
(1)限制非法請求
(2)設置空值或默認值,后續請求得到該值后不會繼續訪問數據庫
(3)使用布隆過濾器(位圖+哈希函數)。寫入數據庫數據時用布隆過濾器做標記,緩存失效后去布隆過濾器里快速判斷數據是否存在。這樣請求只會訪問混存和布隆過濾器

八、Redis保證數據庫和緩存一致性
先更新數據庫,再刪除緩存。并用以下兩種方法異步操作緩存
1.重試機制:引入消息隊列記錄刪除緩存的操作。刪除緩存失敗的話可以從消息隊列中讀數據重試刪除操作
2.訂閱MySQL binlog:更新數據庫的時候產生一條日志記錄在binlog里,通過訂閱binlog日志拿到具體要操作的數據再去刪除緩存

參考文檔:小林coding圖解Redis

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715613.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715613.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715613.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024年騰訊云部署幻獸帕魯服務器,如何選擇合適的服務器配置套餐暢玩游戲?

選擇合適的服務器配置套餐以暢玩《幻獸帕魯》游戲,首先需要考慮的是玩家數量和對服務器性能的需求。根據騰訊云提供的配置推薦,對于4到8人的玩家,推薦配置為4核16G12M;而10到20人的玩家則建議選擇8核32G22M配置。這是因為《幻獸帕…

小程序頁面指定區域局部滾動,做上拉和觸底刷新

業務需求:在頁面某個固定區域滑動 思路:滑動高度 頁面高度 - 自定義導航高度(不是自己自定義的導航可以省略)- 按鈕高度 - 單詞數高度 實現 : 1.數據展示區內使用scroll-view,設置y軸滾動(…

swoole

php是單線程。php是靠多進程來處理任務,任何后端語言都可以采用多進程處理方式。如我們常用的php-fpm進程管理器。線程與協程,大小的關系是進程>線程>協程,而我們所說的swoole讓php實現了多線程,其實在這里來說,就是好比讓php創建了多個進程,每個進程執行一條…

初階數據結構:二叉樹

目錄 1. 樹的相關概念1.1 簡述:樹1.2 樹的概念補充 2. 二叉樹2.1 二叉樹的概念2.2 二叉樹的性質2.3 二叉樹的存儲結構與堆2.3.1 存儲結構2.3.2 堆的概念2.3.3 堆的實現2.3.3.1 堆的向上調整法2.3.3.2 堆的向下調整算法2.3.3.3 堆的實現 1. 樹的相關概念 1.1 簡述&a…

域名及地址正確外,若依后臺無法正常加載頁面和退出報404問題

寫小程序退出的時候,另外寫了一個自定義退出處理類,里面的響應瀏覽器的代碼每次都走。因為原來也有個退出處理類,所以先后走了2次,因為就出現了問題。 LogoutSuccessHandlerImpl類里的: ServletUtils.renderString(r…

【C++ AVL樹】

文章目錄 AVL樹AVL樹的概念AVL樹節點的定義AVL樹的插入AVL樹的旋轉右單旋左單旋左右雙旋右左雙旋 代碼實現 總結 AVL樹 AVL樹的概念 二叉搜索樹在順序有序或接近有序的情況下,而插入搜索樹將退化為單叉樹,此時查找的時間復雜度為O(n),效率低…

鴻蒙Harmony應用開發—ArkTS聲明式開發(通用屬性:顏色漸變)

設置組件的顏色漸變效果。 說明: 從API Version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。 linearGradient linearGradient(value: { angle?: number | string; direction?: GradientDirection; colors: Array; repea…

mamba-ssm安裝building wheel卡著不動后error...避坑解決方法

文章目錄 方法1、下載whl文件到本地后pip install安裝成功后驗證: 方法2、拉取Docker鏡像 對于項目中用到MambaIR的小伙伴,需要pip安裝 causal_conv1d和 mamba-ssm兩個包及其依賴: torch packing transformersMambaIR-Github主頁&#xff0…

【C++】vector的使用及其模擬實現

這里寫目錄標題 一、vector的介紹及使用1. vector的介紹2. 構造函數3. 遍歷方式4. 容量操作及空間增長問題5. 增刪查改6. vector二維數組 二、vector的模擬實現1. 構造函數2. 迭代器和基本接口3. reserve和resize4. push_back和pop_back5. insert和erase5. 迭代器失效問題5. 淺…

【Java】基礎算法練習題

個人簡介:Java領域新星創作者;阿里云技術博主、星級博主、專家博主;正在Java學習的路上摸爬滾打,記錄學習的過程~ 個人主頁:.29.的博客 學習社區:進去逛一逛~ 目錄 基礎算法練習題🚀1. 兩數之和…

Django 管網項目 三

Django 官網文檔 ??Writing your first Django app, part 2 | Django documentation | Django 本文內容涉及創建視圖 View,路由,和模版。并對內容進行渲染。 創建視圖 在我們的投票應用中,我們需要下列幾個視圖: 問題索引頁—…

ChatGPT支持下的PyTorch機器學習與深度學習技術應用

近年來,隨著AlphaGo、無人駕駛汽車、醫學影像智慧輔助診療、ImageNet競賽等熱點事件的發生,人工智能迎來了新一輪的發展浪潮。尤其是深度學習技術,在許多行業都取得了顛覆性的成果。另外,近年來,Pytorch深度學習框架受…

相關知識1111

一、 店鋪編號和相關負責人 1、天貓兄弟、錦格 京東凡越 福林哥 如萍姐 2、京東錦格 天貓凡越 林森 雷佳華 3、天貓從簡 京東從簡 孔哥 4、抖音錦格 拼多多凡越 鴻哥 不知道哪個店鋪編號:0 二、天貓京東聊天界面快捷搜索商品 1、 天貓只能根據標題搜索 2、京東是…

神經網絡之萬能定理python-pytorch實現,可以擬合任意曲線

神經網絡之萬能定理python-pytorch實現,可以擬合任意曲線 博主,這幾天一直在做這個曲線擬合的實驗,講道理,網上可能也有很多這方面的資料,但是博主其實試了很多,效果只能對一般的曲線還行,稍微…

java之抽象類

什么是抽象類? 抽象就是不能具體化,不能實例化 作為父類,讓子類去實現 abstract修飾類就是抽象類 abstract修飾方法就是抽象方法修飾符 abstract class 類名{修飾符 abstract 返回值類型 方法名(形參列表); }public abstract class A {//不…

CTFHUB--文件包含漏洞--RCE

文件包含漏洞 文件包含漏洞也是一種注入型漏洞,其本質就是輸入一段用戶能夠控制的腳本或者代碼,并讓服務端執行。有時候由于網站功能需求,會讓前端用戶選擇要包含的文件,而開發人員又沒有對要包含的文件進行安全考慮,…

CSS【詳解】居中對齊 (水平居中 vs 垂直居中)

水平居中 內部塊級元素的寬度要小于容器(父元素) 方案一&#xff1a;文本居中對齊&#xff08;內聯元素&#xff09; 限制條件&#xff1a;僅用于內聯元素 display:inline 和 display: inline-block; 給容器添加樣式 text-align:center<!DOCTYPE html> <html lang&q…

裴蜀定理(Bézout’s identity)

裴蜀定理&#xff08;Bzout’s identity&#xff09;是一個數論定理&#xff0c;也稱為貝祖等式。它表明&#xff0c;對于任意給定的兩個整數 a a a 和 b b b&#xff0c;存在整數 x x x 和 y y y&#xff0c;使得它們滿足以下方程&#xff1a; a x b y gcd ? ( a , b )…

【簡略知識】項目開發中,VO,BO,PO,DO,DTO究竟是何方妖怪?

前言 在項目開發中&#xff0c;是否需要定義VO&#xff08;視圖對象&#xff09;&#xff0c;BO&#xff08;業務對象&#xff09;&#xff0c;PO&#xff08;持久化對象&#xff09;&#xff0c;DO&#xff08;領域對象&#xff09;&#xff0c;DTO&#xff08;數據傳輸對象&…

CKKS EXPLAINED, PART 3: ENCRYPTION AND DECRYPTION

CKKS EXPLAINED, PART 3: ENCRYPTION AND DECRYPTION Introduction 在之前的文章中&#xff0c;CKKS解釋了第二部分&#xff1a;完整的編碼和解碼&#xff0c;我們看到了如何實現CKKS的編碼器和解碼器&#xff0c;這使我們能夠將向量轉換為多項式&#xff0c;反之亦然。這一步…