解析Redis的緩存類型

HashMap/ConcurrentHashMap
HashMap 是一種基于哈希表的集合類,它提供了快速的插入、查找和刪除操作。是很多程序員接觸的第一種緩存 , 因?yàn)楝F(xiàn)實(shí)業(yè)務(wù)場景里,我們可能需要給緩存添加緩存統(tǒng)計(jì)、過期失效、淘汰策略等功能,HashMap 的功能就顯得弱。

Broker 與 Name Server 集群中的所有節(jié)點(diǎn)建立長連接,定時每隔 30 秒注冊 主題的路由信息到所有 Name Server。
Name Server 集群的作用就是注冊中心,注冊中心會保存路由信息(主題的讀寫隊(duì)列數(shù)、操作權(quán)限等),路由信息就是保存在 HashMap 中 。

LinkedHashMap 緩存
LinkedHashMap 是 HashMap 的子類, 支持兩種順序插入順序 、 訪問順序。

TreeMap緩存
TreeMap 是基于紅黑樹的有序 Map,它可以按照鍵的順序進(jìn)行遍歷。 在一致性哈希中可以用作節(jié)點(diǎn)/虛擬節(jié)點(diǎn)的存儲結(jié)構(gòu),用來維護(hù)節(jié)點(diǎn)在哈希環(huán)上的位置和鍵的有序性。

ByteBuffer 緩存
ByteBuffer 是字節(jié)緩沖區(qū),主要用于用戶讀取和緩存字節(jié)數(shù)據(jù),在網(wǎng)絡(luò)編程里,經(jīng)常需要分配內(nèi)存,在高并發(fā)場景下,性能壓力比較大。Cobar 抽象了一個 NIOProcessor 類用來處理網(wǎng)絡(luò)請求,每個處理器初始化的時候都會創(chuàng)建一個緩沖池 BufferPool 。

以上四種緩存:HashMap/ConcurrentHashMap 經(jīng)常用于配置緩存,對于 HashMap 來講,HashMap + 讀寫鎖 + 定時任務(wù)更新是常用的模式。LinkedHashMap 經(jīng)常被用于創(chuàng)建最近最少使用緩存 LruCache ,使用責(zé)任鏈+ 裝飾器的設(shè)計(jì)模式,內(nèi)置 LruCache 的實(shí)現(xiàn)就是使用 LinkedHashMap 。TreeMap 是一種基于紅黑樹的有序 Map 。TreeMap 在一致性哈希中可以用作節(jié)點(diǎn)/虛擬節(jié)點(diǎn)的存儲結(jié)構(gòu)。ByteBuffer 主要用于用戶讀取和緩存字節(jié)數(shù)據(jù),多用于網(wǎng)絡(luò)編程、文件 IO 處理等。以上希望大家在使用過程中注意!
到此這篇關(guān)于解析Redis的緩存類型的文章就介紹到這了,更多相關(guān)Redis 緩存 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux下安裝Redis 6.0.5的實(shí)現(xiàn)
本文詳細(xì)介紹了在Linux系統(tǒng)下安裝Redis 6.0.5的步驟,包括安裝準(zhǔn)備、編譯安裝、啟動服務(wù)、設(shè)置密碼和配置文件修改等,具有一定的參考價值,感興趣的可以了解一下2025-02-02
redis實(shí)現(xiàn)延遲任務(wù)的項(xiàng)目實(shí)踐
本文主要介紹了redis實(shí)現(xiàn)延遲任務(wù)的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
RedisDesktopManager遠(yuǎn)程連接redis的實(shí)現(xiàn)
本文主要介紹了RedisDesktopManager遠(yuǎn)程連接redis的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
redis的底層數(shù)據(jù)結(jié)構(gòu)詳解
Redis性能高得益于其優(yōu)化的數(shù)據(jù)結(jié)構(gòu),Redis的數(shù)據(jù)結(jié)構(gòu)分為對外暴露的和內(nèi)部底層的兩種,對外暴露的數(shù)據(jù)結(jié)構(gòu)包括String、list、hash、set、zset等,而內(nèi)部底層的數(shù)據(jù)結(jié)構(gòu)則包括SDS、hashtable、ziplist、linkedlist、quicklist、intset、skiplist等2025-02-02
Linux下安裝Redis并設(shè)置相關(guān)服務(wù)
這篇文章主要為大家介紹了Linux下安裝Redis并設(shè)置相關(guān)服務(wù),感興趣的小伙伴們可以參考一下2016-01-01
Redis在Ubuntu系統(tǒng)上無法啟動的問題排查
這篇文章主要介紹了Redis在Ubuntu系統(tǒng)上無法啟動的問題排查,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08
Redis中RedisSearch使用及應(yīng)用場景
RedisSearch是一個強(qiáng)大的全文搜索和索引模塊,可以為Redis添加高效的搜索功能,下面就來介紹一下RedisSearch使用及應(yīng)用場景,感興趣的可以了解一下2025-05-05
面試常問:如何保證Redis緩存和數(shù)據(jù)庫的數(shù)據(jù)一致性
在實(shí)際開發(fā)過程中,緩存的使用頻率是非常高的,只要使用緩存和數(shù)據(jù)庫存儲,就難免會出現(xiàn)雙寫時數(shù)據(jù)一致性的問題,那我們又該如何解決呢2021-09-09

