SpringBoot淺析緩存機制之Redis單機緩存應用
Redis單機緩存
和 Ehcache 一樣,如果在 classpath 下存在 Redis 并且 Redis 已經(jīng)配置好了,此時默認就會使用 RedisCacheManager 作為緩存提供者,Redis 單機緩存使用步驟如下:
1. 創(chuàng)建項目添加緩存依賴
創(chuàng)建 Spring Boot 項目,添加 spring-boot-starter-cache 和 Redis 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2. 緩存配置
Redis 單機緩存只需要開發(fā)者在 application.properties 中進行 Redis 配置及緩存配置即可,代碼如下
# 緩存配置
# 配置緩存名稱,Redis中的key都有一個前綴,默認前綴是“緩存名::”
spring.cache.cache-names=c1,c2
# 配置緩存有效期,即Redis中的key過期時間
spring.cache.redis.time-to-live=1800s
# Redis 配置
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123456
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.max-wait=-1ms
spring.redis.jedis.pool.min-idle=0
3. 開啟緩存
在項目入口類中開啟緩存,如下
@SpringBootApplication
@EnableCaching
public class CacheApplication {
public static void main(String[] args) {
SpringApplication.run(CacheApplication.class, args);
}
}第 4、5 步與SpringBoot淺析緩存機制之Ehcache 2.x應用一樣,此處不再做過多的解釋
4. 創(chuàng)建 BookDao
Book
public class Book implements Serializable {
private Integer id;
private String name;
private String author;
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", author='" + author + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}BookDao
@Repository
@CacheConfig(cacheNames = "book_cache")
public class BookDao {
@Cacheable
public Book getBookById(Integer id) {
System.out.println("getBookById");
Book book = new Book();
book.setId(id);
book.setName("三國演義");
book.setAuthor("羅貫中");
return book;
}
@CachePut(key = "#book.id")
public Book updateBookById(Book book) {
System.out.println("updateBookById");
book.setName("三國演義2");
return book;
}
@CacheEvict(key = "#id")
public void deleteBookById(Integer id) {
System.out.println("deleteBookById");
}
}
5. 創(chuàng)建測試類
創(chuàng)建測試類,對 Service 中的方法進行測試
@RunWith(SpringRunner.class)
@SpringBootTest
public class CacheApplicationTests {
@Autowired
BookDao bookDao;
@Test
public void contextLoads() {
bookDao.deleteBookById(1);
bookDao.getBookById(1);
bookDao.getBookById(1);
bookDao.deleteBookById(1);
Book b3 = bookDao.getBookById(1);
System.out.println("b3:"+b3);
Book b = new Book();
b.setName("三國演義");
b.setAuthor("羅貫中");
b.setId(1);
bookDao.updateBookById(b);
Book b4 = bookDao.getBookById(1);
System.out.println("b4:"+b4);
}
}
執(zhí)行該方法,控制臺打印日志如下:
deleteBookById
getBookById
deleteBookById
getBookById
b3:Book{id=1, name='三國演義', author='羅貫中'}
updateBookById
b4:Book{id=1, name='三國演義2', author='羅貫中'}
為了防止來回測試緩存的影響,這里先執(zhí)行刪除操作(同時也會刪除緩存)。然后執(zhí)行了一次查詢,正常打印,接著又執(zhí)行了一次查詢沒打印(直接讀取的緩存),然后執(zhí)行刪除,接著再執(zhí)行查詢正常打?。▌h除操作也刪除了緩存),再接著執(zhí)行更新操作(同時更新了緩存),最后再次查詢,打印更新后的數(shù)據(jù)。
到此這篇關于SpringBoot淺析緩存機制之Redis單機緩存應用的文章就介紹到這了,更多相關SpringBoot Redis單機緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- SpringBoot結(jié)合Redis實現(xiàn)緩存管理功能
- SpringBoot整合redis使用緩存注解詳解
- SpringBoot整合MP通過Redis實現(xiàn)二級緩存方式
- springboot使用redis注解做緩存的基本操作方式
- SpringBoot中Redis的緩存更新策略詳解
- springboot整合ehcache和redis實現(xiàn)多級緩存實戰(zhàn)案例
- SpringBoot結(jié)合Redis實現(xiàn)緩存
- SpringBoot使用Redis實現(xiàn)分布式緩存
- SpringBoot中的Redis?緩存問題及操作方法
- SpringBoot整合Redis實現(xiàn)token緩存
相關文章
Java中CyclicBarrier和CountDownLatch的用法與區(qū)別
CyclicBarrier和CountDownLatch這兩個工具都是在java.util.concurrent包下,并且平時很多場景都會使用到。本文將會對兩者進行分析,記錄他們的用法和區(qū)別,感興趣的可以了解一下2021-08-08
windows定時器配置執(zhí)行java jar文件的方法詳解
這篇文章主要給大家介紹了關于windows定時器配置執(zhí)行java jar文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口
接口限流是為了保護系統(tǒng)和服務,防止因為過多的請求而崩潰,本文主要介紹了SpringCloud+Redis實現(xiàn)Api接口限流防止惡意刷接口,具有一定的參考價值,感興趣的可以了解一下2024-03-03
理解 MyBatis 是如何在 Spring 容器中初始化的
這篇文章主要介紹了理解 MyBatis 是如何在 Spring 容器中初始化的,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11
Java實現(xiàn)JDBC連接數(shù)據(jù)庫簡單案例
這篇文章主要介紹了Java實現(xiàn)JDBC連接數(shù)據(jù)庫簡單案例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08

