SpringBoot中如何操作Redis
方案一:Spring Data Redis創建工程
創建工程,引入Redis 依賴:
創建成功後,還需要手動引入commos-pool2 的依賴,因此最終完整的pom.xml 依賴如下:
<dependencies> <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> </dependencies> <dependency> <groupid>org.apache.commons</groupid> <artifactid>commons-pool2</artifactid> </dependency>
這裡主要是引入了Spring Data Redis 連接池。
設定Redis 訊息
接下來設定Redis 的訊息,訊息包含兩方面,一方面是Redis 的基本訊息,另一方面則是連結池訊息:
spring.redis.database=0 spring.redis.password=123 spring.redis.port=6379 spring.redis.host=192.168.66.128 spring.redis.lettuce.pool.min-idle=5 spring.redis.lettuce.pool.max-idle=10 spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-wait=1ms spring.redis.lettuce.shutdown-timeout=100ms
自動配置
當開發者在專案中引入了Spring Data Redis ,並且配置了Redis 的基本信息,此時,自動化配置就會生效。
我們從Spring Boot 中Redis 的自動化設定類別中就可以看出端倪:
@Configuration @ConditionalOnClass(RedisOperations.class) @EnableConfigurationProperties(RedisProperties.class) @Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class }) public class RedisAutoConfiguration { @Bean @ConditionalOnMissingBean(name = "redisTemplate") public RedisTemplate<object> redisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate<object> template = new RedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template; } @Bean @ConditionalOnMissingBean public StringRedisTemplate stringRedisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { StringRedisTemplate template = new StringRedisTemplate(); template.setConnectionFactory(redisConnectionFactory); return template; } }</object></object>
這個自動化設定類別很好理解:
首先標記這個是一個配置類,同時該配置在RedisOperations 存在的情況下才會生效(即專案中引入了Spring Data Redis)
然後導入在application.properties 中配置的屬性
然後再導入連接池資訊(如果存在的話)
最後,提供了兩個Bean ,RedisTemplate 和StringRedisTemplate ,其中StringRedisTemplate 是RedisTemplate 的子類,兩個的方法基本上一致,不同之處主要體現在操作的資料類型不同,RedisTemplate 中的兩個泛型都是Object ,意味者儲存的key 和value 都可以是一個對象,而StringRedisTemplate 的兩個泛型都是String ,意義者StringRedisTemplate 的key 和value 都只能是字串。只有在開發者沒有提供相關的 Bean 時,這兩個配置才會生效。如果有提供相關的 Bean,則不會生效。
使用
接下來,可以直接在Service 中註入StringRedisTemplate 或RedisTemplate 來使用:
@Service public class HelloService { @Autowired RedisTemplate redisTemplate; public void hello() { ValueOperations ops = redisTemplate.opsForValue(); ops.set("k1", "v1"); Object k1 = ops.get("k1"); System.out.println(k1); } }
Redis 中的資料操作,大體上來說,可以分為兩種:
針對key 的操作,相關的方法就在RedisTemplate 中
針對具體資料類型的操作,相關的方法需要先取得對應的資料類型,取得對應資料類型的操作方法是opsForXXX
呼叫就可以將資料儲存到Redis 中去了,如下:
k1 前面的字元是由於使用了RedisTemplate 導致的,RedisTemplate 對key 進行序列化之後的結果。
RedisTemplate 中,key 預設的序列化方案是 JdkSerializationRedisSerializer 。
而在 StringRedisTemplate 中,key 預設的序列化方案是 StringRedisSerializer ,因此,如果使用 StringRedisTemplate ,預設 key 前面不會有前綴。
不過開發者也可以自行修改RedisTemplate 中的序列化方案,如下:
@Service public class HelloService { @Autowired RedisTemplate redisTemplate; public void hello() { redisTemplate.setKeySerializer(new StringRedisSerializer()); ValueOperations ops = redisTemplate.opsForValue(); ops.set("k1", "v1"); Object k1 = ops.get("k1"); System.out.println(k1); } }
當然也可以直接使用StringRedisTemplate:
@Service public class HelloService { @Autowired StringRedisTemplate stringRedisTemplate; public void hello2() { ValueOperations ops = stringRedisTemplate.opsForValue(); ops.set("k2", "v2"); Object k1 = ops.get("k2"); System.out.println(k1); } }
另外需要注意,Spring Boot 的自動化配置,只能配置單機的Redis ,如果是Redis 集群,則所有的東西都需要自己手動配置,關於如何操作Redis 集群,松哥以後再來和大家分享。
方案二:Spring Cache
透過Spring Cache 的形式來操作Redis,Spring Cache 統一了緩存江湖的門面,這種方案,松哥之前有過一篇專門的文章介紹,小夥伴可以移步這裡:Spring Boot中,Redis快取還能這麼用! 。
方案三:回歸原始時代
第三種方案,就是直接使用Jedis 或其他的客戶端工具來操作Redis ,這種方案在Spring Boot 中也是支援的,雖然操作麻煩,但是支援
以上是SpringBoot中如何操作Redis的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。
