SpringBoot+Redis实现缓存的实例
参考下面的博客做的:
https://blog.csdn.net/junmoxi/article/details/80913060
因为我用的版本有些老,所以引入的jar包等会有一些不一样。
第一步、加入依赖的jar包
<!-- Redis需要的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> -->
<!-- jedis依赖 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.1</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.1.RELEASE</version>
</dependency>
第二步、配制application.yml文件
下面是Redis相关的,host和port都是默认的
redis:
host: 127.0.0.1
port: 6379
database: 0 #设置数据库索引为0,默认为0
password: #密码为空,即使为空,也要写出来
pool:
max-active: 1000 #连接池最大连接数(使用负值表示没有限制)
max-wait: -1 #连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 #连接池中的最大空闲连接
min-idle: 2 #连接池中最小空闲连接
timeout: 2000 #连接超时时间(毫秒)
第三步、编写RedisConfig类
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.core.RedisTemplate;
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport
{
//缓存管理器
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate)
{
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);//老版本的方法
//新版使用如下方法
//RedisCacheManager cacheManager = RedisCacheManager.builder(factory).build();
return cacheManager;
}
//自定义缓存生成策略
@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();
}
};
}
}
第四步、在适当的地方加入缓存
import java.util.List;
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.huoli.demo.Mapper.XuserMapper;
import com.huoli.demo.entity.Xuser;
@Service
@CacheConfig(cacheNames = "xusers")
public class XuserService
{
@Autowired
private XuserMapper xuserMapper;
@Cacheable //开启缓存
public Xuser getOne(long id)
{
return xuserMapper.getOne(id);
}
@Cacheable //开启缓存
public List<Xuser> getAll()
{
return xuserMapper.getAll();
}
}
第五步、在浏览器中调用相关的方法
@RequestMapping("getUsers")
public List<Xuser> getUsers()
{
//List<Xuser> users = xuserMapper.getAll();
List<Xuser> users = xuserService.getAll();
return users;
}
结果为:
在Redis中可以看到: