日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

redis一般缓存什么样数据_SpringBoot+Redis轻松实现数据缓存

發布時間:2024/8/23 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis一般缓存什么样数据_SpringBoot+Redis轻松实现数据缓存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.為什么需要緩存

為什么需要緩存,我相信搞開發的都能回答出來,無非就是為了降低數據庫壓力,節約資源,提升系統性能。而事實上也確實是,歸根結底就是降壓,高并發,高性能。不過,大廠里那一套高并發的東西不在本篇講述。下面我們就spring boot 整合redis ,實現數據緩存的demo。

2.搭建Springboot工程

搭建spring boot工程,此處就不多贅述了,大家可以自己去官網下載然后導入,或者直接用idea創建。引入的核心依賴如下,另外還有其他的如mybatis,thymeleaf等。

org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-data-redis 2.3.0.RELEASE

3.Redis配置類

@Configuration@EnableCachingpublic class RedisConfig extends CachingConfigurerSupport { @Autowired private LettuceConnectionFactory lettuceConnectionFactory; @Bean public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) { RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(lettuceConnectionFactory); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); jackson2JsonRedisSerializer.setObjectMapper(objectMapper); // key采用String的序列化方式 redisTemplate.setKeySerializer(stringRedisSerializer); // hash的key也采用String的序列化方式 redisTemplate.setHashKeySerializer(stringRedisSerializer); // value序列化方式采用jackson redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // hash的value序列化方式采用jackson redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; }}

4.Redis工具類

//大家可以根據需要再自行添加方法@Componentpublic final class RedisUtil { @Autowired private RedisTemplate redisTemplate; /** * 設置緩存:無過期時間 * @param key * @param value * @return */ public boolean set(String key, Object value) { try { redisTemplate.opsForValue().set(key,value); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 設置緩存:有過期時間,單位:秒 * @param key * @param value * @param time * @return */ public boolean set(String key, Object value, long time) { try { if(time > 0) { redisTemplate.opsForValue().set(key,value,time, TimeUnit.SECONDS); }else { throw new RuntimeException("時間必須大于0"); } return true; }catch (Exception e) { e.printStackTrace(); return false; } } /** * 普通緩存獲取 * @param key 鍵 * @return 值 */ public Object get(String key) { return key == null ? null : redisTemplate.opsForValue().get(key); } /** * 判斷key是否存在 * @param key 鍵 * @return true 存在 false不存在 */ public boolean hasKey(String key) { try { return redisTemplate.hasKey(key); } catch (Exception e) { e.printStackTrace(); return false; } } /** * 指定key緩存失效時間 * @param key 鍵 * @param time 時間(秒) * @return */ public boolean expire(String key, long time) { try { if (time > 0) { redisTemplate.expire(key, time, TimeUnit.SECONDS); }else { throw new RuntimeException("時間必須大于0"); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 根據key 獲取過期時間 * @param key 鍵 不能為null * @return 時間(秒) 返回0代表為永久有效 */ public long getExpire(String key) { return redisTemplate.getExpire(key, TimeUnit.SECONDS); } /** * 將list放入緩存 * @param key 鍵 * @param value 值 * @return */ public boolean lSet(String key, List value) { try { redisTemplate.opsForList().rightPushAll(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 將list放入緩存 * @param key 鍵 * @param value 值 * @param time 時間(秒) * @return */ public boolean lSet(String key, List value, long time) { try { redisTemplate.opsForList().rightPushAll(key, value); if (time > 0) { expire(key, time); } return true; } catch (Exception e) { e.printStackTrace(); return false; } }}

5.測試

@Testvoid contextLoads() { if(redisTemplate.opsForValue().get("list") != null) { LOGGER.info("走緩存了============="); List list = (List) redisTemplate.opsForValue().get("list"); System.out.println(list); }else { LOGGER.info("走數據庫了============="); List list = aaaServerService.findList(); redisTemplate.opsForValue().set("list",list); }}

我們第一次運行這個測試類,控制臺打印如下圖1,再運行一次,控制臺打印如下圖2。可以看到查詢的數據從緩存中取了。我們還可以連接下redis,直接 get list,得到的結果如圖3,數據的確已經存入緩存!至此,spring boot整合redis就大功告成了!

圖1

圖2

圖3

小結

本篇文章建單的介紹了spring boot如何整合redis,相對來說,沒有什么難懂的地方。對于簡單的業務層面來說,這個已經足夠了,更深層次的還需要大家不斷的學習探索。好了,今天的文章就到這里了,喜歡的小伙伴來個關注唄[呲牙]

總結

以上是生活随笔為你收集整理的redis一般缓存什么样数据_SpringBoot+Redis轻松实现数据缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。