一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Redis使用RedisTemplate模板類的常用操作方式

Redis使用RedisTemplate模板類的常用操作方式

2022-01-18 16:56程序大視界 Java教程

這篇文章主要介紹了Redis使用RedisTemplate模板類的常用操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一、前言

Redis是一個NoSQL(非關系型數據庫)數據庫之一,key-value存儲系統或者說是一個緩存鍵值對數據庫,具有如下特性:

  • 基于內存運行,性能高效
  • 支持分布式,理論上可以無限擴展
  • key-value存儲系統
  • 開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API

主要應用場景包括:

緩存系統、計數器、消息隊列系統、排行榜、社交網絡和實時系統、分布式鎖和發布/訂閱消息等。

而在程序中,對Redis的常用操作有一個專門用于操作Redis的模板類(或API),它就是RedisTemplate。

二、Redis 數據結構簡介

Redis可以存儲鍵與5種不同數據結構類型之間的映射,這5種數據結構類型分別為String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。

下面來對這5種數據結構類型作簡單的介紹:

結構類型 結構存儲的值 結構的讀寫能力
String 字符串、整數或者浮點數 對整個字符串或者字符串的其中一部分執行操作;對象和浮點數執行自增(increment)或者自減(decrement)
List 數組鏈表,鏈表上的每個節點都包含了一個元素 從鏈表的兩端推入或者彈出元素;根據偏移量對鏈表進行修剪(trim);讀取單個或者多個元素;根據值來查找或者移除元素
Set 包含元素的無序收集器(unorderedcollection),并且被包含的每個元素都是獨一無二的、各不相同 添加、獲取、移除單個元素;檢查一個元素是否存在于某個集合中;計算交集、并集、差集;從集合里賣弄隨機獲取元素
Hash 包含鍵值對的無序散列表 添加、獲取、移除單個鍵值對;獲取所有鍵值對
Zset 字符串成員(member)與浮點數分值(score)之間的有序映射,元素的排列順序由分值的大小決定 添加、獲取、刪除單個元素;根據分值范圍(range)或者成員來獲取元素

RedisTemplate位于spring-data-redis包下:

?
1
2
3
4
package org.springframework.data.redis.core;
public class RedisTemplate<K, V>
extends org.springframework.data.redis.core.RedisAccessor
implements org.springframework.data.redis.core.RedisOperations<K, V>

繼承了RedisAccessor類,實現了RedisOperations泛型鍵值對接口。

使用注解即可引用RedisTemplate:

?
1
2
@Autowired
private RedisTemplate<String,String> redisTemplate;

三、RedisTemplate對5種數據結構的操作

redisTemplate使用如下幾種方法分別針對5種數據結構進行操作:

?
1
2
3
4
5
redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set

3.1 String字符串操作

?
1
2
3
4
//設置key和value值
redisTemplate.opsForValue().set("key","value");
//通過key獲取value值
String result = redisTemplate.opsForValue().get("key").toString();

3.2 list數組操作

?
1
2
3
4
5
6
7
8
9
10
11
//list數組對象和添加數組值
List<String> list = new ArrayList<String>(); 
list.add("a1"); 
list.add("a2"); 
list.add("a3"); 
 
//用redisTemplate模板類把list數組集合添加進Redis
redisTemplate.opsForList().leftPush("listkey",list); 
 
//用redisTemplate模板類從Redis中根據key獲取list集合
List<String> resultList = (List<String>)redisTemplate.opsForList().leftPop("listkey");

3.3 Hash結構,map操作

?
1
2
3
4
5
6
7
8
9
10
11
12
//定義Map集合和類型
Map<String,String> map = new HashMap<String,String>(); 
map.put("key1","value1"); 
map.put("key2","value2"); 
map.put("key3","value3"); 
 
//用redis模板類把map設置到redis中
redisTemplate.opsForHash().putAll("map",map); 
Map<String,String> resultMap = redisTemplate.opsForHash().entries("map"); 
List<String> reslutMapList = redisTemplate.opsForHash().values("map"); 
Set<String> resultMapSet = redisTemplate.opsForHash().keys("map"); 
String value = (String)redisTemplate.opsForHash().get("map","key1"); 

3.4 Set集合操作

?
1
2
3
4
5
6
7
//定義一個set集合并設置集合值
SetOperations<String, String> set = redisTemplate.opsForSet();
set.add("set1","22"); 
set.add("set1","33"); 
set.add("set1","44"); 
//通過key獲取set集合中的對象值
Set<String> resultSet = redisTemplate.opsForSet().members("set1");

四、總結

以上就是Redis的幾種常用數據結構和操作。

很多互聯網大廠都有用Redis在各種業務場景進行使用,如今分布式流行的趨勢,Redis更是舉足輕重不可不掌握的一個技術;除了Redis,還有MemCache、Cassadra和Mongo等NoSQL。

希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/xuri24/article/details/109012069

延伸 · 閱讀

精彩推薦
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
主站蜘蛛池模板: 国士李风起全文在线阅读 | 视频二区 素人 欧美 日韩 | 日韩欧美一区二区三区免费观看 | 欧美理论片手机在线观看片免费 | 天天操夜夜操狠狠操 | 91在线精品国产丝袜超清 | 三级黄色片在线免费观看 | 亚洲欧美综合在线观看 | 青草草在线观看 | 日韩欧美一区黑人vs日本人 | 免费国产成人高清视频网站 | 逼逼爱 | 亚洲AV无码国产精品色午夜情 | 我年轻漂亮的继坶2中字在线播放 | jizzjizz大学生 | 出差上的少妇20p | 国产在亚洲线视频观看 | 久久亚洲一级α片 | 500福利第一导航 | 性趣用品| 91国内在线国内在线播放 | 色综合色狠狠天天综合色 | 久久亚洲伊人 | 韩国免费视频 | 精品国产欧美一区二区三区成人 | 国产日日干 | 国产日韩精品欧美一区 | 男人天堂2023 | 亚洲sss综合天堂久久久 | 午夜国产理论 | 午夜国产精品影院在线观看 | 精品美女国产互换人妻 | gay中国 | 欧美精品亚洲精品日韩专区va | 色v在线| 波多野结衣亚洲一区 | 村妇超级乱淫伦小说全集 | 好大好硬快点好爽公 | 白丝校花好湿好紧 | 手机看片1024日韩 | 2019韩国最新三级 |