redis

redis

redis集群的问题

Spring Boot那时年少轻狂 回复了问题 • 2 人关注 • 2 个回复 • 199 次浏览 • 2017-09-11 17:58 • 来自相关话题

为redis添加slave的时候,健康检查出问题

Spring Bootxiaobaxi 回复了问题 • 2 人关注 • 1 个回复 • 257 次浏览 • 2017-08-14 14:07 • 来自相关话题

springboot redis 缓存使用疑惑

Spring Bootjdonee 回复了问题 • 5 人关注 • 3 个回复 • 455 次浏览 • 2017-07-18 17:40 • 来自相关话题

springboot如何配置多种缓存cache

Spring Boot泥瓦匠BYSocket 回复了问题 • 2 人关注 • 1 个回复 • 405 次浏览 • 2017-07-14 11:28 • 来自相关话题

加入redis包后报错

Spring Bootwayne 回复了问题 • 6 人关注 • 8 个回复 • 429 次浏览 • 2017-06-30 21:40 • 来自相关话题

Spring Boot 整合 Redis 注解实现缓存操作

Spring Boot泥瓦匠BYSocket 发表了文章 • 19 个评论 • 1122 次浏览 • 2017-06-06 14:34 • 来自相关话题

『 多亏了合作,整体大于部分的总和。 』

本文提纲
前言
一、注解缓存的好处
二、运行 springboot-mybatis-redis-annotation 工程案例
三、springboot-mybatis-redis-annotation 工程代码配置详解
四、小结

运行环境:
Mac OS 10.12.x
JDK 8 +
Redis 3.2.8
Spring Boot 1.5.3.RELEASE
Spring Boot Data Redis 1.5.3.RELEASE
 

一、注解缓存的好处
Spring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各种缓存解决方案,并对代码的影响最小。

每次目标方法的调用时,抽象使用缓存行为来检查执行方法,检查执行方法是否给定了缓存的执行参数。如果有,则返回缓存结果,不执行具体实际方法;如果没有,则执行方法,并将结果缓存后,返回结果给用户。

显然,只适用于无论执行多少次都是某个给定输入(或参数)返回相同的输出(结果)的方法。

