SSM集成redis,并且解决Could not get a resource from the pool

第一步:导入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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值