spring-boot redis配置

来源:互联网 发布:ios阴阳师网络连接错误 编辑:程序博客网 时间:2024/05/18 14:27

1.在pom.xml中引入依赖

<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-redis</artifactId>   <version>1.3.8.RELEASE</version></dependency>


2.在application.yml中配置参数

redis:  host: 127.0.0.1  port: 6379  max-idle: 5  max-total: 10  max-wait-millis: 3000



3.新建一个 参数类,来 引入配置文件中的 参数,便于集中管理

@Component@Datapublic class Parameters {//    redis config start    @Value("${redis.host}")    private String redisHost;    @Value("${redis.port}")    private int redisPort;    @Value("${redis.max-idle}")    private int redisMaxIdle;    @Value("${redis.max-total}")    private int redisMaxTotal;    @Value("${redis.max-wait-millis}")    private int redisMaxWaitMillis;    //redis config  end}

4.新建一个类,初始化链接池,提供 获取连接池的方法

@Component@Slf4jpublic class JedisPoolWrapper {    private JedisPool jedisPool=null;    @Autowired    private Parameters parameters;  //注入redis的变量    //初始化redisWrapper (PostConstruct注解相当于静态代码库,方法会在类初始化的时候 进行执行)    @PostConstruct    public void init() throws RedisException {        try {            JedisPoolConfig config=new JedisPoolConfig();            config.setMaxIdle(parameters.getRedisMaxIdle());            config.setMaxTotal(parameters.getRedisMaxTotal());            config.setMaxWaitMillis(parameters.getRedisMaxWaitMillis());            jedisPool=new JedisPool(config,parameters.getRedisHost(),parameters.getRedisPort(),2000);        } catch (Exception e) {            log.error("fail to initialize redis pool",e);  //记录日志            throw new RedisException("初始化redisPool失败");   //抛出异常        }    }    public JedisPool getJedisPool() {        return jedisPool;    }}


5.配置一些操纵redis的方法

package com.sean.mamabike.cache;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;/**  *@Author sean  *@Date 2017/10/9 11:59  *@Description   控制redis进行 CRUD 操作的工具 */@Component@Slf4jpublic class CommonCacheUtils {    @Autowired    private JedisPoolWrapper jedisPoolWrapper;    //1.缓存一个key(永久)    public void cache(String key,String value){        try {            JedisPool jedisPool=jedisPoolWrapper.getJedisPool();            if (jedisPool != null){                try(Jedis jedis=jedisPool.getResource()){                    jedis.select(0);   //选择第0号 片区 存储                    jedis.set(key,value);                }            }        } catch (Exception e) {            log.error("fail to cache key and value",e);        }    }    //2.获取redis中的缓存    public String getCacheByKey(String key){        String value=null;        try {            JedisPool jedisPool=jedisPoolWrapper.getJedisPool();  //获取链接池            if (jedisPool != null){                try(Jedis jedis=jedisPool.getResource()){                    jedis.select(0);                    value= jedis.get(key);                }            }        } catch (Exception e) {            log.error("fail to get cache",e);        }        return value;    }    //3.设置一个有缓存时间的key   SETNX:当缓存中不存在时,设置成功,返回1;已经存在,返回0    public long cacheNxExpire(String key,String value,int expiry){        long result=0;        try {            JedisPool jedisPool=jedisPoolWrapper.getJedisPool();            if (jedisPool != null){                try(Jedis jedis=jedisPool.getResource()){                    jedis.select(0);                    result=jedis.setnx(key,value);                    jedis.expire(key,expiry);                }            }        } catch (Exception e) {            log.error("fail to cacheNxExpire",e);        }        return result;    }    //4.删除缓存    public void deleteCache(String key){        try {            JedisPool jedisPool=jedisPoolWrapper.getJedisPool();            if (jedisPool != null){                try(Jedis jedis=jedisPool.getResource()){                    jedis.del(key);                }            }        } catch (Exception e) {            log.error("fail to delete cache",e);        }    }}




原创粉丝点击