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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

SpringBoot中操作spring redis的工具类

發(fā)布時(shí)間:2025/3/19 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot中操作spring redis的工具类 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

場(chǎng)景

SpringBoot+Vue+Redis實(shí)現(xiàn)前后端分離的字典緩存機(jī)制:

https://blog.csdn.net/badao_liumang_qizhi/article/details/108333996

在SpringBoot后臺(tái)中會(huì)使用到Redis去緩存一些數(shù)據(jù)。

Windows下Redis服務(wù)端的安裝與配置

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/107486313

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號(hào)
霸道的程序猿
獲取編程相關(guān)電子書(shū)、教程推送與免費(fèi)下載。

實(shí)現(xiàn)

首先pom文件中引入相關(guān)依賴。

??<!-- redis 緩存操作 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

然后在application.yml配置Redis服務(wù)端的連接

# Spring配置 spring:# 資源信息messages:# 國(guó)際化資源文件路徑basename: i18n/messagesprofiles:active: druid# 文件上傳servlet:multipart:# 單個(gè)文件大小max-file-size:? 10MB# 設(shè)置總上傳的文件大小max-request-size:? 20MB# 服務(wù)模塊devtools:restart:# 熱部署開(kāi)關(guān)enabled: true# redis 配置redis:# 地址#本地測(cè)試用host: 127.0.0.1port: 6379password: 123456# 連接超時(shí)時(shí)間timeout: 10slettuce:pool:# 連接池中的最小空閑連接min-idle: 0# 連接池中的最大空閑連接max-idle: 8# 連接池的最大數(shù)據(jù)庫(kù)連接數(shù)max-active: 8# #連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒(méi)有限制)max-wait: -1ms

這里配置的Redis服務(wù)端是我自己的本地

然后封裝一個(gè)Spring Redis的工具類 用來(lái)對(duì)Redis 進(jìn)行緩存和獲取數(shù)據(jù)等。

import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.BoundSetOperations; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.ListOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Component;/*** spring redis 工具類***/ @SuppressWarnings(value = { "unchecked", "rawtypes" }) @Component public class RedisCache {@Autowiredpublic RedisTemplate redisTemplate;/*** 緩存基本的對(duì)象,Integer、String、實(shí)體類等** @param key 緩存的鍵值* @param value 緩存的值* @return 緩存的對(duì)象*/public <T> ValueOperations<String, T> setCacheObject(String key, T value){ValueOperations<String, T> operation = redisTemplate.opsForValue();operation.set(key, value);return operation;}/*** 緩存基本的對(duì)象,Integer、String、實(shí)體類等** @param key 緩存的鍵值* @param value 緩存的值* @param timeout 時(shí)間* @param timeUnit 時(shí)間顆粒度* @return 緩存的對(duì)象*/public <T> ValueOperations<String, T> setCacheObject(String key, T value, Integer timeout, TimeUnit timeUnit){ValueOperations<String, T> operation = redisTemplate.opsForValue();operation.set(key, value, timeout, timeUnit);return operation;}/*** 獲得緩存的基本對(duì)象。** @param key 緩存鍵值* @return 緩存鍵值對(duì)應(yīng)的數(shù)據(jù)*/public <T> T getCacheObject(String key){ValueOperations<String, T> operation = redisTemplate.opsForValue();return operation.get(key);}/*** 刪除單個(gè)對(duì)象** @param key*/public void deleteObject(String key){redisTemplate.delete(key);}/*** 刪除集合對(duì)象** @param collection*/public void deleteObject(Collection collection){redisTemplate.delete(collection);}/*** 緩存List數(shù)據(jù)** @param key 緩存的鍵值* @param dataList 待緩存的List數(shù)據(jù)* @return 緩存的對(duì)象*/public <T> ListOperations<String, T> setCacheList(String key, List<T> dataList){ListOperations listOperation = redisTemplate.opsForList();if (null != dataList){int size = dataList.size();for (int i = 0; i < size; i++){listOperation.leftPush(key, dataList.get(i));}}return listOperation;}/*** 獲得緩存的list對(duì)象** @param key 緩存的鍵值* @return 緩存鍵值對(duì)應(yīng)的數(shù)據(jù)*/public <T> List<T> getCacheList(String key){List<T> dataList = new ArrayList<T>();ListOperations<String, T> listOperation = redisTemplate.opsForList();Long size = listOperation.size(key);for (int i = 0; i < size; i++){dataList.add(listOperation.index(key, i));}return dataList;}/*** 緩存Set** @param key 緩存鍵值* @param dataSet 緩存的數(shù)據(jù)* @return 緩存數(shù)據(jù)的對(duì)象*/public <T> BoundSetOperations<String, T> setCacheSet(String key, Set<T> dataSet){BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);Iterator<T> it = dataSet.iterator();while (it.hasNext()){setOperation.add(it.next());}return setOperation;}/*** 獲得緩存的set** @param key* @return*/public <T> Set<T> getCacheSet(String key){Set<T> dataSet = new HashSet<T>();BoundSetOperations<String, T> operation = redisTemplate.boundSetOps(key);dataSet = operation.members();return dataSet;}/*** 緩存Map** @param key* @param dataMap* @return*/public <T> HashOperations<String, String, T> setCacheMap(String key, Map<String, T> dataMap){HashOperations hashOperations = redisTemplate.opsForHash();if (null != dataMap){for (Map.Entry<String, T> entry : dataMap.entrySet()){hashOperations.put(key, entry.getKey(), entry.getValue());}}return hashOperations;}/*** 獲得緩存的Map** @param key* @return*/public <T> Map<String, T> getCacheMap(String key){Map<String, T> map = redisTemplate.opsForHash().entries(key);return map;}/*** 獲得緩存的基本對(duì)象列表** @param pattern 字符串前綴* @return 對(duì)象列表*/public Collection<String> keys(String pattern){return redisTemplate.keys(pattern);} }

那么在進(jìn)行設(shè)置數(shù)據(jù)緩存時(shí)

??? public static void setDictCache(String key, List<SysDictData> dictDatas){SpringUtils.getBean(RedisCache.class).setCacheObject(key, dictDatas);}

這里的key就是設(shè)置的緩存的鍵,后面的對(duì)象的list就是要緩存的數(shù)據(jù)。

這里獲取RedisCache的方式是通過(guò)

SpringUtils.getBean(RedisCache.class)

因?yàn)檫@是在一個(gè)不受spring管理的工具類中。

如果是在其他受spring管理的bean中的話直接通過(guò)注解獲取RedisCache即可。

同理在獲取緩存的數(shù)據(jù)時(shí)

Object cacheObj = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));

同理其他工具類方法都可使用。

?

總結(jié)

以上是生活随笔為你收集整理的SpringBoot中操作spring redis的工具类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。