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})