首页 > 数据库 >Spring Boot集成Redis

Spring Boot集成Redis

时间:2024-08-10 11:54:13浏览次数:14  
标签:redis Boot Spring void Redis public key Test stringRedisTemplate

目录

1.Redis简介

Redis是一款基于内存的使用 K-V 结构存取数据的 NoSQL 非关系型数据库。

Redis的主要作用就是缓存数据,通常,会将关系型数据库(例如MySQL等)中的数据读取出来,写入到Redis中,后续,当需要获取数据时,将优先从Redis中读取,而不是从关系型数据库中读取。

由于Redis是基于内存的,读写效率远高于关系型数据库,进而可以提高查询效率,并且,可以起到“保护”关系型数据库的作用

redis常用命令可参考:redis常用命令汇总

2.添加依赖

pom.xml 中添加redis注解

<!--redis依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

3.项目配置

application.properties 中配置redis

# Redis服务器地址
spring.redis.host=10.1.30.222
# Redis数据库索引(默认为0)
spring.redis.database=0 
# Redis服务器连接端口
spring.redis.port=6379 
# Redis服务器连接密码(默认为空)
#spring.redis.password=
## 连接超时时间(毫秒)
spring.redis.timeout=30000
# 连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
# 连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=1
#连接池中最大空闲等待时间,3s没有活干的时候直接驱逐该链接
spring.redis.lettuce.pool.min-evictable-idle-time-millis = 3000
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=-1

4.使用Redis

StringTest

@SpringBootTest(classes = App.class)
class StringTest {
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    private final String key = "zhengzhou";
    @Test
    public void set() {
        stringRedisTemplate.opsForValue().set(key, "我的家乡", 30, TimeUnit.SECONDS);
    }
    @Test
    public void  get(){
        System.out.println(stringRedisTemplate.opsForValue().get(key));
    }
}

SetTest

@SpringBootTest(classes = App.class)
public class SetTest {
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    private final String key = "city";
    @Test
    public void set() {
        stringRedisTemplate.opsForSet().add(key,"北京","上海","广州","深圳");
    }
    @Test
    public void get() {
        System.out.println(stringRedisTemplate.opsForSet().members(key));
    }
}

ListTest

@SpringBootTest(classes = App.class)
public class ListTest {
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    private final String key = "studentName";
    @Test
    public void leftPush() {
        stringRedisTemplate.opsForList().leftPush(key, "张三");
        stringRedisTemplate.opsForList().leftPush(key, "李四");
    }
    @Test
    public void rightPush() {
        stringRedisTemplate.opsForList().rightPush(key, "王五");
        stringRedisTemplate.opsForList().rightPush(key, "赵六");
    }
    @Test
    public void leftPop() {
        System.out.println(stringRedisTemplate.opsForList().leftPop(key));
    }
    @Test
    public void index() {
        System.out.println(stringRedisTemplate.opsForList().index(key, 1));
    }
    @Test
    public void range() {
        System.out.println(stringRedisTemplate.opsForList().range(key, 0, 1));
    }
    @Test
    void test6() {
        // 如果一些原生命令,spring 没有给我们封装,使用redisTemplate.execute(new RedisCallback)自定义命令
        while (true) {
            System.out.println("开始一轮监听");
            byte[] rawResults = stringRedisTemplate.execute(new RedisCallback<byte[]>() {
                @Override
                public byte[] doInRedis(RedisConnection connection){
                    List<byte[]> list = connection.bRPop(10, key.getBytes());
                    if (list != null && list.size() > 0) {
                        System.out.println(new String(list.get(0)));
                    }else {
                        System.out.println("没有数据");
                    }
                    return null;
                }
            });
            return;
        }
    }
}

HashTest

@SpringBootTest(classes = App.class)
public class HashTest {
    @Resource
    private StringRedisTemplate stringRedisTemplate;
    private final String key = "student.1";
    @Test
    public void set() {
        stringRedisTemplate.opsForHash().put(key, "name",  "张三");
        stringRedisTemplate.opsForHash().put(key, "age",  "18");
        stringRedisTemplate.opsForHash().put(key, "city",  "北京");
        stringRedisTemplate.opsForHash().put(key, "sex",  "男");
    }
    @Test
    public void get() {
        Map<Object, Object> entries = stringRedisTemplate.opsForHash().entries(key);
        System.out.println(entries);
    }
}

