当前位置: 首页 > article >正文

【Redis入门到精通六】在Spring Boot中集成Redis(含配置和操作演示)

目录

Spring Boot中集成Redis

1.项目创建和环境配置

2.基本操作演示


Spring Boot中集成Redis

        Spring社区也自定义了一套Redis的客户端,与jedis的操作方式有所差异,Spring中把每个类型的操作都单独封装了起来。下面就让我来带大家了解如何在Spring Boot项目中使用Redis。

1.项目创建和环境配置

1.第一步创建Spring Boot项目,在创建项目时勾选NoSQL中的Spring Data Redis,然后等待项目加载。

 2.第二步在application.yml中配置Redis服务地址

spring:
  data:
    redis:
      host: 127.0.0.1
      port: 8888

如果需要进行redis集群的配置可以使用下面的配置项:

spring:
  data:
    redis:
      cluster:
        nodes:
          - 172.30.0.101:6379
          - 172.30.0.102:6379
          - 172.30.0.103:6379
          - 172.30.0.104:6379
          - 172.30.0.105:6379
          - 172.30.0.106:6379
          - 172.30.0.107:6379
          - 172.30.0.108:6379
          - 172.30.0.109:6379
      lettuce:
        cluster:
          refresh:
          adaptive: true
          period: 2000

      下⽅的 lettuce 系列配置,⽬的是为了⾃动刷新集群的拓扑结构。当集群中有节点宕机/加⼊新节点之后, 我们的代码能够⾃动感知到集群的变化。由于上述 ip 都是 docker 容器的 ip, 在 windows 主机上不能直接访问。因此需要把程序打成 jar 包, 部署到 linux 上,再通过 java -jar [jar包名] 的⽅式执⾏。

 3.第三步引入StringRedisTemplate实例,便可以通过redisTemplate进行Redis的相关操作了。

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

2.基本操作演示

1.String类型操作演示:

@RestController
public class MyController {
    @Autowired
    private StringRedisTemplate redisTemplate;

    @GetMapping("/testString")
    public String testString(){
        redisTemplate.opsForValue().set("key","value");
        String value = redisTemplate.opsForValue().get("key");
        System.out.println(value);

        redisTemplate.delete("key");
        return "OK";
    }
}

在上述代码中,我们通过调用redisTemplate的opsForValue方法可以得到一个专门操作Redis中String类型的对象,通过这个对象的操作我们便可以得到如下结果:

 2.List类型操作演示:

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

在上述代码中,我们通过调用redisTemplate的opsForList方法可以得到一个专门操作Redis中List类型的对象,通过这个对象的操作我们便可以得到如下结果: 

3.Set类型操作演示:

    @GetMapping("/testSet")
    @ResponseBody
    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";
    }

在上述代码中,我们通过调用redisTemplate的opsForSet方法可以得到一个专门操作Redis中Set类型的对象,通过这个对象的操作我们便可以得到如下结果: 

4.Hash类型操作演示:

    @GetMapping("/testHashmap")
    @ResponseBody
    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";
    }

在上述代码中,我们通过调用redisTemplate的opsForHash方法可以得到一个专门操作Redis中Hash类型的对象,通过这个对象的操作我们便可以得到如下结果: 

5.Sorted Set类型操作演示:

    @GetMapping("/testZSet")
    @ResponseBody
    public String testZSet() {
        redisTemplate.opsForZSet().add("key", "吕布", 100);
        redisTemplate.opsForZSet().add("key", "赵云", 98);
        redisTemplate.opsForZSet().add("key", "典⻙", 95);
        Set<String> 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";
    }

在上述代码中,我们通过调用redisTemplate的opsForZSet方法可以得到一个专门操作Redis中Sorted Set类型的对象,通过这个对象的操作我们便可以得到如下结果: 


http://www.kler.cn/a/323212.html

相关文章:

  • SpringBoot多环境配置的实现
  • 另外一种缓冲式图片组件的用法
  • 《InsCode AI IDE:编程新时代的引领者》
  • 游戏引擎学习第八天
  • 排序排序的概念及其运用和选择排序
  • vue 中监听页面尺寸变化就调用函数
  • 机器学习查漏补缺(5)
  • 【刷题5】在排序数组中查找元素的第一个和最后一个位置
  • Android CCodec Codec2 (十五)C2DmaBufAllocator
  • 自动化办公-python中的open()函数
  • 深入理解 Nuxt.js 中的 app:error:cleared 钩子
  • 【hot100-java】【划分字母区间】
  • 消息中间件 Kafka 快速入门与实战
  • 让具身智能更快更强!华东师大上大提出TinyVLA:高效视觉-语言-动作模型,遥遥领先
  • mysql复合查询 -- 合并查询(union,union all)
  • 指令个人记录
  • Lab1:虚拟机kolla安装部署openstack,并创建实例
  • [大语言模型-论文精读] MoRAG - 基于多部分融合的检索增强型人体动作生成
  • 海尔嵌入式硬件校招面试题及参考答案
  • Python in Excel作图分析实战!
  • 关于Obj文件格式介绍与Unity加载Obj文件代码参考
  • 阿里云k8s发布vue项目
  • 防砸安全鞋这样挑,舒适又安心!
  • 用矩阵和统计报告估计polynomial线性回归的系数python
  • 直线模组降噪攻略
  • 【开源免费】基于SpringBoot+Vue.JS技术交流分享平台(JAVA毕业设计)