第一步:导入redis依赖
<!-- jedis (一个redis client端的jar)-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
第二步:注入进spring-xml中
<!--redis配置-->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="host" value="你的虚拟机IP地址"></constructor-arg>
<constructor-arg name="port" value="6379"></constructor-arg>
</bean>
第三步:创建一个redis包,并创建RedisCache类
@Service("redisCache")
public class RedisCache {
@Resource
private JedisPool jedisPool;
/**
* 设置数据到redis
* @param key
* @param value
*/
public void setDataToRedis(String key,String value){
//先获得池中jedis对象
Jedis jedis = jedisPool.getResource();
//在进行jedis操作
jedis.set(key,value);
}
/**
* 获得redis中的数据
* @param key
* @return
*/
public String getDataFromRedis(String key){
Jedis jedis = jedisPool.getResource();
return jedis.get(key);
}
}
第四步:.在controller类中
@RequestMapping("/redis")
public String redisCaches(Map map){
List<User> li = null;
//1.先从redis缓存中获取数据
//1.1 先配置redis中的key
String key="com.heyang.ssm.dao.UserDao.getAllUser";
//key => 所调用dao方法所在接口的包名+类名+方法名。
//key是唯一的
//1.2 去redis缓存中按key获值
String data=redisCache.getDataFromRedis(key);
//1.3 判断从redis取出的值是否为null
//为null表示redis中没有缓存该数据
if(data==null){
//2.无:查询数据库
//调用dao方法,得到数据
li = userService.getAllUser();
//注意:redis中不能存放对象集合,必须要转换json
//先把对象集合转成json(注意引入fastjson)
String jsonString = JSON.toJSONString(li);
//把查询到结果放入到redis中
redisCache.setDataToRedis(key,jsonString);
}else{
li = JSON.parseArray(data,User.class);
}
map.put("user",li);
return "index.jsp";
}
如果报Could not get a resource from the pool的错
注1:请去服务器中把redis的保护模式关掉:config set protected-mode "no"(在Redis中关掉)
注2:请把redis的6379端口放出来
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload