日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Redis 分布式缓存 Java 框架

發(fā)布時間:2025/3/21 java 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 分布式缓存 Java 框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

https://dzone.com/articles/java-distributed-caching-in-redis

為什么要在 Java 分布式應(yīng)用程序中使用緩存?

在提高應(yīng)用程序速度和性能上,每一毫秒都很重要。根據(jù)谷歌的一項(xiàng)研究,假如一個網(wǎng)站在3秒鐘或更短時間內(nèi)沒有加載成功,會有?53% 的手機(jī)用戶會離開。

緩存是讓分布式應(yīng)用程序加速的重要技術(shù)之一。存儲的信息越接近 CPU,訪問速度就越快。從 CPU 緩存中加載數(shù)據(jù)比從 RAM 中加載要快得多,比從硬盤或網(wǎng)絡(luò)上加載要快得多得多。

要存儲經(jīng)常訪問的數(shù)據(jù),分布式應(yīng)用程序需要在多臺機(jī)器中維護(hù)緩存。分布式緩存是降低分布式應(yīng)用程序延遲、提高并發(fā)性和可伸縮性的一種重要策略。

Redis?是一種流行的開源內(nèi)存數(shù)據(jù)存儲,可用作數(shù)據(jù)庫、緩存或消息代理。由于是從內(nèi)存而非磁盤加載數(shù)據(jù),Redis 比許多傳統(tǒng)的數(shù)據(jù)庫解決方案更快。

然而,對開發(fā)者來說讓 Redis 分布式緩存正確工作是一個巨大挑戰(zhàn)。例如,必須謹(jǐn)慎處理本地緩存失效,即替換或刪除緩存條目。每次更新或刪除存儲計(jì)算機(jī)本地緩存中的信息時,必須更新分布式緩存系統(tǒng)所有計(jì)算機(jī)內(nèi)存中的緩存。

好消息是,有一些類似?Redisson?這樣的 Redis 框架,可以幫助構(gòu)建應(yīng)用程序所需的分布式緩存。下一節(jié)將討論 Redisson 中分布式緩存的三個重要實(shí)現(xiàn):Maps、Spring Cache 和 JCache。

1. Redisson 分布式緩存

Redisson 是一個基于 Redis 的框架,用 Java 實(shí)現(xiàn)了一個 Redis 包裝器(wrapper)和接口。Redisson 包含許多常見的 Java 類,例如分布式對象、分布式服務(wù)、分布式鎖和同步器,以及分布式集合。正如下面即將介紹的,其中一些接口同時支持分布式緩存和本地緩存。

2. Map

Map?是 Java 最有用的集合之一。Redisson 提供了一個名為?RMap?的 Java Map 實(shí)現(xiàn),支持本地緩存。

如果希望執(zhí)行多個讀操作或網(wǎng)絡(luò)環(huán)回(roundtrip),應(yīng)使用支持本地緩存的 RMap。通過本地存儲 Map 數(shù)據(jù),RMap 比不啟用本地緩存時快45倍。通用分布式緩存使用?RMapCache,本地緩存使用?RLocalCachedMap。

Redis 引擎自身能夠執(zhí)行緩存,不需要在客戶端執(zhí)行代碼。然而,雖然本地緩存能顯著提高讀取速度,但需要由開發(fā)人員維護(hù),并且可能需要一些開發(fā)工作。Redisson 為開發(fā)人員提供了 RLocalCachedMap 對象,讓本地緩存實(shí)現(xiàn)起來更容易。

下面的代碼展示了如何初始化?RMapCache?對象:

RMapCache<String, SomeObject> map = redisson.getMapCache("anyMap"); map.put("key1", new SomeObject(), 10, TimeUnit.MINUTES, 10, TimeUnit.SECONDS);

上面的代碼將字符串?"key1"?放到 RMapCache 中,并與?SomeObject()?關(guān)聯(lián)。然后它指定了兩個參數(shù),TTL設(shè)為10分鐘、最大空閑時間10秒。

當(dāng)不再需要時,應(yīng)銷毀?RMapCache?對象:

map.destroy();

Redisson 關(guān)閉后不用再做銷毀操作。

3. Spring Cache

Spring?是一個用于構(gòu)建企業(yè)級 Web 應(yīng)用程序的 Java 框架,也提供了緩存支持。

Redisson 包含了 Spring 緩存功能,提供兩個對象:?RedissonSpringCacheManager?和?RedissonSpringLocalCachedCacheManager。?RedissonSpringLocalCachedCacheManager?支持本地緩存。

下面是一個?RedissonSpringLocalCachedCacheManager?對象的示例配置:

@Configuration @ComponentScan @EnableCaching public static class Application {@Bean(destroyMethod="shutdown")RedissonClient redisson() throws IOException {Config config = new Config();config.useClusterServers().addNodeAddress("127.0.0.1:7004", "127.0.0.1:7001");return Redisson.create(config);}@BeanCacheManager cacheManager(RedissonClient redissonClient) {Map<String, CacheConfig> config = new HashMap<String, CacheConfig>();// 新建 "testMap" 緩存:ttl=24分鐘,maxIdleTime=12分鐘config.put("testMap", new CacheConfig(24*60*1000, 12*60*1000));return new RedissonSpringCacheManager(redissonClient, config);} }

此外,還可以讀取 JSON 或 YAML 文件配置?RedissonSpringCacheManager。

與 RMaps 一樣,每個?RedissonSpringCacheManager?實(shí)例都有兩個重要參數(shù): ttl(生存時間)和 maxIdleTime。如果這些參數(shù)設(shè)為0或者沒有定義,那么數(shù)據(jù)將無限期地保留在緩存中。

4. JCache

JCache?是一個 Java 緩存 API,允許開發(fā)人員從緩存臨時存儲、檢索、更新和刪除對象。

Redisson 提供了 Redis 的 JCache API 實(shí)現(xiàn)。下面是在 Redisson 中使用默認(rèn)配置調(diào)用 JCache API 的示例:

MutableConfiguration<String, String> config = new MutableConfiguration<>(); CacheManager manager = Caching.getCachingProvider().getCacheManager(); Cache<String, String> cache = manager.createCache("namedCache", config);

此外,還可以使用自定義配置文件、Redisson?Config?對象或 Redisson?RedissonClient?對象配置 JCache。例如,下面的代碼使用自定義 Redisson 配置來調(diào)用 JCache:

MutableConfiguration<String, String> jcacheConfig = new MutableConfiguration<>(); Config redissonCfg = ... Configuration<String, String> config = RedissonConfiguration.fromConfig(redissonCfg, jcacheConfig); CacheManager manager = Caching.getCachingProvider().getCacheManager(); Cache<String, String> cache = manager.createCache("namedCache", config);

Redisson 的 JCache 實(shí)現(xiàn)已經(jīng)通過 JCache TCK 的所有測試。你也可以自行驗(yàn)證。

讓我們愉快地使用緩存吧!

總結(jié)

以上是生活随笔為你收集整理的Redis 分布式缓存 Java 框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。