JedisUtil.java
package com.gf.redisservice.service;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
@Service
public class JedisUtil {
public Jedis getJedis() {
//声明Redis连接
Jedis jedis = null;
//声明创建连接池的配置类
JedisPoolConfig config = new JedisPoolConfig();
//配置最大连接数
config.setMaxTotal(30);
//设置最大空闲数量
config.setMaxIdle(10);
//设置每次释放的数目
config.setNumTestsPerEvictionRun(100);
//设置释放连接的扫描时间
config.setTimeBetweenEvictionRunsMillis(30000);
//设置连接最小空闲时间
config.setMinEvictableIdleTimeMillis(30000);
//设置redis连接在空闲多久后进行释放,当实际的空闲大于设置的时间,且空闲数量大于最大空闲数量时
config.setSoftMinEvictableIdleTimeMillis(10000);
//设置连接时的最大等待时间
config.setMaxWaitMillis(30000);
//设置是否检测 连接的有效性,默认false
config.setTestOnBorrow(true);
//是否检查 空闲连接的有效性,默认false
config.setTestWhileIdle(true);
//连接池中的连接使用完毕后是否让它阻塞,默认true(阻塞,继续等待) false:报异常
config.setBlockWhenExhausted(false);
//根据配置信息创建连接池
//参数1:配置信息类 参数二:redis集群中的某个服务的IP 参数三:端口
JedisPool jd = new JedisPool(config, "127.0.0.1",6380);
//从连接池中获取一个连接
jedis=jd.getResource();
return jedis;
}
}
QueryGoodsController.java
package com.gf.redisservice.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gf.redisservice.pojo.Goods;
import com.gf.redisservice.service.GoodsService;
import com.gf.redisservice.service.JedisUtil;
import net.sf.json.JSONArray;
import redis.clients.jedis.Jedis;
@RestController
public class QueryGoodsController {
@Autowired
private GoodsService gs;
@Autowired
private JedisUtil ju;
@GetMapping("/getgoods")
public String getAllGoods() {
//先开启redis缓存
//获取和redis的连接
Jedis jedis = ju.getJedis();
//选择库
jedis.select(1);
//先上redis库中获取数据
String data = jedis.hget("goods", "foods");//不一定获取到
System.out.println("从redis中读取到的数据:"+data);
if(data==null) {
//为空说明redis缓存中没有数据,此时需要到数据库中查询获取
List<Goods> goods=gs.getAllGoods();
//把集合转成json形式
data = JSONArray.fromObject(goods).toString();
//存入redis缓存中
jedis.hset("goods", "foods", data);
}
//设置数据在缓存中的有效时间:
jedis.expire("goods", 60*60*24);
return data;
}
}