日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Java框架之Redis分布式緩存

Java 框架之Redis 分布式緩存

作者:唐尤華 2019-07-04 15:13:16

存儲(chǔ)

存儲(chǔ)軟件

分布式

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

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

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

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

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

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

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

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

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

1. Redisson 分布式緩存

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

2. Map

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

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

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

下面的代碼展示了如何初始化 RMapCache 對(duì)象:

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

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

當(dāng)不再需要時(shí),應(yīng)銷(xiāo)毀 RMapCache 對(duì)象:

  
 
 
  1. map.destroy();

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

3. Spring Cache

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

Redisson 包含了 Spring 緩存功能,提供兩個(gè)對(duì)象:RedissonSpringCacheManager 和 RedissonSpringLocalCachedCacheManager。RedissonSpringLocalCachedCacheManager 支持本地緩存。

下面是一個(gè)

RedissonSpringLocalCachedCacheManager 對(duì)象的示例配置:

  
 
 
  1. @Configuration
  2. @ComponentScan
  3. @EnableCaching
  4. public static class Application {
  5.     @Bean(destroyMethod="shutdown")
  6.     RedissonClient redisson() throws IOException {
  7.         Config config = new Config();
  8.         config.useClusterServers()
  9.                 .addNodeAddress("127.0.0.1:7004", "127.0.0.1:7001");
  10.         return Redisson.create(config);
  11.     }
  12.     @Bean
  13.     CacheManager cacheManager(RedissonClient redissonClient) {
  14.         Map config = new HashMap();
  15.         // 新建 "testMap" 緩存:ttl=24分鐘,maxIdleTime=12分鐘
  16.         config.put("testMap", new CacheConfig(24*60*1000, 12*60*1000));
  17.         return new RedissonSpringCacheManager(redissonClient, config);
  18.     }
  19. }

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

與 RMaps 一樣,

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

4. JCache

JCache 是一個(gè) Java 緩存 API,允許開(kāi)發(fā)人員從緩存臨時(shí)存儲(chǔ)、檢索、更新和刪除對(duì)象。

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

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

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

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

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


網(wǎng)站標(biāo)題:Java框架之Redis分布式緩存
分享URL:http://www.5511xx.com/article/dpcjhcg.html