java 中通過 Lettuce 來操作 Redis

spring-data-redis文檔:?https://docs.spring.io/spring-data/redis/docs/2.0.1.RELEASE/reference/html/#new-in-2.0.0
Redis?文檔:?https://redis.io/documentation
Redis?中文文檔:?http://www.redis.cn/commands.html

本文學習一下如何通過 Java 操作 Redis。

Java 操作 Redis 的庫有兩個,Jedis 和 Lettuce,目前 SpringBoot 2.x 中已經將 Jedis 換成了 Lettuce。

Lettuce?和?Jedis?的都是連接Redis Server的客戶端程序。Jedis實現上是直連redis server,多線程環境下非線程安全,除非使用連接池,為每個Jedis實例增加物理連接Lettuce基于Netty的連接實例(StatefulRedisConnection),可以在多個線程間并發訪問,且線程安全,滿足多線程環境下的并發訪問,同時它是可伸縮的設計,一個連接實例不夠的情況也可以按需增加連接實例

本文直接從 Lettuce 來學習。

基本使用

1:添加依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>

?

屬性配置

在?application.properties?文件中配置如下內容

spring.redis.host=localhost
#spring.redis.password=battcn
# 連接超時時間(毫秒)
spring.redis.timeout=10000
# Redis默認情況下有16個分片,這里配置具體使用的分片,默認是0
spring.redis.database=0
# 連接池最大連接數(使用負值表示沒有限制) 默認 8
spring.redis.lettuce.pool.max-active=8
# 連接池最大阻塞等待時間(使用負值表示沒有限制) 默認 -1
spring.redis.lettuce.pool.max-wait=-1
# 連接池中的最大空閑連接 默認 8
spring.redis.lettuce.pool.max-idle=8
# 連接池中的最小空閑連接 默認 0
spring.redis.lettuce.pool.min-idle=0

?

?

?

實體類

創建一個User

private static final long serialVersionUID = 8655851615465363473L;
private Long id;
private String username;
private String password;public Users(Long id, String username, String password) {this.id = id;this.username = username;this.password = password;
}public static long getSerialVersionUID() {return serialVersionUID;
}public Long getId() {return id;
}public void setId(Long id) {this.id = id;
}public String getUsername() {return username;
}public void setUsername(String username) {this.username = username;
}public String getPassword() {return password;
}public void setPassword(String password) {this.password = password;
}@Override
public String toString() {return "Users{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +'}';
}

?

?

?

新建RedisCacheAutoConfiguration配置類

默認情況下的模板只能支持RedisTemplate<String, String>,也就是只能存入字符串,這在開發中是不友好的,所以自定義模板是很有必要的,當自定義了模板又想使用String存儲這時候就可以使用StringRedisTemplate的方式,它們并不沖突

@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisCacheAutoConfiguration {@Beanpublic RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {RedisTemplate<String, Serializable> template = new RedisTemplate<>();template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());template.setConnectionFactory(redisConnectionFactory);return template;}
}

?

?

?

?

新建一個SpringbootRedisDemoApplicationTests類測試

private static final Logger log = LoggerFactory.getLogger(SpringbootRedisDemoApplicationTests.class);@Autowired
private StringRedisTemplate stringRedisTemplate;@Autowired
private RedisTemplate<String, Serializable> redisCacheTemplate;@PostMapping
public void get() {ExecutorService executorService = Executors.newFixedThreadPool(8888);IntStream.range(0, 8888).forEach(i ->executorService.execute(() -> stringRedisTemplate.opsForValue().increment("dd", 1)));stringRedisTemplate.opsForValue().set("flag", "好");final String a = stringRedisTemplate.opsForValue().get("flag");log.info("[字符緩存結果] - [{}]", a);String key = "opsForValue:user:1";redisCacheTemplate.opsForValue().set(key, new Users(99L, "小王", "18"));final Users user = (Users) redisCacheTemplate.opsForValue().get(key);System.out.println(user + "*****");log.info("[對象緩存結果] - [{}]", user);
}

