spring boot中使用redis -Jedis

來源:互聯網
上載者:User

1、加入jar包依賴 使用maven形式

<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-redis</artifactId>   <version>1.4.7.RELEASE</version></dependency>
2、項目設定檔設定redis資訊 

redis: host:  port:  password:  pool:  max-active: 8  min-idle: 0  max-idle: 8  max-wait: 10000 timeout: 0database: 9
注意:一定要在spring節點下

3、建立初始化 JedisPool的bean 讓spring boot啟動載入該bean的配置資訊

@Configuration@EnableCachingpublic class JedisConfiguration {    @Value("${spring.redis.host}")    private String host;    @Value("${spring.redis.port}")    private int port;    @Value("${spring.redis.timeout}")    private int timeout;    @Value("${spring.redis.pool.max-idle}")    private int maxIdle;    @Value("${spring.redis.pool.max-wait}")    private long maxWaitMillis;    @Value("${spring.redis.password}")    private String password;    @Bean    public JedisPool redisPoolFactory() {        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();        jedisPoolConfig.setMaxIdle(maxIdle);        jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);        JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password);        return jedisPool;    }}
4、建立  JedisUtil類

public class JedisUtil implements ApplicationContextAware {    private static ApplicationContext applicationContext = null;    private static JedisPool jedisPool = null;    private static volatile Jedis jedis = null;    public JedisUtil(){}    public static Jedis getJedis(){        if (jedis ==null){            synchronized (Jedis.class){                if (jedis ==null){                    jedis = getJedisPool().getResource();                }            }        }        return jedis;    }    public static JedisPool getJedisPool(){        if (jedisPool ==null){            synchronized (JedisPool.class){                if (jedisPool==null){                    jedisPool = applicationContext.getBean(JedisPool.class);                }            }        }        return jedisPool;    }    @Override    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {        if(JedisUtil.applicationContext == null){            JedisUtil.applicationContext  = applicationContext; //初始化 spring applicationContext        }    }    /**     * 根據key查看是否存在     * @param key     * @return     */    public static boolean hasKey(String key){        return getJedis().exists(key);    }    /**     * 設定key -value 形式資料     * @param key     * @param value     * @return     */    public static String set(String key,String value){        String result =  getJedis().set(key,value);        return result;    }    /**     * 設定 一個到期時間     * @param key     * @param value     * @param timeOut 單位秒     * @return     */    public static String set(String key,String value,int timeOut){        return getJedis().setex(key,timeOut,value);    }    /**     * 根據key擷取value     * @param key     * @return     */    public static String getByKey(String key){        return getJedis().get(key);    }    /**     * 根據萬用字元擷取所有匹配的key     * @param pattern     * @return     */    public static Set<String> getKesByPattern(String pattern){        return getJedis().keys(pattern);    }    /**     * 根據key刪除     * @param key     */    public static void delByKey(String key){        getJedis().del(key);    }    /**     * 根據key擷取到期時間     * @param key     * @return     */    public static long getTimeOutByKey(String key){        return getJedis().ttl(key);    }    /**     * 清空資料 【慎用啊。】     */    public static void flushDB(){        getJedis().flushDB();    }    /**     * 重新整理到期時間     * @param key     * @param timeOut     * @return     */    public static long refreshLiveTime(String key,int timeOut){        return getJedis().expire(key,timeOut);    }}
注意有用這裡沒有使用註解將該類注入到spring中去 而是使用工具類的形式 這裡需要 implements  ApplicationContextAware介面 然後重寫setApplicationContext方法初始化 applicationContext ,當時用某bean時不是使用@Autowired等註解注入,而是需要手動使用getBean擷取所需的bean對象,最後在spring boot啟動類中加入 
@Import({YmlConfigUtil.class, JedisUtil.class})

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.