dede網(wǎng)站打開速度慢如何優(yōu)化seo關鍵詞
Redis有哪2種持久化方式?分別的優(yōu)缺點是什么?
Redis 的重寫 AOF 過程是由后臺子進程 bgrewriteaof 來完成的。
過期刪除策略和內(nèi)存淘汰策略有什么區(qū)別?
- 內(nèi)存淘汰策略是在內(nèi)存滿了的時候,redis 會觸發(fā)內(nèi)存淘汰策略,來淘汰一些不必要的內(nèi)存資源,以騰出空間,來保存新的內(nèi)容
- 過期鍵刪除策略是將已過期的鍵值對進行刪除,Redis 采用的刪除策略是惰性刪除+定期刪除。
Redis 內(nèi)存淘汰策略
- noeviction(Redis3.0之后,默認的內(nèi)存淘汰策略) :當運行內(nèi)存超過最大設置內(nèi)存時,不淘汰任何數(shù)據(jù),這時如果有新的數(shù)據(jù)寫入,會報錯通知禁止寫入。
- volatile-random:隨機淘汰設置了過期時間的任意鍵值;
- volatile-ttl:優(yōu)先淘汰更早過期的鍵值。
- volatile-lru(Redis3.0 之前,默認的內(nèi)存淘汰策略):淘汰所有設置了過期時間的鍵值中,最久未使用的鍵值;
- volatile-lfu(Redis 4.0 后新增的內(nèi)存淘汰策略):淘汰所有設置了過期時間的鍵值中,最少使用的鍵值;
- allkeys-random:隨機淘汰任意鍵值;
- allkeys-lru:淘汰整個鍵值中最久未使用的鍵值;
- allkeys-lfu(Redis 4.0 后新增的內(nèi)存淘汰策略):淘汰整個鍵值中最少使用的鍵值。
Redis過期刪除策略
Redis 選擇「惰性刪除+定期刪除」這兩種策略配和使用
惰性刪除:
Redis 的定期刪除是每隔一段時間「隨機」從數(shù)據(jù)庫中取出一定數(shù)量的 key 進行檢查,并刪除其中的過期key。
默認每秒進行 10 次過期檢查一次數(shù)據(jù)庫
隨機抽查的數(shù)量由 ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP 定義的,它是寫死在代碼中的,數(shù)值是 20。
Redis的緩存失效會不會立即刪除?
不會
為什么我不過期立即刪除?
在過期 key 比較多的情況下,刪除過期 key 可能會占用相當一部分 CPU 時間,在內(nèi)存不緊張但 CPU 時間緊張的情況下,將 CPU 時間用于刪除和當前任務無關的過期鍵上,無疑會對服務器的響應時間和吞吐量造成影響。所以,定時刪除策略對 CPU 不友好。
Redis主從同步中的增量和完全同步怎么實現(xiàn)?
為了避免在網(wǎng)絡恢復時,主服務器頻繁地使用全量同步的方式,我們應該調(diào)整下repl_backlog_buffer 緩沖區(qū)大小,盡可能的大一些。
redis主從和集群可以保證數(shù)據(jù)一致性嗎 ?
redis 主從和集群在CAP理論都屬于AP模型,即在面臨網(wǎng)絡分區(qū)時選擇保證可用性和分區(qū)容忍性,而犧牲了強一致性。這意味著在網(wǎng)絡分區(qū)的情況下,Redis主從復制和集群可以繼續(xù)提供服務并保持可用,但可能會出現(xiàn)部分節(jié)點之間的數(shù)據(jù)不一致。
哨兵機制原理是什么?
哨兵(Sentinel)機制,它的作用是實現(xiàn)主從節(jié)點故障轉(zhuǎn)移。監(jiān)控、選主、通知。
如果Sentinel集群中超過quorum數(shù)量的Sentinel節(jié)點認為該redis節(jié)點主觀下線,則該redis客觀下線。
首先需要從Sentinel集群中選舉一個Sentinel節(jié)點作為Leader。
由Sentinel Leader從redis從節(jié)點中選擇一個redis節(jié)點作為主節(jié)點:
Redis集群的模式了解嗎 優(yōu)缺點了解嗎
當 Redis 緩存數(shù)據(jù)量大到一臺服務器無法緩存時,就需要使用 Redis 切片集群(Redis Cluster )方案,它將數(shù)據(jù)分布在不同的服務器上,以此來降低系統(tǒng)對單主節(jié)點的依賴,從而提高 Redis 服務的讀寫性能。
Redis Cluster 方案采用哈希槽(Hash Slot),來處理數(shù)據(jù)和節(jié)點之間的映射關系。在 Redis Cluster 方案中,一個切片集群共有 16384 個哈希槽,這些哈希槽類似于數(shù)據(jù)分區(qū),每個鍵值對都會根據(jù)它的 key,被映射到一個哈希槽中。
優(yōu)點
- 提供了高可用性,節(jié)點之間采用主從復制機制,可以保證數(shù)據(jù)的持久性和容錯能力,哪怕其中一個節(jié)點掛掉,整個集群還可以繼續(xù)工作。
- Redis集群采用分片技術,將數(shù)據(jù)分散到多個節(jié)點,從而提高讀寫性能。
- Redis集群的擴展性非常好,可以根據(jù)實際需求動態(tài)增加或減少節(jié)點,從而實現(xiàn)可擴展性。
缺點
- Redis集群的部署和維護需要考慮到分片規(guī)則、節(jié)點的布置、主從配置以及故障處理等多個方面,需要較強的技術支持,增加了節(jié)點異常處理的復雜性和成本。
- 當某些節(jié)點失敗或者網(wǎng)絡出故障,集群中數(shù)據(jù)同步的問題也會出現(xiàn)。數(shù)據(jù)同步的復雜度和工作量隨著節(jié)點的增加而增加,同步時間也較長,導致一定的讀寫延遲。
- Redis集群的數(shù)據(jù)分片也限制了一些功能的實現(xiàn),如在一個key上修改多次,可能會因為該key所在的節(jié)點位置變化而失敗。此外,由于將數(shù)據(jù)分散存儲到各個節(jié)點,某些操作不能跨節(jié)點實現(xiàn),不同節(jié)點之間的一些操作需要額外注意。