spring boot2 整合redis,使用下述依賴
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
但是在項目啟動的時候,就會報錯,
Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.impl.GenericObjectPoolConfig
錯誤很明顯,使用lettuce,我們需要倒入依賴
implementation 'org.apache.commons:commons-pool2:2.8.0'
redis保存Sting 的工具類
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import java.util.concurrent.TimeUnit; @Component public final class RedisUtil { public static final long expireTime = 7200L; @Autowired public static RedisTemplate<String, String> redisTemplate; /** * 指定緩存失效時間 * * @param key 鍵 * @param time 時間(秒) */ public static boolean expire(String key, long time) { try { if (time > 0) { redisTemplate.expire(key, time, TimeUnit.SECONDS); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 根據key 獲取過期時間 * * @param key 鍵 不能為null * @return 時間(秒) 返回0代表為永久有效 */ public static long getExpire(String key) { return redisTemplate.getExpire(key, TimeUnit.SECONDS); } /** * 判斷key是否存在 * * @param key 鍵 * @return true 存在 false不存在 */ public static boolean hasKey(String key) { try { return redisTemplate.hasKey(key); } catch (Exception e) { e.printStackTrace(); return false; } } /** * 刪除緩存 * * @param key 可以傳一個值 或多個 */ @SuppressWarnings("unchecked") public static void del(String... key) { if (key != null && key.length > 0) { if (key.length == 1) { redisTemplate.delete(key[0]); } else { redisTemplate.delete(CollectionUtils.arrayToList(key)); } } } /** * 普通緩存獲取 * * @param key 鍵 * @return 值 */ public static String get(String key) { return key == null ? null : redisTemplate.opsForValue().get(key); } /** * 普通緩存放入並設置時間 * * @param key 鍵 * @param value 值 * @return true成功 false 失敗 */ public static boolean set(String key, String value) { try { redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.SECONDS); return true; } catch (Exception e) { e.printStackTrace(); return false; } } }