ZSetTest

@SpringBootTest(classes = App.class)
public class ZSetTest {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    private final String key ="张三";
    @Test
    public void  test(){
        //添加张三的成绩
        stringRedisTemplate.opsForZSet().add(key,"语文",98);
        stringRedisTemplate.opsForZSet().add(key,"数学",87);
        stringRedisTemplate.opsForZSet().add(key,"英语",75);
    }
}

5.测试结果

可使用免费版Navicat连接redis数据库,查看存储结果
测试结果

标签:redis,Boot,Spring,void,Redis,public,key,Test,stringRedisTemplate
From: https://blog.csdn.net/qq_57036151/article/details/141086149

相关文章

  • 毕业设计:基于Springboot的口腔医院微信小程序【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:SpringBoot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版、微信开发工具其他:Maven3.8以上二、系统功能系统首页:展示口腔医院微信小程序的主......
  • Springboot+Mybatis实现最简单的增删改查
    1.创建一个SpringBoot项目 2.导入依赖勾选上web下面的SpringWeb和sql下面的MySQL和Mybatis依赖 然后等待依赖下载导入2.1 依赖导入后的页面3.创建需要的包和Mybatis配置文件 3.1在原来的com.mybatis包下创建了entity,controller,service,mapper四个包3.2在resource......
  • Spring AI 更新:支持OpenAI的结构化输出,增强对JSON响应的支持
    就在昨晚,SpringAI发了个比较重要的更新。由于最近OpenAI推出了结构化输出的功能,可确保AI生成的响应严格遵守预定义的JSON模式。此功能显着提高了人工智能生成内容在现实应用中的可靠性和可用性。SpringAI紧随其后,现在也可以对OpenAI的结构化输出完美支持了。下图展示了本......
  • 【深入理解SpringCloud微服务】Ribbon源码解析
    【深入理解SpringCloud微服务】Ribbon源码解析Ribbon的原理RestTemplate中的拦截器链Ribbon的拦截器如何将拦截器放入到RestTemplate中Ribbon中的核心类LoadBalancerAutoConfigurationLoadBalancerInterceptorLoadBalancerClientILoadBalancerServerListIRuleIPingRibb......
  • 基于Springboot的仿淘宝系统(有报告)。Javaee项目,springboot项目。
    演示视频:基于Springboot的仿淘宝系统(有报告)。Javaee项目,springboot项目。项目介绍:采用M(model)V(view)C(controller)三层体系结构,通过Spring+SpringBoot+Mybatis+Vue+Maven来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的Web系统。界面简洁,操作简单。......
  • Redis缓存在项目中的使用升级
    对于redis在项目中的使用与介绍这里就不展开描述,与进行基本的代码构造了。这里针对redis的代码使用进行介绍一,最简单阶段(一)--简单使用redis缓存思想:拿数据先从缓存中拿去,如果缓存中没有再从数据库获取。packagecom.luojie.test.catchs;importcom.luojie.dao.mapper2.Ma......
  • Kafka整合SpringBoot
    前文Kafka客户端详解引入依赖<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target>......
  • SpringBoot+Vue房屋租赁(租房)系统 - 附源码已配套论文
    摘 要在网络高速发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,房东只能以用户为导向,所以开发租房网站是必须的。系统采用了Java技术,将所有业务模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,开发工具......
  • SpringBoot+Vue宠物医院管理系统-附源码与配套论文
    1.1课题背景在信息技术高速发展的今天,新知识、新技术层出不穷,计算机技术早已广泛的应用于各行各业之中,利用计算机的强大数据处理能力和辅助决策能力叫,实现行业管理的规范化、标准化、效率化。管理信息系统(ManagementInformationSystem,简称MIS〉是一个以人为主导,利用计算......
  • spring原理(第十三天)
    WEBRequestMappingHandlerMapping与RequestMappingHandlerAdapter俩是一对,分别用来处理@RequestMapping映射调用控制器方法、并处理方法参数与方法返回值DispatcherServlet初始化DispatcherServlet是在第一次被访问时执行初始化,也可以通过配置修改为Tomcat......