Spring是Java編程語言的一個非常流行的應用程序框架,它使構建企業Java軟件變得更加容易。自3.1版以來,Spring一直支持將緩存添加到現有的Spring應用程序中,以提高性能和縮短響應時間。
Redis是一個開放源碼的內存中數據結構存儲區,可用於構建NoSQL數據庫.然而,Redis並不包括對一般Java或Spring等應用程序框架的預構建支持。
好消息是您可以通過使用第三方Redis Java客戶機來執行Spring和Redis緩存,例如Redis…Redisson與Spring框架完全兼容。在本文中,我們將討論如何使用Redisson在Spring中使用Redis執行緩存。
Spring緩存
Spring框架提供了緩存抽象層。Spring中緩存的相關注釋如下:
@cacheable:這個@cacheable註釋表示調用此方法的結果將被緩存。如果再次使用相同的參數調用該方法,則將從緩存中檢索結果,而不是調用該方法。
@CachePut:這個@CachePut註釋表示方法將觸發緩存PUT操作。
@CacheEvict:這個@CacheEvict註釋表示方法將觸發緩存退出操作。
@EnableCache:這個@EnableCache註釋支持Spring內置的緩存管理功能。
@緩存:這個@緩存註釋是用於多個緩存註釋的組註釋。
@CacheConfig:這個@CacheConfig註釋允許共享與緩存相關的公共設置,如緩存名稱和密鑰生成器.
安裝Redisson
安裝Redisson非常簡單。例如,如果您正在使用Maven,只需將下面的依賴項添加到您的pom.xml檔案:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.5</version>
</dependency>
Redisson中的緩存參數
Redisson中的每個Spring緩存都有兩個重要參數,它們以毫秒爲單位指定:
TTL:ttl(生存時間)參數確定緩存中對象的最大生存期。緩存中的所有對象在它們的生存期結束後都將被刪除,不管它們被請求的頻率有多頻繁。
maxIdleTime:這個maxIdleTime參數確定對象請求之間的最大間隔時間。如果這段時間沒有請求,對象將自動從緩存中刪除。此參數僅存在於Spring緩存的Redisson實現中。
如果這兩個參數未定義或等於0,則緩存中的對象將無限期地存儲。
使用Spring和Redis緩存的示例代碼
下面的示例代碼演示瞭如何使用Redisson在Spring和Redis中執行緩存。這段代碼使用了兩個Springbean:第一個用來創建和配置Redisson客戶機,第二個用來設置和測試緩存。
@Configuration
@ComponentScan
@EnableCaching
public class Application {
@Bean(destroyMethod="shutdown")
RedissonClient redisson() {
Config config = new Config();
config.useSingleServer()
.setAddress("redis://127.0.0.1:6379");
return Redisson.create(config);
}
@Bean
CacheManager cacheManager(RedissonClient redissonClient) {
Map<String, CacheConfig> config = new HashMap<>();
// create "testMap" spring cache with ttl = 24 minutes and maxIdleTime = 12 minutes
config.put("testMap", new CacheConfig(24*60*1000, 12*60*1000));
return new RedissonSpringCacheManager(redissonClient, config);
}
}
結語
由於本地緩存的強大功能,Redisson允許您將基於Redis的Spring緩存的性能提高45倍。