一、MySql建庫建表(容器)
systemctl start docker
docker images
二、緩存處理
1、以docker的形式搭建Redis 服務
docker run -di --name=lee_redis -p 6379:6379 redis
2、SpringDataRedis
Spring-data-redis是spring大家族的一部分,提供了在srping應用中通過簡單的配置訪問redis服務,對reids底層開發包(Jedis, JRedis, and RJC)進行了高度封裝,RedisTemplate提供了redis各種操作
3、例子:實現文章的緩存處理
(1)在social-article的pom.xml中引入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(2)修改application.yml ,在spring節點下添加配置
redis:
host: 192.168.25.136
(3)修改ArticleService 引入RedisTemplate,並修改findById方法
@Autowired
private RedisTemplate redisTemplate;
/**
* 根據ID查詢實體
* @param id
* @return
*/
public Article findById(String id) {
// 先從緩存中查詢當前對象
Article article = (Article) redisTemplate.opsForValue().get("article_" + id);
// 如果緩存沒有則到數據庫查詢並放入緩存
if (article == null) {
// 從數據庫中進行查詢
article = articleDao.findById(id).get();
// 存入緩存
redisTemplate.opsForValue().set("article_" + id, article);
}
return article;
}
這樣在查詢的時候,就會自動將文章放入緩存
(3)修改或刪除後清除緩存
/**
* 修改
* @param article
*/
public void update(Article article) {
// 刪除緩存
redisTemplate.delete( "article_" + article.getId() );
articleDao.save(article);
}
/**
* 刪除
* @param id
*/
public void deleteById(String id) {
// 刪除緩存
redisTemplate.delete( "article_" + id );
articleDao.deleteById(id);
}
(4)緩存過期處理
修改findById方法 ,設置1天的過期時間
// 存入緩存 設置過期時間爲1天
redisTemplate.opsForValue().set("article_" + id, article,1, TimeUnit.DAYS);
三、Spring Cache
Spring Cache使用方法與Spring對事務管理的配置相似。Spring Cache的核心就是對某
個方法進行緩存,其實質就是緩存該方法的返回結果,並把方法參數和結果用鍵值對的
方式存放到緩存中,當再次調用該方法使用相應的參數時,就會直接從緩存裏面取出指
定的結果進行返回。
- 常用註解
@Cacheable-------使用這個註解的方法在執行後會緩存其返回結果。
@CacheEvict--------使用這個註解的方法在其執行前或執行後移除Spring Cache中的某些
元素。
/**
* 根據ID查詢實體
* @param id
* @return
*/
@Cacheable(value = "gathering",key = "#id")
public Gathering findById(String id) {
return gatheringDao.findById(id).get();
}
/**
* 修改
* @param gathering
*/
@CacheEvict(value = "gathering",key = "#gathering.id")
public void update(Gathering gathering) {
gatheringDao.save(gathering);
}
/**
* 刪除
* @param id
*/
@CacheEvict(value = "gathering",key = "#id")
public void deleteById(String id) {
gatheringDao.deleteById(id);
}