Redis Java 集成到 Spring Boot的詳細過程
一、使用 Spring Boot 連接 Redis 單機
1.創(chuàng)建Spring Boot 項目
2.勾選相關依賴(Dependencies)
- NoSQL 中的 Spring Data Redis
- 把 Web 中的 Spring Web 也勾選?下.
- 方便寫接口進行后續(xù)測試.
3.界面顯示
二、配置 Redis 服務地址
1.在 application.yml 中配置
spring: data: redis: host: 127.0.0.1 # 地址 port: 8888 # 映射的端口號
補充:
Spring Boot 1.x 和 Spring Boot 2.x 中,spring.redis.host 用于配置 Redis 連接屬性。
Spring Boot 3.x 中,spring.redis.host 已經(jīng)棄用。
從 Spring Boot 2.x 開始,引入了 spring.data.redis 作為配置 Redis 連接的方式,并且在 Spring Boot 3.x 中也可以使用 spring.data.redis 進行配置。
2.映射端口號
用Shell8 進行配置,需要一個公網(wǎng)ip
三、創(chuàng)建 Controller 類
1.創(chuàng)建一個 MyController
由于當前只是寫簡單的測試代碼, 我們就不進?分層了. 就只創(chuàng)建個簡單的 Controller 即可.
@RestController public class MyController { @Autowired private StringRedisTemplate redisTemplate; }
StringRedisTemplate 用來處理文本數(shù)據(jù)的
繼承于RedisTemplate
RedisTemplate 可以處理文本數(shù)據(jù)也可以處理二進制數(shù)據(jù)
2.使用 String
@GetMapping("/testString") @ResponseBody public String testString() { //先清除之前的數(shù)據(jù)庫 redisTemplate.execute((RedisConnection connection) -> { connection.flushAll(); return null; }); //對原生 redis 又做了進一步封裝 redisTemplate.opsForValue().set("key", "111"); redisTemplate.opsForValue().set("key2", "222"); redisTemplate.opsForValue().set("key3", "333"); String value = redisTemplate.opsForValue().get("key"); System.out.println("value:" + value); return "OK"; }
- 該代碼片段是一個 Spring Boot 控制器方法,通過 RedisTemplate 與 Redis 進行交互,并進行一些基本的操作
redisTemplate.execute((RedisConnection connection) -> { ... })
:這行代碼調用了 RedisTemplate
的execute
方法,執(zhí)行一個Redis
操作。具體來說,connection.flushAll()
會清空 Redis 中的所有數(shù)據(jù)(即調用FLUSHALL
命令)。execute
方法通過Lambda
表達式傳遞了一個Redis
連接對象,用來執(zhí)行Redis
命令。執(zhí)行完flushAll
后,Redis
中的所有數(shù)據(jù)
會被刪除。redisTemplate.opsForValue()
相當于對命令進行進一步的封裝,用它可以調用相關方法。
客戶端發(fā)送請求(返回OK)表明已經(jīng)成功
打印日志
3.使用 List
@GetMapping("/testList") @ResponseBody public String testList() { //先清除之前的數(shù)據(jù)庫 redisTemplate.execute((RedisConnection connection) -> { connection.flushAll(); return null; }); redisTemplate.opsForList().leftPush("key", "111"); redisTemplate.opsForList().leftPush("key", "222"); redisTemplate.opsForList().leftPush("key", "333"); String value = redisTemplate.opsForList().leftPop("key"); System.out.println("value: " + value); value = redisTemplate.opsForList().leftPop("key"); System.out.println("value: " + value); value = redisTemplate.opsForList().leftPop("key"); System.out.println("value: " + value); return "OK"; }
客戶端發(fā)送請求(返回OK)表明已經(jīng)成功
打印日志
4.使用 Set
@GetMapping("/testSet") @ResponseBody public String testSet() { //先清除之前的數(shù)據(jù)庫 redisTemplate.execute((RedisConnection connection) -> { connection.flushAll(); return null; }); redisTemplate.opsForSet().add("key", "111", "222", "333"); Set<String> result = redisTemplate.opsForSet().members("key"); System.out.println("result: " + result); Boolean exists = redisTemplate.opsForSet().isMember("key", "111"); System.out.println("existe: " + exists); Long count = redisTemplate.opsForSet().size("key"); System.out.println("count: " + count); redisTemplate.opsForSet().remove("key", "111", "222"); result = redisTemplate.opsForSet().members("key"); System.out.println("result: " + result); return "OK"; }
客戶端發(fā)送請求(返回OK)表明已經(jīng)成功
打印日志
5.使用 Hash
@GetMapping("/testHash") @ResponseBody public String testHash() { //先清除之前的數(shù)據(jù)庫 redisTemplate.execute((RedisConnection connection) -> { connection.flushAll(); return null; }); redisTemplate.opsForHash().put("key", "f1", "111"); Map<String, String> map = new HashMap<>(); map.put("f2", "222"); map.put("f3", "333"); redisTemplate.opsForHash().putAll("key", map); String value = (String) redisTemplate.opsForHash().get("key", "f1"); System.out.println("value: " + value); Boolean exists = redisTemplate.opsForHash().hasKey("key", "f1"); System.out.println("exists: " + exists); redisTemplate.opsForHash().delete("key", "f1", "f2"); Long len = redisTemplate.opsForHash().size("key"); System.out.println("len: " + len); return "OK"; }
客戶端發(fā)送請求(返回OK)表明已經(jīng)成功
打印日志
6.使用 ZSet
@GetMapping("/testZSet") @ResponseBody public String testZSet() { //先清除之前的數(shù)據(jù)庫 redisTemplate.execute((RedisConnection connection) -> { connection.flushAll(); return null; }); redisTemplate.opsForZSet().add("key", "zhangsan", 10); redisTemplate.opsForZSet().add("key", "lisi", 20); redisTemplate.opsForZSet().add("key", "wangwu", 30); Set<String> members = redisTemplate.opsForZSet().range("key", 0, -1); System.out.println("members: " + members); Set<ZSetOperations.TypedTuple<String>> membersWithScores = redisTemplate.opsForZSet().rangeWithScores("key", 0, -1); System.out.println("membersWithScores: " + membersWithScores); Double score = redisTemplate.opsForZSet().score("key", "zhangsan"); System.out.println("score: " + score); redisTemplate.opsForZSet().remove("key", "zhangsan"); Long size = redisTemplate.opsForZSet().size("key"); System.out.println("size: " + size); Long rank = redisTemplate.opsForZSet().rank("key", "lisi"); System.out.println("rank: " + rank); return "OK"; }
客戶端發(fā)送請求(返回OK)表明已經(jīng)成功
打印日志
四、小結
- 對于
Jedis
來說, 各個方法和Redis
的命令基本是一致的. - 而集成到
Spring Boot
之后, 接口上和原始Redis
命令存在部分差別, 但是使用起來也并不困難, 只要大家熟悉Redis
的基本操作, 還是很容易可以通過方法名字理解用法的.
到此這篇關于Redis Java 集成到 Spring Boot的文章就介紹到這了,更多相關Redis Java 集成到 Spring Boot內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringCloud使用集中配置組件Config規(guī)避信息泄露
項目應用中,數(shù)據(jù)庫連接信息、Access-key、Secret-key等由于其及其敏感和特殊性,一旦泄露出去就很可能會使得應用遭到黑客攻擊,例如數(shù)據(jù)庫賬號密碼泄露可能導致“拖庫”,甚至數(shù)據(jù)丟失。此等事件偶有發(fā)生,那么,在分布式微服務項目中,怎么避免這種情況呢2022-07-07Java 數(shù)據(jù)結構與算法系列精講之KMP算法
在很多地方也都經(jīng)??吹街v解KMP算法的文章,看久了好像也知道是怎么一回事,但總感覺有些地方自己還是沒有完全懂明白。這兩天花了點時間總結一下,有點小體會,我希望可以通過我自己的語言來把這個算法的一些細節(jié)梳理清楚,也算是考驗一下自己有真正理解這個算法2022-02-02SpringSecurity自定義登錄接口的實現(xiàn)
本文介紹了使用Spring Security實現(xiàn)自定義登錄接口,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-01-01Jenkins遷移job插件Job Import Plugin流程詳解
這篇文章主要介紹了Jenkins遷移job插件Job Import Plugin流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08