?

用postman發起請求

?

客戶端工具顯示效果

?

下列的就是Redis其它類型所對應的操作方式

  • opsForValue:?對應 String(字符串)
  • opsForZSet:?對應 ZSet(有序集合)
  • opsForHash:?對應 Hash(哈希)
  • opsForList:?對應 List(列表)
  • opsForSet:?對應 Set(集合)
  • opsForGeo:?對應 GEO(地理位置)

?

?

?

?

?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271732.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271732.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271732.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電腦選購:看完才明白,一體機和臺式機電腦哪個好?

目錄 一、空間占用 二、硬件與性能 三、擴展性 四、可維護性 五、移動性 六、一體機和臺式機在需求上有什么區別 這里說的一體機和臺式機指的是電腦&#xff0c;一體機&#xff0c;顧名思義&#xff0c;就是屏幕和主機集成在一起&#xff0c;更加一體化。臺式機分為主機和機箱&…

linux子系統 重置,淺析win10系統重置Linux子系統的設置方法

今天小編給大家淺析win10系統重置Linux子系統的設置方法&#xff0c;重置Linux子系統后&#xff0c;我們就可從頭配置Linux子系統&#xff0c;例如新建用戶、設置密碼&#xff0c;并在里面安裝我們需要的應用程序等&#xff0c;有需要的用戶&#xff0c;請來看看如何重置吧。Wi…

硬件:那些安裝8G、16G以及32G內存電腦的區別介紹

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

Windows系統下安裝分布式事務組件Seata

1:github上下載seata安裝包 地址為https://github.com/seata/seata/releases/tag/v1.2.0 2:啟動seata 點擊seata-server.bat腳本文件 啟動后入下圖所示 3:測試seata是否啟動 通過jcmd&#xff0c;可以找到Seata進程

linux應用程序文件丟失,詳談Ubuntu軟件管理丟失的功能

多數人都認為Ubuntu通過Ubuntu Software Center徹底改革了dpkg包管理。毫無疑問&#xff0c;按照多數人標準來看&#xff0c;Software Center肯定是用戶友好的呢。但事實真是如此么&#xff1f;本文將介紹Ubuntu軟件管理的現狀&#xff0c;伴隨著Ubuntu首次發布的軟件管理走了多…

硬件基礎:電腦當中各個硬件的作用介紹

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

JAVA8 十大新特性詳解

作者&#xff1a;http://m.jb51.net/article/48304.htm?fromtimeline&isappinstalled0本教程將Java8的新特新逐一列出&#xff0c;并將使用簡單的代碼示例來指導你如何使用默認接口方法&#xff0c;lambda表達式&#xff0c;方法引用以及多重Annotation&#xff0c;之后你…

win8 linux分區工具,Ubuntu下掛載Win8磁盤分區

最近裝了個Ubuntu系統&#xff0c;但是一番折騰后發現除了分給Ubuntu的磁盤分區外其他的Win8下磁盤分區都無法訪問&#xff0c;在網上找了很多解決方案&#xff0c;但都無法最終解決。經過查閱資料&#xff0c;終于將問題迎刃而解。問題描述&#xff1a;Ubuntu系統下掛載Win8磁…

辦公技巧:常用的100個Word快捷鍵

Word是日常辦公和生活的最常用的文字處理軟件&#xff0c;大到工作中文章的撰寫&#xff0c;小到日常生活中點點滴滴的記錄&#xff0c;都離不開Word。在使用Word的時候&#xff0c;快捷鍵的使用&#xff0c;可以大大提升文字處理的速度。Word的快捷鍵中&#xff0c;下面這些是…

mysql什么是長事務

1.什么是長事務 首先我們先要知道什么是長事務&#xff0c;顧名思義就是運行時間比較長&#xff0c;長時間未提交的事務&#xff0c;也可以稱之為大事務。這類事務往往會造成大量的阻塞和鎖超時&#xff0c;容易造成主從延遲&#xff0c;要盡量避免使用長事務。