二、运行 springboot-mybatis-redis-annotation 工程案例
(感谢 anoy 提供的工程示例:http://spring4all.com/people/anoy) 

git clone 下载工程 springboot-learning-example ,项目地址见 GitHub - https://github.com/JeffLi1993/springboot-learning-example。 

下面开始运行工程步骤(Quick Start):
1.Redis 准备
本地安装 Redis
详见写过的文章《 Redis 安装 》http://www.bysocket.com/?p=917 

2. springboot-mybatis-redis-annotation 工程项目结构介绍

springboot-mybatis-redis 工程项目结构如下图所示:
org.spring.springboot.domain - 实体类
org.spring.springboot.service - 业务逻辑层
Application - 应用启动类
application.properties - 应用配置文件,应用启动会自动读取配置

 3.改数据库配置
打开 application.properties 文件, 修改相应的 Redis 配置。
 
4.编译工程
在项目根目录 springboot-learning-example,运行 maven 指令:$(document).ready(function() {$('pre code').each(function(i, block) { hljs.highlightBlock( block); }); });mvn clean install
 
5.运行工程
右键运行 springboot-mybatis-redis-annotation 工程 ApplicationTests 应用测试类启动类。
可以从日志中看出:2017-06-06 14:13:32.373 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : City{id=1, provinceId=10, cityName='上海', description='人称魔都的地方'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 第一次查询:City{id=2, provinceId=20, cityName='北京', description='中国帝都'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 第二次查询:City{id=2, provinceId=20, cityName='北京', description='中国帝都'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 更新描述后查询:City{id=2, provinceId=20, cityName='北京', description='想不想去北京玩玩呢?'}1 - 新增数据
2 - 从 DB 获取数据,并存入缓存
3 - 从缓存中获取数据
4 - 更新数据,并更新了缓存

三、springboot-mybatis-redis-annotation 工程代码配置详解
1. pom.xml<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma ... gt%3B
<modelVersion>4.0.0</modelVersion>

<groupId>springboot</groupId>
<artifactId>springboot-mybatis-redis-annotation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis-redis-annotation :: 注解实现整合 Redis 作为缓存</name>

<!-- Spring Boot 启动父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>

<properties>
<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
<mysql-connector>5.1.39</mysql-connector>
<fastjson-version>1.2.32</fastjson-version>
</properties>

<dependencies>

<!-- Spring Boot Data Cache 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<!-- Spring Boot Data Redis 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- Spring Boot Web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Spring Boot Test 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>


2. CityServiceImpl 实现类/**
* 城市业务逻辑实现类
* <p>
* Created by bysocket on 07/02/2017.
*/
@Service
public class CityServiceImpl implements CityService {


// 模拟数据库存储
private Map<String, City> cityMap = new HashMap<String, City>();

public void saveCity(City city){
// 模拟数据库插入操作
cityMap.put(city.getCityName(), city);
}

@Cacheable(value = "baseCityInfo")
public City getCityByName(String cityName){
// 模拟数据库查询并返回
return cityMap.get(cityName);
}

@CachePut(value = "baseCityInfo")
public void updateCityDescription(String cityName, String description){
City city = cityMap.get(cityName);
city.setDescription(description);
// 模拟更新数据库
cityMap.put(cityName, city);
}

}


@Cacheable 用于标识可缓存的方法 - 即将结果存储到缓存中的方法
@CachePut 需要更新缓存,但不影响方法执行。

注意:对同一个方法同时使用 @CachePut 和 @Cacheable 注解通常是不鼓励的。因为它们有不同的行为。后者通过使用缓存并跳过方法执行,前者强制执行方法并进行缓存更新。

四、小结
本文涉及到 Spring Boot 在使用 Redis 注解缓存时,注解的使用方式,比较简单。 

 
本文作者: 泥瓦匠
原文链接: http://www.bysocket.com
版权归作者所有,转载请注明出处 查看全部
『 多亏了合作,整体大于部分的总和。 』

本文提纲
前言
一、注解缓存的好处
二、运行 springboot-mybatis-redis-annotation 工程案例
三、springboot-mybatis-redis-annotation 工程代码配置详解
四、小结

运行环境:
Mac OS 10.12.x
JDK 8 +
Redis 3.2.8
Spring Boot 1.5.3.RELEASE
Spring Boot Data Redis 1.5.3.RELEASE
 

一、注解缓存的好处
Spring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各种缓存解决方案,并对代码的影响最小。

每次目标方法的调用时,抽象使用缓存行为来检查执行方法,检查执行方法是否给定了缓存的执行参数。如果有,则返回缓存结果,不执行具体实际方法;如果没有,则执行方法,并将结果缓存后,返回结果给用户。

显然,只适用于无论执行多少次都是某个给定输入(或参数)返回相同的输出(结果)的方法。

二、运行 springboot-mybatis-redis-annotation 工程案例
(感谢 anoy 提供的工程示例:http://spring4all.com/people/anoy) 

git clone 下载工程 springboot-learning-example ,项目地址见 GitHub - https://github.com/JeffLi1993/springboot-learning-example。 

下面开始运行工程步骤(Quick Start):
1.Redis 准备
本地安装 Redis
详见写过的文章《 Redis 安装 》http://www.bysocket.com/?p=917 

2. springboot-mybatis-redis-annotation 工程项目结构介绍


springboot-mybatis-redis 工程项目结构如下图所示:
org.spring.springboot.domain - 实体类
org.spring.springboot.service - 业务逻辑层
Application - 应用启动类
application.properties - 应用配置文件,应用启动会自动读取配置


 3.改数据库配置
打开 application.properties 文件, 修改相应的 Redis 配置。
 
4.编译工程
在项目根目录 springboot-learning-example,运行 maven 指令:
mvn clean install

 
5.运行工程
右键运行 springboot-mybatis-redis-annotation 工程 ApplicationTests 应用测试类启动类。
可以从日志中看出:
2017-06-06 14:13:32.373  INFO 12085 --- [           main] o.s.s.service.impl.CityServiceImpl       : City{id=1, provinceId=10, cityName='上海', description='人称魔都的地方'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 第一次查询:City{id=2, provinceId=20, cityName='北京', description='中国帝都'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 第二次查询:City{id=2, provinceId=20, cityName='北京', description='中国帝都'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 更新描述后查询:City{id=2, provinceId=20, cityName='北京', description='想不想去北京玩玩呢?'}
1 - 新增数据
2 - 从 DB 获取数据,并存入缓存
3 - 从缓存中获取数据
4 - 更新数据,并更新了缓存

三、springboot-mybatis-redis-annotation 工程代码配置详解
1. pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma ... gt%3B
<modelVersion>4.0.0</modelVersion>

<groupId>springboot</groupId>
<artifactId>springboot-mybatis-redis-annotation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis-redis-annotation :: 注解实现整合 Redis 作为缓存</name>

<!-- Spring Boot 启动父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>

<properties>
<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
<mysql-connector>5.1.39</mysql-connector>
<fastjson-version>1.2.32</fastjson-version>
</properties>

<dependencies>

<!-- Spring Boot Data Cache 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<!-- Spring Boot Data Redis 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- Spring Boot Web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Spring Boot Test 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>


2. CityServiceImpl 实现类
/**
* 城市业务逻辑实现类
* <p>
* Created by bysocket on 07/02/2017.
*/
@Service
public class CityServiceImpl implements CityService {


// 模拟数据库存储
private Map<String, City> cityMap = new HashMap<String, City>();

public void saveCity(City city){
// 模拟数据库插入操作
cityMap.put(city.getCityName(), city);
}

@Cacheable(value = "baseCityInfo")
public City getCityByName(String cityName){
// 模拟数据库查询并返回
return cityMap.get(cityName);
}

@CachePut(value = "baseCityInfo")
public void updateCityDescription(String cityName, String description){
City city = cityMap.get(cityName);
city.setDescription(description);
// 模拟更新数据库
cityMap.put(cityName, city);
}

}


@Cacheable 用于标识可缓存的方法 - 即将结果存储到缓存中的方法
@CachePut 需要更新缓存,但不影响方法执行。

注意:对同一个方法同时使用 @CachePut 和 @Cacheable 注解通常是不鼓励的。因为它们有不同的行为。后者通过使用缓存并跳过方法执行,前者强制执行方法并进行缓存更新。

四、小结
本文涉及到 Spring Boot 在使用 Redis 注解缓存时,注解的使用方式,比较简单。 


 
本文作者: 泥瓦匠
原文链接: http://www.bysocket.com
版权归作者所有,转载请注明出处


springboot redis缓存key设置策略?

Spring Boot泥瓦匠BYSocket 回复了问题 • 3 人关注 • 3 个回复 • 598 次浏览 • 2017-06-01 15:42 • 来自相关话题

redis集群的问题

回复

Spring Boot那时年少轻狂 回复了问题 • 2 人关注 • 2 个回复 • 199 次浏览 • 2017-09-11 17:58 • 来自相关话题

为redis添加slave的时候,健康检查出问题

回复

Spring Bootxiaobaxi 回复了问题 • 2 人关注 • 1 个回复 • 257 次浏览 • 2017-08-14 14:07 • 来自相关话题

springboot redis 缓存使用疑惑

回复

Spring Bootjdonee 回复了问题 • 5 人关注 • 3 个回复 • 455 次浏览 • 2017-07-18 17:40 • 来自相关话题

springboot如何配置多种缓存cache

回复

Spring Boot泥瓦匠BYSocket 回复了问题 • 2 人关注 • 1 个回复 • 405 次浏览 • 2017-07-14 11:28 • 来自相关话题

加入redis包后报错

回复

Spring Bootwayne 回复了问题 • 6 人关注 • 8 个回复 • 429 次浏览 • 2017-06-30 21:40 • 来自相关话题

springboot redis缓存key设置策略?

回复

Spring Boot泥瓦匠BYSocket 回复了问题 • 3 人关注 • 3 个回复 • 598 次浏览 • 2017-06-01 15:42 • 来自相关话题

Spring Boot 整合 Redis 注解实现缓存操作

Spring Boot泥瓦匠BYSocket 发表了文章 • 19 个评论 • 1122 次浏览 • 2017-06-06 14:34 • 来自相关话题

『 多亏了合作,整体大于部分的总和。 』

本文提纲
前言
一、注解缓存的好处
二、运行 springboot-mybatis-redis-annotation 工程案例
三、springboot-mybatis-redis-annotation 工程代码配置详解
四、小结

运行环境:
Mac OS 10.12.x
JDK 8 +
Redis 3.2.8
Spring Boot 1.5.3.RELEASE
Spring Boot Data Redis 1.5.3.RELEASE
 

一、注解缓存的好处
Spring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各种缓存解决方案,并对代码的影响最小。

每次目标方法的调用时,抽象使用缓存行为来检查执行方法,检查执行方法是否给定了缓存的执行参数。如果有,则返回缓存结果,不执行具体实际方法;如果没有,则执行方法,并将结果缓存后,返回结果给用户。

显然,只适用于无论执行多少次都是某个给定输入(或参数)返回相同的输出(结果)的方法。

二、运行 springboot-mybatis-redis-annotation 工程案例
(感谢 anoy 提供的工程示例:http://spring4all.com/people/anoy) 

git clone 下载工程 springboot-learning-example ,项目地址见 GitHub - https://github.com/JeffLi1993/springboot-learning-example。 

下面开始运行工程步骤(Quick Start):
1.Redis 准备
本地安装 Redis
详见写过的文章《 Redis 安装 》http://www.bysocket.com/?p=917 

2. springboot-mybatis-redis-annotation 工程项目结构介绍

springboot-mybatis-redis 工程项目结构如下图所示:
org.spring.springboot.domain - 实体类
org.spring.springboot.service - 业务逻辑层
Application - 应用启动类
application.properties - 应用配置文件,应用启动会自动读取配置

 3.改数据库配置
打开 application.properties 文件, 修改相应的 Redis 配置。
 
4.编译工程
在项目根目录 springboot-learning-example,运行 maven 指令:mvn clean install
 
5.运行工程
右键运行 springboot-mybatis-redis-annotation 工程 ApplicationTests 应用测试类启动类。
可以从日志中看出:2017-06-06 14:13:32.373 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : City{id=1, provinceId=10, cityName='上海', description='人称魔都的地方'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 第一次查询:City{id=2, provinceId=20, cityName='北京', description='中国帝都'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 第二次查询:City{id=2, provinceId=20, cityName='北京', description='中国帝都'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 更新描述后查询:City{id=2, provinceId=20, cityName='北京', description='想不想去北京玩玩呢?'}1 - 新增数据
2 - 从 DB 获取数据,并存入缓存
3 - 从缓存中获取数据
4 - 更新数据,并更新了缓存

三、springboot-mybatis-redis-annotation 工程代码配置详解
1. pom.xml<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma ... gt%3B
<modelVersion>4.0.0</modelVersion>

<groupId>springboot</groupId>
<artifactId>springboot-mybatis-redis-annotation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis-redis-annotation :: 注解实现整合 Redis 作为缓存</name>

<!-- Spring Boot 启动父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>

<properties>
<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
<mysql-connector>5.1.39</mysql-connector>
<fastjson-version>1.2.32</fastjson-version>
</properties>

<dependencies>

<!-- Spring Boot Data Cache 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<!-- Spring Boot Data Redis 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- Spring Boot Web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Spring Boot Test 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>


2. CityServiceImpl 实现类/**
* 城市业务逻辑实现类
* <p>
* Created by bysocket on 07/02/2017.
*/
@Service
public class CityServiceImpl implements CityService {


// 模拟数据库存储
private Map<String, City> cityMap = new HashMap<String, City>();

public void saveCity(City city){
// 模拟数据库插入操作
cityMap.put(city.getCityName(), city);
}

@Cacheable(value = "baseCityInfo")
public City getCityByName(String cityName){
// 模拟数据库查询并返回
return cityMap.get(cityName);
}

@CachePut(value = "baseCityInfo")
public void updateCityDescription(String cityName, String description){
City city = cityMap.get(cityName);
city.setDescription(description);
// 模拟更新数据库
cityMap.put(cityName, city);
}

}


@Cacheable 用于标识可缓存的方法 - 即将结果存储到缓存中的方法
@CachePut 需要更新缓存,但不影响方法执行。

注意:对同一个方法同时使用 @CachePut 和 @Cacheable 注解通常是不鼓励的。因为它们有不同的行为。后者通过使用缓存并跳过方法执行,前者强制执行方法并进行缓存更新。

四、小结
本文涉及到 Spring Boot 在使用 Redis 注解缓存时,注解的使用方式,比较简单。 

 
本文作者: 泥瓦匠
原文链接: http://www.bysocket.com
版权归作者所有,转载请注明出处 查看全部
『 多亏了合作,整体大于部分的总和。 』

本文提纲
前言
一、注解缓存的好处
二、运行 springboot-mybatis-redis-annotation 工程案例
三、springboot-mybatis-redis-annotation 工程代码配置详解
四、小结

运行环境:
Mac OS 10.12.x
JDK 8 +
Redis 3.2.8
Spring Boot 1.5.3.RELEASE
Spring Boot Data Redis 1.5.3.RELEASE
 

一、注解缓存的好处
Spring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各种缓存解决方案,并对代码的影响最小。

每次目标方法的调用时,抽象使用缓存行为来检查执行方法,检查执行方法是否给定了缓存的执行参数。如果有,则返回缓存结果,不执行具体实际方法;如果没有,则执行方法,并将结果缓存后,返回结果给用户。

显然,只适用于无论执行多少次都是某个给定输入(或参数)返回相同的输出(结果)的方法。

二、运行 springboot-mybatis-redis-annotation 工程案例
(感谢 anoy 提供的工程示例:http://spring4all.com/people/anoy) 

git clone 下载工程 springboot-learning-example ,项目地址见 GitHub - https://github.com/JeffLi1993/springboot-learning-example。 

下面开始运行工程步骤(Quick Start):
1.Redis 准备
本地安装 Redis
详见写过的文章《 Redis 安装 》http://www.bysocket.com/?p=917 

2. springboot-mybatis-redis-annotation 工程项目结构介绍


springboot-mybatis-redis 工程项目结构如下图所示:
org.spring.springboot.domain - 实体类
org.spring.springboot.service - 业务逻辑层
Application - 应用启动类
application.properties - 应用配置文件,应用启动会自动读取配置


 3.改数据库配置
打开 application.properties 文件, 修改相应的 Redis 配置。
 
4.编译工程
在项目根目录 springboot-learning-example,运行 maven 指令:
mvn clean install

 
5.运行工程
右键运行 springboot-mybatis-redis-annotation 工程 ApplicationTests 应用测试类启动类。
可以从日志中看出:
2017-06-06 14:13:32.373  INFO 12085 --- [           main] o.s.s.service.impl.CityServiceImpl       : City{id=1, provinceId=10, cityName='上海', description='人称魔都的地方'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 第一次查询:City{id=2, provinceId=20, cityName='北京', description='中国帝都'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 第二次查询:City{id=2, provinceId=20, cityName='北京', description='中国帝都'}
2017-06-06 14:13:32.387 INFO 12085 --- [ main] o.s.s.service.impl.CityServiceImpl : 更新描述后查询:City{id=2, provinceId=20, cityName='北京', description='想不想去北京玩玩呢?'}
1 - 新增数据
2 - 从 DB 获取数据,并存入缓存
3 - 从缓存中获取数据
4 - 更新数据,并更新了缓存

三、springboot-mybatis-redis-annotation 工程代码配置详解
1. pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/ma ... gt%3B
<modelVersion>4.0.0</modelVersion>

<groupId>springboot</groupId>
<artifactId>springboot-mybatis-redis-annotation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mybatis-redis-annotation :: 注解实现整合 Redis 作为缓存</name>

<!-- Spring Boot 启动父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>

<properties>
<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
<mysql-connector>5.1.39</mysql-connector>
<fastjson-version>1.2.32</fastjson-version>
</properties>

<dependencies>

<!-- Spring Boot Data Cache 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>

<!-- Spring Boot Data Redis 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<!-- Spring Boot Web 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Spring Boot Test 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>


2. CityServiceImpl 实现类
/**
* 城市业务逻辑实现类
* <p>
* Created by bysocket on 07/02/2017.
*/
@Service
public class CityServiceImpl implements CityService {


// 模拟数据库存储
private Map<String, City> cityMap = new HashMap<String, City>();

public void saveCity(City city){
// 模拟数据库插入操作
cityMap.put(city.getCityName(), city);
}

@Cacheable(value = "baseCityInfo")
public City getCityByName(String cityName){
// 模拟数据库查询并返回
return cityMap.get(cityName);
}

@CachePut(value = "baseCityInfo")
public void updateCityDescription(String cityName, String description){
City city = cityMap.get(cityName);
city.setDescription(description);
// 模拟更新数据库
cityMap.put(cityName, city);
}

}


@Cacheable 用于标识可缓存的方法 - 即将结果存储到缓存中的方法
@CachePut 需要更新缓存,但不影响方法执行。

注意:对同一个方法同时使用 @CachePut 和 @Cacheable 注解通常是不鼓励的。因为它们有不同的行为。后者通过使用缓存并跳过方法执行,前者强制执行方法并进行缓存更新。

四、小结
本文涉及到 Spring Boot 在使用 Redis 注解缓存时,注解的使用方式,比较简单。 


 
本文作者: 泥瓦匠
原文链接: http://www.bysocket.com
版权归作者所有,转载请注明出处