SpringBoot 2.0.3 版本、redis3.2版本
1. 加入jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>
spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>
org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</
artifactId> </dependency>
2. 编写RedisConfig类
package com.pibigstar.common.config; import
org.springframework.cache.CacheManager;import
org.springframework.cache.annotation.CachingConfigurerSupport;import
org.springframework.cache.annotation.EnableCaching;import
org.springframework.cache.interceptor.KeyGenerator;import
org.springframework.context.annotation.Bean;import
org.springframework.context.annotation.Configuration;import
org.springframework.data.redis.cache.RedisCacheManager;import
org.springframework.data.redis.connection.RedisConnectionFactory;@Configuration
@EnableCaching public class RedisConfig extends CachingConfigurerSupport{
//缓存管理器 @Bean public CacheManager cacheManager(RedisConnectionFactory factory)
{ RedisCacheManager cacheManager = RedisCacheManager.builder(factory).build();
return cacheManager; } //自定义缓存key生成策略 @Bean public KeyGenerator keyGenerator() {
return new KeyGenerator(){ @Override public Object generate(Object target,
java.lang.reflect.Method method, Object... params) { StringBuffer sb =new
StringBuffer(); sb.append(target.getClass().getName());
sb.append(method.getName());for(Object obj:params){ sb.append(obj.toString());
} System.out.println("调用Redis生成key:"+sb.toString()); return sb.toString(); } };
} }
2.1 配置application.yml文件
spring: redis: host: 127.0.0.1 port: 6379 database: 0 # 设置数据库索引为0 默认为0
password:# 密码为空 jedis: pool: max-active: 1000 # 连接池最大连接数(使用负值表示没有限制) max-wait: -
1 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-idle: 10 # 连接池中的最大空闲连接 min-idle: 2 # 连接池中的最小空闲连接
timeout:2000 # 连接超时时间(毫秒)
3. 在 适当的地方加入缓存
package com.pibigstar.service.impl; import java.util.List; import
javax.transaction.Transactional;import
org.springframework.beans.factory.annotation.Autowired;import
org.springframework.cache.annotation.CacheConfig;import
org.springframework.cache.annotation.Cacheable;import
org.springframework.stereotype.Service;import com.pibigstar.dao.GradeMapper;
import com.pibigstar.domain.Grade; import com.pibigstar.service.GradeService;
@Service @CacheConfig(cacheNames="grades") public class GradeServiceImpl
implements GradeService{ @Autowired private GradeMapper gradeMapper; @Override
@Cacheable //开启缓存 public Grade getOneById(Long id) { return
gradeMapper.selectByPrimaryKey(id); }@Override @Cacheable //开启缓存 public
List<Grade>list() { return gradeMapper.findAll(); } }
* @Cacheable将查询结果缓存到redis中,(key=”#p0”)指定传入的第一个参数作为redis的key。
* @CachePut,指定key,将更新的结果同步到redis中
* @CacheEvict,指定key,删除缓存数据,allEntries=true,方法调用后将立即清除缓存
4. 启动
4.1 启动redis
下载: https://pan.baidu.com/s/1tTYcCRUF-qDikhPTkSiJTQ
<https://pan.baidu.com/s/1tTYcCRUF-qDikhPTkSiJTQ>
解压,双击 start.bat 即可
RedisDesktopManager 文件夹放的是redis 可视化工具
4.2 启动项目
调用 开启缓存的那两个方法,就可以看到控制台输出了:
通过redis 可视化工具可以看到:
已经有key值生成了,
当再一次查询的时候就不会去从数据库中查询了,而是直接从我们的redis中查询,速度会非常快。
需要注意的是:当数据库中值改变了,因为它查询的是从缓存中查询,所以查出来的数据还是之前的数据,只有当key过期之后或者被删除之后才能查到最新的值
5. 常用redis命令
* flushdb:清空当前数据库。
* select [index]:选择索引数据库,index为索引值名,如:select 1。
* keys *:查看数据库内所有的key。
* del [key]:删除一条指定key的值。
* get [key] : 获得 指定key的值
* flushall:清空所有数据库。
* quit:退出客户端连接
关注我的公众号,获取最新Java干货
热门工具 换一换