linux讀取目錄列表失敗,[linux]解決vsftpd 讀取目錄列表失敗的問題

使用第三方FTP軟件filezilla進行登陸&#xff0c;出現如下錯誤&#xff1a;狀態: 正在連接 192.168.1.6:21...狀態: 連接建立&#xff0c;等待歡迎消息...響應: 220 (vsFTPd 2.2.2)命令: USER ftp響應: 331 Please specify the password.命令: PASS ***響應:…

Win10優化:系統文件Hiberfil.sys介紹

目錄 一、Hiberfil.sys介紹 二、刪除Hiberfil.sys文件的步驟 1、如何找到Hiberfil.sys 2、通過管理員權限的cmd命令&#xff08;注意要以管理員的身份運行&#xff09; 一、Hiberfil.sys介紹 Hiberfil.sys文件位于系統盤的根目錄下&#xff0c;它是 win10 休眠功能&#xff08;…

工作區和暫存區

Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。 先來看名詞解釋。 工作區&#xff08;Working Directory&#xff09; 就是你在電腦里能看到的目錄&#xff0c;比如我的learngit文件夾就是一個工作區&#xff1a; 版本庫&#xff08;Repository&#xff09; 工…

2020/5/13號單詞

consistent adj. 始終如一的&#xff0c;一致的&#xff1b;堅持的&#xff08;一致的&#xff0c;一貫&#xff0c;堅固定&#xff09; multiple n. 倍數&#xff1b;[電] 并聯 adj. 多重的&#xff1b;多樣的&#xff1b;許多的 mesh n. 網眼&#xff1b;網絲&#xff1…

后端:Layui實現文件上傳功能

今天給大家分享采用AspNet MVC前端框架LayUi實現文件上傳功能&#xff0c;感興趣的朋友可以學習一下。文件上傳實體&#xff08;UploadFile.cs&#xff09;public class UploadFile{public int code { get; set; } //請求codepublic string msg { get; set; } // 請求消息pub…

linux arp 防火墻關閉,如何關閉ARP防火墻

360安全衛士和QQ電腦管家都提供了ARP防火墻&#xff0c;但該功能對于家庭用戶沒有任何意義.那么該如何關閉它呢?下面是學習啦小編收集整理的如何關閉ARP防火墻&#xff0c;希望對大家有幫助~~關閉ARP防火墻的方法工具/原料360安全衛士QQ電腦管家如何關閉360安全衛士的ARP防火墻…

復習知識點:UITableView和UICollectionView的常用屬性

UITableView UICollectionView //UICollectionViewLayout //UICollectionViewLayout決定了UICollectionView如何顯示在界面上&#xff0c;Apple提供了一個最簡單的默認layout對象&#xff1a;UICollectionViewFlowLayout。 //Flow Layout是一個Cells的線性布局方案&#xff0c;…

ASP.NET+MVC+使用+Log4net+記錄日志筆記

前言&#xff1a;記錄系統中的日志&#xff0c;是一個好的項目產品必備的一個環節。每一個產品最終的目的都是要交予客戶使用&#xff0c;因為程序員代碼的開發水平參差不齊&#xff0c;Bug就成為了項目運維成本最大的因素之一。如何降低項目運維的成本呢&#xff0c;最重要的是…

git分支feature和hotfix分支

master: 主分支&#xff0c;主要用來版本發布。develop&#xff1a;日常開發分支&#xff0c;該分支正常保存了開發的最新代碼。feature&#xff1a;具體的功能開發分支&#xff0c;只與 develop 分支交互。release&#xff1a;release 分支可以認為是 master 分支的未測試版。…

linux查看鏡像的詳細信息,docker inspect命令查看鏡像詳細信息

# docker inspect ubuntu:18.04 // 查看鏡像的詳細信息[{"Id": "sha256:d131e0fa2585a7efbfb187f70d648aa50e251d9d3b7031edf4730ca6154e221e","RepoTags": ["ubuntu:18.04"],"RepoDigests": ["ubuntusha256:d26d529da…