【Redis】 Redis 集成到 Spring Boot上面

2024-07-03 1472阅读

文章目录

  • 🍃前言
  • 🎄Spring Boot连接redis客户端
    • 🚩项目的创建
    • 🚩配置端⼝转发
    • 🚩配置 redis 服务地址
    • 🚩更改 Redis 配置文件
    • 🚩使用 StringRedisTemplate 类操作
    • 🎍Spring Boot操作Redis客户端
    • ⭕总结

      🍃前言

      Spring Boot 系列内置的 Redis 是 Lettuce, 和 Jedis 的使⽤还是存在⼀定的差异.

      对于 Jedis 来说, 各个⽅法和 Redis的命令基本是⼀致的.

      ⽽集成到 Spring Boot 之后,接⼝上和原始 Redis 命令存在部分差别,但是使⽤起来也并不困难,很容易可以通过⽅法名字理解⽤法。

      下面这篇文章的内容主要内容就为 Spring Boot如何连接 Redis 客户端 与 Spring Boot使用redis的一些命令

      🎄Spring Boot连接redis客户端

      Spring Boot连接redis客户端主要分为以下几个步骤:

      1. 项目的创建
      2. 配置端口转发
      3. 配置 redis 服务地址
      4. 更改 Redis 配置文件
      5. 使用 StringRedisTemplate 类操作

      🚩项目的创建

      勾选 NoSQL 中的Spring Data Redis

      当然,把 Web 中的 Spring Web 也勾选⼀下,⽅便写接⼝进⾏后续测试.

      【Redis】 Redis 集成到 Spring Boot上面

      🚩配置端⼝转发

      edis 服务器安装在云服务器上, ⽽我们编写的代码则是在本地主机.

      要想让本地主机能访问 redis, 需要把 redis 的端⼝(默认:6379)通过云服务器后台⻚⾯的 “防⽕墙” / "安全组"放开端⼝到公⽹上.

      但是这个操作⾮常危险(⿊客会顺着redis 端⼝进来)。因此我们可以使⽤端⼝转发的⽅式, 直接把服务器的 redis 端⼝映射到本

      博主使用的时 xshell 操作 linux 服务器,如果这部分还不会的小伙伴可以参考博主写的 【JavaEE进阶】使用云服务器实现Linux环境搭建

      在 xshell 中, 进⾏如下配置:

      1. 右键云服务器的会话, 选择属性.
      2. 找到隧道 -> 配置转移规则

      【Redis】 Redis 集成到 Spring Boot上面

      【Redis】 Redis 集成到 Spring Boot上面

      此处需要注意的是:

      • 如果你之前已经连接上服务器,然后再进行配置,这时你需要重新断开进行连接

        此时访问本地的 8888,就相当于访问对应服务器的 6379

        这里我们也可以通过本地 cmd 输入以下命令查看我们所配置端口是否被使用来判断配置是否成功

        【Redis】 Redis 集成到 Spring Boot上面

        🚩配置 redis 服务地址

        在 application.yml 中配置

        【Redis】 Redis 集成到 Spring Boot上面

        配置代码如下:

        spring:
         redis:
          host: 127.0.0.1
          port: 8888
        

        🚩更改 Redis 配置文件

        我们想要通过该端口正确访问 Redis 时,我们还需要对 Redis 配置文件进行如下配置

        首先我们使用vim命令进入,打开相应的配置文件,命令如下

        vim /etc/redis/redis.conf
        

        然后点击 i 进入插入模式进行修改,需要修改的点如下:

        • 修改 bind 127.0.0.1 为 bind 0.0.0.0
        • 修改 protected-mode yes 为 protected-mode no

          【Redis】 Redis 集成到 Spring Boot上面

          最后按 Esc 键,并输入 :wq,按下enter键返回即可

          🚩使用 StringRedisTemplate 类操作

          创建一个 controller 类,并注入 StringRedisTemplate 类

          代码示例如下:

          @RestController
          public class RedisController {
              @Autowired
              private StringRedisTemplate redisTemplate;
          }
          

          后续操作通过操作 redisTemplate 实例实施redis命令

          🎍Spring Boot操作Redis客户端

          Spring Boot 重新封装了操作命令,分别通过上面所创建的redisTemplate实例的不同的方法进行调用不同类型的命令

          • String类型:redisTemplate.opsForValue()
          • List类型:redisTemplate.opsForList()
          • 哈希类型:redisTemplate.opsForHash()
          • 集合类型:redisTemplate.opsForSet()
          • 有序集合类型:redisTemplate.opsForZSet()

            基础操作指令如下:

            使用String类型:

            @RequestMapping("testString")
            public String testString() {
                redisTemplate.opsForValue().set("key", "value");
                String value = redisTemplate.opsForValue().get("key");
                System.out.println(value);
                redisTemplate.delete("key");
                return "OK";
            }
            

            使用List类型:

            @RequestMapping("testList")
            public String testList() {
                redisTemplate.opsForList().leftPush("key", "a");
                redisTemplate.opsForList().leftPushAll("key", "b", "c", "d");
                List values = redisTemplate.opsForList().range("key", 1, 2);
                System.out.println(values);
                redisTemplate.delete("key");
                return "OK";
            }
            

            使用hash类型:

            @RequestMapping("/testHash")
            public String testHashmap() {
                redisTemplate.opsForHash().put("key", "name", "zhangsan");
                String value = (String) redisTemplate.opsForHash().get("key", "name");
                System.out.println(value);
                redisTemplate.opsForHash().delete("key", "name");
                boolean ok = redisTemplate.opsForHash().hasKey("key", "name");
                System.out.println(ok);
                redisTemplate.delete("key");
                return "OK";
            }
            

            使用set:

            @RequestMapping("/testSet")
            public String testSet() {
                redisTemplate.opsForSet().add("key", "aaa", "bbb", "ccc");
                boolean ok = redisTemplate.opsForSet().isMember("key", "aaa");
                System.out.println(ok);
                redisTemplate.opsForSet().remove("key", "aaa");
                long n = redisTemplate.opsForSet().size("key");
                System.out.println(n);
                redisTemplate.delete("key");
                return "OK";
            }
            

            使用zset:

            @RequestMapping("/testZset")
            public String testZSet() {
                redisTemplate.opsForZSet().add("key", "吕布", 100);
                redisTemplate.opsForZSet().add("key", "赵云", 98);
                redisTemplate.opsForZSet().add("key", "典⻙", 95);
                Set values = redisTemplate.opsForZSet().range("key", 0, 2);
                System.out.println(values);
                long n = redisTemplate.opsForZSet().count("key", 95, 100);
                System.out.println(n);
                redisTemplate.delete("key");
                return "OK";
            }
            

            上面只是介绍使用了一些简单的命令,有需要的小伙伴可以查看专业文档进行详细学习

            ⭕总结

            关于《【Redis】 Redis 集成到 Spring Boot上面》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]