本笔记使用RedisTemplate来整合redis,和Jedis是两码事。值得注意的是,RedisTemplate虽然是专门用于同spring整合的,它高度封装了Jedis,但有趣的是,它的效率远远不如Jedis(大佬们测的)。
首先引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
然后在yml文件中配置(这里只展示redis的配置):
这里注意,host的配置,如果想按具体IP来链接,需要先在redis安装目录的redis.windows.conf中,将127.0.0.1改成你的ip,或者改为0.0.0.0,意为任意ip均可链接redis
spring:
## Redis 配置
redis:
## Redis数据库索引(默认为0)
database: 0
## Redis服务器地址
host: 192.168.110.114
## Redis服务器连接端口
port: 6379
## Redis服务器连接密码(默认为空)
password:
jedis:
pool:
## 连接池最大连接数(使用负值表示没有限制)
#spring.redis.pool.max-active=8
max-active: 1024
## 连接池最大阻塞等待时间(使用负值表示没有限制)
#spring.redis.pool.max-wait=-1
max-wait: -1
## 连接池中的最大空闲连接
#spring.redis.pool.max-idle=8
max-idle: 200
## 连接池中的最小空闲连接
#spring.redis.pool.min-idle=0
min-idle: 0
在controller类中加入自动注入,并编写缓存代码
@Autowired
private RedisTemplate redisTemplate;
接下来就是真正起到缓存作用的代码了,这里要提一下,使用redisTemplate,是对Jedis的高度封装。
//返回的结果集,一会决定这个结果集从redis中取还是数据库
List<Xkkm> xkkms = new ArrayList<Xkkm>();
//拼接查询用的主键
String key = dm+"_xxkey";
String str = redisTemplate.opsForValue().get(key)+"";
//判断redis中是否包含这个key的list集合
if(str==""||str==null||str.equals("")||str.equals("null")){
//访问数据库
xkkms = xkkmService.queryXkkmByXxdm(dm);
//转为josn防止乱码
String s = JSON.toJSON(xkkms).toString();
//存入redis
redisTemplate.opsForValue().set(key, s);
}else{
//从redis中取出
String string = redisTemplate.opsForValue().get(key)+"";
//转化为json格
xkkms = JSONObject.parseArray(string,Xkkm.class);
}