成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 框架之Redis 分布式緩存

存儲 存儲軟件 分布式 Redis
在提高應用程序速度和性能上,每一毫秒都很重要。根據谷歌的一項研究,假如一個網站在3秒鐘或更短時間內沒有加載成功,會有 53% 的手機用戶會離開。

[[269630]]

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

為什么要在 Java 分布式應用程序中使用緩存?

在提高應用程序速度和性能上,每一毫秒都很重要。根據谷歌的一項研究,假如一個網站在3秒鐘或更短時間內沒有加載成功,會有 53% 的手機用戶會離開。

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

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

Redis 是一種流行的開源內存數據存儲,可用作數據庫、緩存或消息代理。由于是從內存而非磁盤加載數據,Redis 比許多傳統的數據庫解決方案更快。

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

好消息是,有一些類似 Redisson 這樣的 Redis 框架,可以幫助構建應用程序所需的分布式緩存。下一節將討論 Redisson 中分布式緩存的三個重要實現:Maps、Spring Cache 和 JCache。

1. Redisson 分布式緩存

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

2. Map

Map 是 Java 最有用的集合之一。Redisson 提供了一個名為 RMap 的 Java Map 實現,支持本地緩存。

如果希望執行多個讀操作或網絡環回(roundtrip),應使用支持本地緩存的 RMap。通過本地存儲 Map 數據,RMap 比不啟用本地緩存時快45倍。通用分布式緩存使用 RMapCache,本地緩存使用 RLocalCachedMap。

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

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

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

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

當不再需要時,應銷毀 RMapCache 對象:

  1. map.destroy(); 

Redisson 關閉后不用再做銷毀操作。

3. Spring Cache

Spring 是一個用于構建企業級 Web 應用程序的 Java 框架,也提供了緩存支持。

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

下面是一個

RedissonSpringLocalCachedCacheManager 對象的示例配置:

  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<String, CacheConfig> config = new HashMap<String, CacheConfig>(); 
  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.     } 

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

與 RMaps 一樣,

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

4. JCache

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

Redisson 提供了 Redis 的 JCache API 實現。下面是在 Redisson 中使用默認配置調用 JCache API 的示例:

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

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

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

Redisson 的 JCache 實現已經通過 JCache TCK 的所有測試。你也可以自行驗證。

責任編輯:武曉燕 來源: Java研發軍團
相關推薦

2019-02-18 11:16:12

Redis分布式緩存

2018-02-07 10:46:20

數據存儲

2014-11-19 10:12:29

Java分布式緩存

2023-01-13 07:39:07

2019-12-26 08:59:20

Redis主從架構

2019-06-19 15:40:06

分布式鎖RedisJava

2018-01-26 14:47:04

分布式緩存

2023-05-12 11:52:21

緩存場景性能

2023-02-28 07:01:11

分布式緩存平臺

2013-06-13 11:29:14

分布式分布式緩存

2018-07-17 08:14:22

分布式分布式鎖方位

2009-08-17 16:34:21

.NET分布式緩存Memcached

2020-04-28 14:25:14

緩存分布式數據

2023-06-26 00:14:28

Openjob分布式任務

2021-09-09 15:45:17

機器學習人工智能Ray

2018-12-14 10:06:22

緩存分布式系統

2018-03-26 14:09:00

緩存Redis分布式緩存

2009-11-09 09:25:24

Memcached入門

2015-09-21 09:20:11

C#Couchbase使用

2017-12-12 14:51:15

分布式緩存設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久久毛片 | 国产在线一区二 | 国产免费一级一级 | 91麻豆精品国产91久久久资源速度 | 国产91久久久久蜜臀青青天草二 | 国产精品一区二区三 | 久久av一区二区三区 | 91精品国产乱码久久久久久久久 | 不卡在线视频 | 国产九九精品 | 国产成人av在线播放 | 日韩中文字幕免费在线观看 | 欧美高清免费 | 美国一级黄色片 | 中文字幕一区二区三区日韩精品 | 精品1区| 久草视频在线播放 | 成人久久久 | 美女视频网站久久 | 国产wwwcom| 精品国产91| 中文字幕一区二区在线观看 | 91视频网 | 久久综合亚洲 | 国产成人av电影 | 欧美日韩中文国产一区发布 | 精品一区二区三区免费毛片 | 中文字幕在线观看精品 | 久久久久久久国产精品 | 爱爱综合网 | 日韩一区二区三区在线 | 中文字幕亚洲一区二区三区 | 九色视频网 | 久久精品二区亚洲w码 | 日皮视频免费 | 在线免费看黄 | 午夜在线电影网 | 国产精品久久久久久亚洲调教 | 国产成人精品一区二区三区在线 | 成人在线中文字幕 | 欧美亚洲国产一区二区三区 |