使用redisTemplate從redis獲取所有數(shù)據(jù)
redisTemplate從redis獲取所有數(shù)據(jù)
@Autowired private RedisTemplate<String,String> redisTemplate; @ApiOperation("StationCharger") @GetMapping("/StationCharger") public AjaxResult init() { // redisTemplate.delete("*"); //獲取所有的key Set<String> keys = redisTemplate.keys("GEELY:HC1Y:station:*"); // System.out.println(keys); //創(chuàng)建集合 HashMap<Object, Object> map = new HashMap<>(); //循環(huán) for (String key : keys){ //獲取key對應(yīng)的value Object value = redisTemplate.opsForValue().get(key); map.put(key,value); System.out.println(key); System.out.println(value); } return AjaxResult.success(map); }
idea后端效果
swagger測試效果
說說RedisTemplate的常用方法
- 1.RedisTemplate常用方法
- 2.String類型
- 3.Hash類型
- 4.List類型
- 5.Set類型
- 6.zSet類型
Redis常用的數(shù)據(jù)類型:String、Hash、List、Set、zSet
1.RedisTemplate常用方法
redisTemplate.hasKey(key); //判斷是否有key所對應(yīng)的值,有則返回true,沒有則返回false redisTemplate.opsForValue().get(key); //有則取出key值所對應(yīng)的值 redisTemplate.delete(key); //刪除單個key值 redisTemplate.delete(keys); //其中keys:Collection<K> keys redisTemplate.dump(key); //將當(dāng)前傳入的key值序列化為byte[]類型 redisTemplate.expire(key, timeout, unit); //設(shè)置過期時間 redisTemplate.expireAt(key, date); //設(shè)置過期時間 redisTemplate.keys(pattern); //查找匹配的key值,返回一個Set集合類型 redisTemplate.rename(oldKey, newKey); //返回傳入key所存儲的值的類型 redisTemplate.renameIfAbsent(oldKey, newKey); //如果舊值存在時,將舊值改為新值 redisTemplate.randomKey(); //從redis中隨機取出一個key redisTemplate.getExpire(key); //返回當(dāng)前key所對應(yīng)的剩余過期時間 redisTemplate.getExpire(key, unit); //返回剩余過期時間并且指定時間單位 redisTemplate.persist(key); //將key持久化保存 redisTemplate.move(key, dbIndex); //將當(dāng)前數(shù)據(jù)庫的key移動到指定redis中數(shù)據(jù)庫當(dāng)中
2.String類型
ValueOperations opsForValue = redisTemplate.opsForValue();
opsForValue.set(key, value);?? ?//設(shè)置當(dāng)前的key以及value值 opsForValue.set(key, value, offset);//用 value 參數(shù)覆寫給定 key 所儲存的字符串值,從偏移量 offset 開始 opsForValue.set(key, value, timeout, unit);?? ? //設(shè)置當(dāng)前的key以及value值并且設(shè)置過期時間 opsForValue.setBit(key, offset, value);?? ?//將二進制第offset位值變?yōu)関alue opsForValue.setIfAbsent(key, value);//重新設(shè)置key對應(yīng)的值,如果存在返回false,否則返回true opsForValue.get(key, start, end);?? ?//返回key中字符串的子字符 opsForValue.getAndSet(key, value);?? ?//將舊的key設(shè)置為value,并且返回舊的key opsForValue.multiGet(keys);?? ??? ??? ?//批量獲取值 opsForValue.size(key);?? ??? ??? ??? ?//獲取字符串的長度 opsForValue.append(key, value);?? ?//在原有的值基礎(chǔ)上新增字符串到末尾 opsForValue.increment(key,double increment);//以增量的方式將double值存儲在變量中 opsForValue.increment(key,long ?increment);?? ?//通過increment(K key, long delta)方法以增量方式存儲long值(正值則自增,負(fù)值則自減) ? Map valueMap = new HashMap(); ? valueMap.put("valueMap1","map1"); ? valueMap.put("valueMap2","map2"); ? valueMap.put("valueMap3","map3"); ? opsForValue.multiSetIfAbsent(valueMap); ?? ?//如果對應(yīng)的map集合名稱不存在,則添加否則不做修改 opsForValue.multiSet(valueMap);?? ??? ??? ??? ?//設(shè)置map集合到redis
3.Hash類型
HashOperations opsForHash = redisTemplate.opsForHash();
opsForHash.get(key, field);?? ?//獲取變量中的指定map鍵是否有值,如果存在該map鍵則獲取值,沒有則返回null opsForHash.entries(key);?? ?//獲取變量中的鍵值對 opsForHash.put(key, hashKey, value);?? ?//新增hashMap值 opsForHash.putAll(key, maps);?? ?//以map集合的形式添加鍵值對 opsForHash.putIfAbsent(key, hashKey, value);?? ?//僅當(dāng)hashKey不存在時才設(shè)置 opsForHash.delete(key, fields);?? ?//刪除一個或者多個hash表字段 opsForHash.hasKey(key, field);?? ?//查看hash表中指定字段是否存在 opsForHash.increment(key, field, long increment);?? ?//給哈希表key中的指定字段的整數(shù)值加上增量increment opsForHash.increment(key, field, double increment);?? ?//給哈希表key中的指定字段的整數(shù)值加上增量increment opsForHash.keys(key);?? ??? ??? ??? ?//獲取所有hash表中字段 opsForHash.values(key);?? ??? ??? ??? ?//獲取hash表中存在的所有的值 opsForHash.scan(key, options);?? ??? ?//匹配獲取鍵值對,ScanOptions.NONE為獲取全部鍵對
4.List類型
ListOperations opsForList = redisTemplate.opsForList();
opsForList.index(key, index);?? ?//通過索引獲取列表中的元素 opsForList.range(key, start, end);?? ?//獲取列表指定范圍內(nèi)的元素(start開始位置, 0是開始位置,end 結(jié)束位置, -1返回所有) opsForList.leftPush(key, value);?? ?//存儲在list的頭部,即添加一個就把它放在最前面的索引處 opsForList.leftPush(key, pivot, value);?? ??? ?//如果pivot處值存在則在pivot前面添加 opsForList.leftPushAll(key, value);?? ??? ?//把多個值存入List中(value可以是多個值,也可以是一個Collection value) opsForList.leftPushIfPresent(key, value);?? ?//List存在的時候再加入 opsForList.rightPush(key, value);?? ?//按照先進先出的順序來添加(value可以是多個值,或者是Collection var2) opsForList.rightPushAll(key, value);?? ?//在pivot元素的右邊添加值 opsForList.set(key, index, value);?? ??? ?//設(shè)置指定索引處元素的值 opsForList.trim(key, start, end);?? ??? ?//將List列表進行剪裁 opsForList.size(key);?? ?//獲取當(dāng)前key的List列表長度 ? //移除并獲取列表中第一個元素(如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止) opsForList.leftPop(key);?? ??? ??? ??? ? opsForList.leftPop(key, timeout, unit);?? ? ? //移除并獲取列表最后一個元素 opsForList.rightPop(key); opsForList.rightPop(key, timeout, unit);?? ? ? //從一個隊列的右邊彈出一個元素并將這個元素放入另一個指定隊列的最左邊 opsForList.rightPopAndLeftPush(sourceKey, destinationKey);?? ? opsForList.rightPopAndLeftPush(sourceKey, destinationKey, timeout, unit); ? //刪除集合中值等于value的元素(index=0, 刪除所有值等于value的元素; index>0, 從頭部開始刪除第一個值等于value的元素; index<0, 從尾部開始刪除第一個值等于value的元素) opsForList.remove(key, index, value);
5.Set類型
SetOperations opsForSet = redisTemplate.opsForSet();
opsForSet.add(key, values);?? ??? ??? ?//添加元素 opsForSet.remove(key, values);?? ??? ?//移除元素(單個值、多個值) opsForSet.pop(key);?? ??? ??? ??? ??? ?//刪除并且返回一個隨機的元素 opsForSet.size(key);?? ??? ??? ??? ?//獲取集合的大小 opsForSet.isMember(key, value);?? ??? ?//判斷集合是否包含value opsForSet.intersect(key, otherKey);?? ?//獲取兩個集合的交集(key對應(yīng)的無序集合與otherKey對應(yīng)的無序集合求交集) opsForSet.intersect(key, otherKeys);//獲取多個集合的交集(Collection var2) opsForSet.intersectAndStore(key, otherKey, destKey);?? ?//key集合與otherKey集合的交集存儲到destKey集合中(其中otherKey可以為單個值或者集合) opsForSet.intersectAndStore(key, otherKeys, destKey);?? ?//key集合與多個集合的交集存儲到destKey無序集合中 opsForSet.union(key, otherKeys);?? ?//獲取兩個或者多個集合的并集(otherKeys可以為單個值或者是集合) opsForSet.unionAndStore(key, otherKey, destKey);?? ?//key集合與otherKey集合的并集存儲到destKey中(otherKeys可以為單個值或者是集合) opsForSet.difference(key, otherKeys);?? ?//獲取兩個或者多個集合的差集(otherKeys可以為單個值或者是集合) opsForSet.differenceAndStore(key, otherKey, destKey);?? ?//差集存儲到destKey中(otherKeys可以為單個值或者集合) opsForSet.randomMember(key);?? ?//隨機獲取集合中的一個元素 opsForSet.members(key);?? ??? ??? ?//獲取集合中的所有元素 opsForSet.randomMembers(key, count);?? ?//隨機獲取集合中count個元素 opsForSet.distinctRandomMembers(key, count);?? ?//獲取多個key無序集合中的元素(去重),count表示個數(shù) opsForSet.scan(key, options);?? ?//遍歷set類似于Interator(ScanOptions.NONE為顯示所有的)
6.zSet類型
ZSetOperations提供了一系列方法對有序集合進行操作
ZSetOperations opsForZSet = redisTemplate.opsForZSet();
opsForZSet.add(key, value, score);?? ??? ??? ??? ?//添加元素(有序集合是按照元素的score值由小到大進行排列) opsForZSet.remove(key, values);?? ??? ??? ??? ??? ?//刪除對應(yīng)的value,value可以為多個值 opsForZSet.incrementScore(key, value, delta);?? ?//增加元素的score值,并返回增加后的值 opsForZSet.rank(key, value);?? ??? ??? ??? ??? ?//返回元素在集合的排名,有序集合是按照元素的score值由小到大排列 opsForZSet.reverseRank(key, value);?? ??? ??? ??? ?//返回元素在集合的排名,按元素的score值由大到小排列 opsForZSet.reverseRangeWithScores(key, start,end);?? ?//獲取集合中給定區(qū)間的元素(start 開始位置,end 結(jié)束位置, -1查詢所有) opsForZSet.reverseRangeByScore(key, min, max);?? ?//按照Score值查詢集合中的元素,結(jié)果從小到大排序 opsForZSet.reverseRangeByScoreWithScores(key, min, max);?? ?//返回值為:Set<ZSetOperations.TypedTuple<V>> opsForZSet.count(key, min, max);?? ??? ??? ??? ?//根據(jù)score值獲取集合元素數(shù)量 opsForZSet.size(key);?? ??? ??? ??? ??? ??? ??? ?//獲取集合的大小 opsForZSet.zCard(key);?? ??? ??? ??? ??? ??? ??? ?//獲取集合的大小 opsForZSet.score(key, value);?? ??? ??? ??? ??? ?//獲取集合中key、value元素對應(yīng)的score值 opsForZSet.removeRange(key, start, end);?? ??? ?//移除指定索引位置處的成員 opsForZSet.removeRangeByScore(key, min, max);?? ?//移除指定score范圍的集合成員 opsForZSet.unionAndStore(key, otherKey, destKey);//獲取key和otherKey的并集并存儲在destKey中(其中otherKeys可以為單個字符串或者字符串集合) opsForZSet.intersectAndStore(key, otherKey, destKey);?? ?//獲取key和otherKey的交集并存儲在destKey中(其中otherKeys可以為單個字符串或者字符串集合)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Java使用RedisTemplate如何根據(jù)前綴獲取key列表
- SpringBoot整合Redis使用RedisTemplate和StringRedisTemplate
- Java中StringRedisTemplate和RedisTemplate的區(qū)別及使用方法
- 使用StringRedisTemplate操作Redis方法詳解
- Spring Boot中RedisTemplate的使用示例詳解
- Spring中RedisTemplate使用方法詳解
- Java使用RedisTemplate操作Redis遇到的坑
- Redis使用RedisTemplate導(dǎo)致key亂碼問題解決
- RedisTemplate的使用與注意事項小結(jié)
相關(guān)文章
java lambda循環(huán)_使用Java 8 Lambda簡化嵌套循環(huán)操作
這篇文章主要介紹了java lambda循環(huán)_使用Java 8 Lambda簡化嵌套循環(huán)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Java基礎(chǔ)教程之類數(shù)據(jù)與類方法
這篇文章主要介紹了Java基礎(chǔ)教程之類數(shù)據(jù)與類方法,本文是對類的深入探討,類數(shù)據(jù)指類的一些屬性、參數(shù)等,類方法就是類包含的功能方法,需要的朋友可以參考下2014-08-08Java JVM運行時數(shù)據(jù)區(qū)(Run-Time Data Areas)
運行時數(shù)據(jù)區(qū),是java虛擬機定義的在程序執(zhí)行期間使用的各種運行時的數(shù)據(jù)區(qū),通過JVM運行時數(shù)據(jù)區(qū)圖例給大家展示的很詳細(xì),對JVM 運行時數(shù)據(jù)區(qū)相關(guān)知識感興趣的朋友跟隨小編一起看看吧2021-06-06Spring Boot 利用WebUploader進行文件上傳功能
本文的重點是給大家介紹在Spring Boot項目中利用WebUploader如何進行文件上傳,本文通過示例代碼給大家介紹,需要的朋友參考下吧2018-03-03解決Maven 項目報錯 java.httpservlet和synchronized使用方法
下面小編就為大家?guī)硪黄鉀QMaven 項目報錯 java.httpservlet和synchronized使用方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07SpringCloud使用集中配置組件Config規(guī)避信息泄露
項目應(yīng)用中,數(shù)據(jù)庫連接信息、Access-key、Secret-key等由于其及其敏感和特殊性,一旦泄露出去就很可能會使得應(yīng)用遭到黑客攻擊,例如數(shù)據(jù)庫賬號密碼泄露可能導(dǎo)致“拖庫”,甚至數(shù)據(jù)丟失。此等事件偶有發(fā)生,那么,在分布式微服務(wù)項目中,怎么避免這種情況呢2022-07-07Java Comparable及Comparator接口區(qū)別詳解
這篇文章主要介紹了Java Comparable及Comparator接口區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07