<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
C語言編寫
網路IO是nio
單執行緒避免了多執行緒上下文切換造成的效能損耗
在記憶體中運算速度快
IO多路複用(reactor)
redis利用epoll實現IO多路複用,將連線資訊和事件放到佇列中,依次放到檔案事件分派器,事件分派器將事件分發給事件處理器。
設定# save 60 1000 //關閉RDB只需要將所有的save儲存策略註釋掉即可
將修改的每一條指令記錄進檔案appendonly.aof中(先寫入os cache,每隔一段時間fsync到磁碟)。
AOF重寫:AOF檔案裡可能有太多沒用指令,所以AOF會定期根據記憶體的最新資料生成aof檔案。AOF重寫redis會fork出一個子程序去做(與bgsave命令類似),不會對redis正常命令處理有太多影響。bgrewriteao手動重寫。
Redis 4.0 混合持久化:aof-use-rdb-preamble yes
如果開啟了混合持久化,AOF在重寫時,不再是單純將記憶體資料轉換為RESP命令寫入AOF檔案,而是將重寫這一刻之前的記憶體做RDB快照處理,並且將RDB快照內容和增量的AOF修改記憶體資料的命令存在一起,都寫入新的AOF檔案,新的檔案一開始不叫appendonly.aof,等到重寫完新的AOF檔案才會進行改名,覆蓋原有的AOF檔案,完成新舊兩個AOF檔案的替換。於是在 Redis 重啟的時候,可以先載入 RDB 的內容,然後再重放增量 AOF 紀錄檔就可以完全替代之前的 AOF 全量檔案重放,因此重啟效率大幅得到提升。
使用者端可以一次性傳送多個請求而不用等待伺服器的響應,待所有命令都傳送完後再一次性讀取服務的響應,這樣可以極大的降低多條命令執行的網路傳輸開銷,管道執行多條命令的網路開銷實際上只相當於一次命令執行的網路開銷。需要注意到是用pipeline方式打包命令傳送,redis必須在處理完所有命令前先快取起所有命令的處理結果。打包的命令越多,快取消耗記憶體也越多。所以並不是打包的命令越多越好。
pipeline中傳送的每個command都會被server立即執行,如果執行失敗,將會在此後的響應中得到資訊;也就是pipeline並不是表達“所有command都一起成功”的語意,管道中前面命令失敗,後面命令不會有影響,繼續執行。
nx通過共用記憶體實現
sentinel哨兵是特殊的redis服務,不提供讀寫服務,主要用來監控redis範例節點。
合理的設定最大連線數;最大,最小空閒數。
slowlog
Redis慢紀錄檔命令說明: config get slow* #查詢有關慢紀錄檔的設定資訊 config set slowlog-log-slower-than 20000 #設定慢紀錄檔使時間閾值,單位微秒,此處為20毫秒,即超過20毫秒的操作都會記錄下來,生產環境建議設定1000,也就是1ms,這樣理論上redis並行至少達到1000,如果要求單機並行達到1萬以上,這個值可以設定為100 config set slowlog-max-len 1024 #設定慢紀錄檔記錄儲存數量,如果儲存數量已滿,會刪除最早的記錄,最新的記錄追加進來。記錄慢查詢紀錄檔時Redis會對長命令做截斷操作,並不會佔用大量記憶體,建議設定稍大些,防止丟失紀錄檔 config rewrite #將伺服器當前所使用的設定儲存到redis.conf slowlog len #獲取慢查詢紀錄檔列表的當前長度 slowlog get 5 #獲取最新的5條慢查詢紀錄檔。慢查詢紀錄檔由四個屬性組成:標識ID,發生時間戳,命令耗時,執行命令和引數 slowlog reset #重置慢查詢紀錄檔
(1)vm.swapiness
如果linux核心版本<3.5,那麼swapiness設定為0,這樣系統寧願swap也不會oom killer(殺掉程序)
如果linux核心版本>=3.5,那麼swapiness設定為1,這樣系統寧願swap也不會oom killer
cat /proc/version #檢視linux核心版本 echo 1 > /proc/sys/vm/swappiness echo vm.swapiness=1 >> /etc/sysctl.conf cat /proc/sys/vm/overcommitmemory echo "vm.overcommitmemory=1" >> /etc/sysctl.conf sysctl vm.overcommit_memory=1
(2)合理設定檔案控制程式碼數
ulimit -a #檢視系統檔案控制程式碼數,看open files那項 ulimit -n 65535 #設定系統檔案控制程式碼數
快取穿透是指查詢一個根本不存在的資料,快取層和儲存層都不會命中,通常出於容錯的考慮,如果從儲存層查不到資料則不寫入快取層。快取穿透將導致不存在的資料每次請求都要到儲存層去查詢,失去了快取保護後端儲存的意義。
(1)快取空物件
(2)布隆過濾器
由於大批次快取在同一時間失效可能導致大量請求同時穿透快取直達資料庫,可能會造成資料庫瞬間壓力過大甚至掛掉,對於這種情況我們在批次增加快取時最好將這一批資料的快取過期時間設定為一個時間段內的不同時間。
到此這篇關於Redis核心原理詳細解說的文章就介紹到這了,更多相關Redis原理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45