SpringBoot整合Lettuce redis過程解析
首先解釋一下Lettuce客戶端:
Lettuce 和 Jedis 的都是連接Redis Server的客戶端程序。Jedis在實現(xiàn)上是直連redis server,多線程環(huán)境下非線程安全,除非使用連接池,為每個Jedis實例增加物理連接。Lettuce基于Netty的連接實例(StatefulRedisConnection),可以在多個線程間并發(fā)訪問,且線程安全,滿足多線程環(huán)境下的并發(fā)訪問,同時它是可伸縮的設(shè)計,一個連接實例不夠的情況也可以按需增加連接實例。
1、添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2、添加redis配置
spring:
redis:
host: ****
password:****
port: 6379
# 連接超時時間(毫秒)
timeout: 1000
# Redis默認情況下有16個分片,這里配置具體使用的分片,默認是0
database: 0
# 連接池配置
lettuce:
pool:
# 連接池最大連接數(shù)(使用負值表示沒有限制) 默認 8
max-active: 8
# 連接池最大阻塞等待時間(使用負值表示沒有限制) 默認 -1
max-wait: -1
# 連接池中的最大空閑連接 默認 8
max-idle: 8
# 連接池中的最小空閑連接 默認 0
min-idle: 0
3、實現(xiàn)邏輯
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Override
public String testRedis(){
ExecutorService executorService = Executors.newFixedThreadPool(1000);
IntStream.range(0, 1000).forEach(i -> executorService.execute(() -> stringRedisTemplate.opsForValue().increment("lcl",1)));
System.out.println("lcl1=============" + stringRedisTemplate.opsForValue().get("lcl"));
stringRedisTemplate.opsForValue().set("lcl1","val1");
String val1 = stringRedisTemplate.opsForValue().get("lcl1");
System.out.println("lcl1=============" + val1);
String key = "redis:test:demo1";
User user = new User();
user.setId(100L);
user.setUsername("u2");
user.setPassword("p2");
stringRedisTemplate.opsForValue().set(key, JSON.toJSONString(user));
String valUser = stringRedisTemplate.opsForValue().get(key);
System.out.println("redis:test:demo1=============" + valUser);
User getUser = JSON.parseObject(valUser, User.class);
System.out.println("redis:test:demo1=============" + getUser.getUsername()+ "========" + getUser.getPassword());
return null;
}
測試結(jié)果:


由于redis有String、list、set、zset、hash、geo等類型,因此使用時不止使用opsForValue()方法,具體的對應(yīng)方法如下:
- opsForValue: 對應(yīng) String(字符串)
- opsForZSet: 對應(yīng) ZSet(有序集合)
- opsForHash: 對應(yīng) Hash(哈希)
- opsForList: 對應(yīng) List(列表)
- opsForSet: 對應(yīng) Set(集合)
- opsForGeo: 對應(yīng) GEO(地理位置)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之循環(huán)隊列簡單定義與用法示例
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之循環(huán)隊列簡單定義與用法,簡要描述了循環(huán)隊列的概念、原理,并結(jié)合實例形式分析了java循環(huán)隊列的定義與使用方法,需要的朋友可以參考下2017-10-10
SpringSecurity6自定義JSON登錄的實現(xiàn)
目前最新版的Spring Boot已經(jīng)到了3.0.5了,隨之而來Spring Security 目前的版本也到了6.0.2了,Spring Security寫法的變化特別多,本文就來介紹下,感興趣的可以了解一下2023-12-12
Java使用kafka發(fā)送和生產(chǎn)消息的示例
本篇文章主要介紹了Java使用kafka發(fā)送和生產(chǎn)消息的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
Spring?Initializr只能創(chuàng)建為Java?17版本以上的問題解決
這篇文章主要給大家介紹了關(guān)于Spring?Initializr只能創(chuàng)建為Java?17版本以上問題的解決辦法,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01
2020macOS Big Sur配置Java開發(fā)環(huán)境之jdk安裝過程
這篇文章主要介紹了2020macOS Big Sur配置Java開發(fā)環(huán)境之jdk安裝,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
IntelliJ?IDEA?2022.1.1創(chuàng)建java項目的詳細方法步驟
最近安裝了IntelliJ IDEA 2022.1.1,發(fā)現(xiàn)新版本的窗口還有些變化的,所以下面這篇文章主要給大家介紹了關(guān)于IntelliJ?IDEA?2022.1.1創(chuàng)建java項目的詳細方法步驟,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-07-07
Java常見數(shù)據(jù)結(jié)構(gòu)面試題(帶答案)
這篇文章主要介紹了Java常見數(shù)據(jù)結(jié)構(gòu)面試題,帶有答案及解釋,希望對廣大的程序愛好者有所幫助,同時祝大家有一個好成績,需要的朋友可以參考下。2017-09-09

