SpringBoot——整合Redis

这篇具有很好参考价值的文章主要介绍了SpringBoot——整合Redis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简单介绍

redis是一款key-velue存储结构的内存级NoSQL数据库

  • - 支持多种数存储格式
  • - 支持持久化
  • - 支持集群

简单理解成一个大Map,反正我就是这么理解的。当然他的内部有很多复杂的数据类型和操作,咱们在这里就不过多赘述了。

安装并简单的使用Redis

首先你要操作Redis你得先有Redis的服务,那么第一步就是安装Redis,在Ubuntu中操作如下:

sudo apt update
sudo apt install redis-server

操作完成之后,我们的Redis的服务就已经安装好了,然后就是查看Redis服务的运行状态: 

sudo systemctl status redis-server

正常的情况下,你会看到这些提示信息:SpringBoot——整合Redis,spring boot,redis,java 这就表示你已经安装完成并且服务已经启动了。

关于Redis的操作,我们这里只介绍一下基本的增删查,要想更深入地学习Redis,那你不应该来这里。

SpringBoot——整合Redis,spring boot,redis,java

首先我们在控制台上输入命令:redis-cli 就会进入Redis的客户端,在这里可以看到Redis的IP地址和端口号,这里都是保持默认状态的。然后我们在命令行里输入内容:SpringBoot——整合Redis,spring boot,redis,java 

之前我们说Redis是以键值对的方式存储数据的,那么在这里,set表示插入数据的操作,Redis没有表这些概念,你可以直接开始就操作数据,第二个spring表示键,anythen表示值。也就是说在之后的操作中,我们可以根据spring查到到他对应的只anythen:SpringBoot——整合Redis,spring boot,redis,java 

get表示获取,根据键获取对应的值,在这里我们用spring获取到了它对应的值anythen。

SpringBoot集成Redis

其实SpringBoot集成任何的第三方技术就那么几个步骤,首先导入坐标,然后编写配置,自动注入操作对象完成操作:

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

上面就是操作redis的坐标,我们在Pom文件中添加这个坐标就可以引入一个操作Redis的对象,然后我们去编写配置文件:SpringBoot——整合Redis,spring boot,redis,java

当我们在配置文件中敲上一个redis之后,会弹出很多的提示项,其中中间的redis在前面的都是关于Redis数据库的配置项,其他的不是,其他的都是第三方技术基于Redis的解决方案的配置项,并且我们主要用到的两个配置项host和port都有了默认的配置,也就是我们当前使用的默认配置,所以其实这里的配置不写也行,但是为了演示一下作用,我们现在先加上:

spring:
  redis:
    host: localhost
    port: 6379

配置就完成了,然后来到测试类中,对Redis进行一个增加数据和读写数据的测试:

@SpringBootTest
public class RedisTest {
    @Test
    public void SetTest(@Autowired RedisTemplate redisTemplate){
        ValueOperations value = redisTemplate.opsForValue();
        value.set("springBoot","RedisOnSpringBoot");
    }
    @Test
    public void GetTest(@Autowired RedisTemplate redisTemplate){
        ValueOperations value = redisTemplate.opsForValue();
        Object o = value.get("springBoot");
        System.out.println(o);
    }
}

SpringBoot——整合Redis,spring boot,redis,java

上面的代码就是通过RedisTemplate去操作Redis的测试代码,其实关键的就是通过自动注入的方式,获取操作Redis的对象RedisTemplate,然后再去获取Redis中不同数据结构的操作对象ops,之后通过ops去添加,查询对象,我们运行两个测试方法,会在控制台中查出我们刚才插入的数据:SpringBoot——整合Redis,spring boot,redis,java 

在一大堆的配置文件中找到了数据,这个就是我们在测试方法中添加进入的数据。

总结 

在SpringBoot集成Redis中,其实就是一个启动服务,然后导入坐标,编写配置,获取RedisTemplate对象操作Redis的过程,其他的操作由于我们没有Redis基础所有我们也没办法做过多的操作,但是最基础的SpringBoot对于Redis的集成到这里就完成了。

两个不同的API

之前我们在控制台里操作了一个数据,然后再SpringBoot环境下又操作了一个值,那么按照道理来想,我既然操作的是一个数据库,那么我无论在哪里应该都能获取到我写入的值对吧,我们在控制台里看一下:

SpringBoot——整合Redis,spring boot,redis,java

当我想要获取springBoot这个键对应的值的时候,很不幸,查不到,并不是值写错了的问题,而是确确实实的查不到,那么再来SpringBoot中查找我们在控制台操作的值:

SpringBoot——整合Redis,spring boot,redis,java

SpringBoot——整合Redis,spring boot,redis,java

和不幸,也没有找到,也就是说我们明明操作的是一个数据库,但是操作的结果谁也查不到谁,那就很奇怪了,这是因为在操作Redis的时候,他提供了两个API供我们使用,一种是我们刚才使用的RedisTemplate,另一种就是专门为了操作字符串而出现的StringRedisTemplate:SpringBoot——整合Redis,spring boot,redis,java 

    @Test
    public void GetTest2(@Autowired StringRedisTemplate stringRedisTemplate){
        ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
        String spring = ops.get("spring");
        System.out.println(spring);
    }

 也就是说,这个API才是和我们在控制台上操作的API是同一个,只有通过这个才能查询到刚才我们在控制台中设置的变量,现在我们运行这个新的测试类查看一下运行结果:SpringBoot——整合Redis,spring boot,redis,java

现在就能查询到刚才我们在控制台操作的数据了,其实这个API和刚才的API操作的ops是同一个,只不过区别在于两个类的泛型不同:SpringBoot——整合Redis,spring boot,redis,java 

注意看这里的区别。在没有指定泛型的时候默认的泛型类型是Object也就是对象,只有指定了泛型的类型是String之后才能操作字符串,与控制台保持一致。 

具体的区别就是如果你不指定泛型的话,在写入数据库的时候,会将字符当做对象进行序列化,到时候就不是看到的字符串了,而如果指定他为字符串的话,就会不进行序列化直接存储,与控制台的操作等效。

其实手动指定泛型的效果是一样的。

两个客户端

Redis提供了两个客户端,一个是比较老的jedis,以及一个比较新的lettuce,在当前的环境中默认使用的是lettuce,如果你想要切换成jedis,那么你需要进行以下几个方面的修改。

首先导入jedis客户端的坐标:

<dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
</dependency>

由于SpringBoot默认维护了jedis的最优的版本,所以在SpringBoot中不需要多写版本号。然后我们需要在配置文件中将客户端的类型修改成jedis:

spring:
  redis:
    host: localhost
    port: 6379
    client-type: jedis

然后我们其他的什么都不用改,直接启动刚才做的测试类即可:SpringBoot——整合Redis,spring boot,redis,java

如果测试通过,则说明当前操作的客户端已经修改成了jedis,并且运行成功了。 

并且在修改了客户端类型之后,可以对相应的客户端进行更加丰富的配置,至于为什么会出现两个客户端,是因为jedis客户端作为早期的客户端,依然还有人在用,而lettcus作为新的客户端,实现的技术不一样,就容易导致在更换客户端技术的时候对老技术有不兼容的可能性,所以除了支持最新的客户端,对于老产品的兼容也是很重要的。

lettcus与jedis的区别:

jedis链接Redis服务器是直连模式,当多线程模式下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个链接专用,这样整体性能就大受影响。

lettcus基于Netty框架与Redis服务器连接,底层设计中蚕蛹StatusFulRedisConnection。StatusFulRedisConnection自身是线程安全的,可以保障并发访问安全问题,所以一个链接可以被多线程复用。当然Lettcus也支持多连接实例一起工作。文章来源地址https://www.toymoban.com/news/detail-770238.html

到了这里,关于SpringBoot——整合Redis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot整合Redis的高效数据缓存实践

    引言 在现代Web应用开发中,数据缓存是提高系统性能和响应速度的关键。Redis作为一种高性能的缓存和数据存储解决方案,被广泛应用于各种场景。本文将研究如何使用Spring Boot整合Redis,通过这个强大的缓存工具提高应用的性能和可伸缩性。 整合redis,需要先安装redis Redis 

    2024年01月22日
    浏览(68)
  • Spring Boot 整合 Redis 全面教程:从配置到使用

    Redis 是一种高性能的键值存储数据库,而 Spring Boot 是一个简化了开发过程的 Java 框架。将两者结合,可以轻松地在 Spring Boot 项目中使用 Redis 来实现数据缓存、会话管理和分布式锁等功能。 在 pom.xml 文件中添加 Redis 相关依赖 在 application.properties 或 application.yml 配置文件中添

    2024年02月13日
    浏览(41)
  • Spring Boot 整合 Redis,使用 RedisTemplate 客户端

    1.1.1 添加依赖 redis 的依赖: 1.1.2 yml 配置文件 1.1.3 Config 配置文件 1.1.4 使用示例 注入 RedisTemplate,即可操作 Redis,简单示例如下: 1.2.1 RedisTemplate 简介 RedisTemplate 是 Spring Data Redis 项目的一部分,旨在简化在Java应用程序中使用 Redis 的过程。它提供了一组简单的方法,可以在

    2024年02月09日
    浏览(271)
  • 【Redis(8)】Spring Boot整合Redis和Guava,解决缓存穿透、缓存击穿、缓存雪崩等缓存问题

    在缓存技术的挑战及设计方案我们介绍了使用缓存技术可能会遇到的一些问题,那么如何解决这些问题呢? 在构建缓存系统时,Spring Boot和Redis的结合提供了强大的支持,而Guava的 LoadingCache 则为缓存管理带来了便捷的解决方案。下面我将介绍如何通过整合Spring Boot、Redis和Gu

    2024年04月22日
    浏览(48)
  • 【Spring】SpringBoot整合Redis,用Redis实现限流(附Redis解压包)

       📝个人主页:哈__ 期待您的关注  本文介绍SpringBoot整合Redis并且进行接口的限流,文章主要介绍的是一种思想,具体代码还要结合实际。 Redis的解压包我放在了百度网盘上,有需要的可以下载。 Redis-x64-3.0.504 解压码:uhwj 我们在本地解压下载的Redis压缩包,打开解压后的

    2024年04月09日
    浏览(53)
  • Redis(发布订阅、事务、redis整合springboot、集成 Spring Cache)

    目录 一.redis的发布订阅 1、什么 是发布和订阅 2、Redis的发布和订阅 3、发布订阅的代码实现 二.Redis事务 1.事务简介 1、在事务执行之前 如果监听的key的值有变化就不能执行 2、在事务执行之前 如果监听的key的值没有变化就能执行 3、Exec之前就出现错误 4、Exec之后出现的错误

    2024年01月24日
    浏览(53)
  • 微服务 Spring Boot 整合Redis 实现优惠卷秒杀 一人一单

    CSDN话题挑战赛第2期 参赛话题:Java技术分享 在分布式系统中,经常需要使用 全局唯一ID 查找对应的数据。产生这种ID需要保证系统全局唯一,而且要高性能以及占用相对较少的空间。 全局唯一ID在数据库中一般会被设成 主键 ,这样为了保证数据插入时索引的快速建立,还需

    2024年02月03日
    浏览(47)
  • springboot(spring)整合redis(集群)、细节、底层配置讲解

    1.引入依赖.      其实springboot整合其他主流框架直接在后面加上名称即可,比如spring-boot-starter-redis,然后就直接可以用,可以直接注入了.      主要原因大概就是springboot框架已经包含了自动注入的功能,对于每一个引入的主要jar包(包含starter),都有一个factory的配置文件,里面配置

    2024年02月09日
    浏览(72)
  • Spring Boot 整合SpringSecurity和JWT和Redis实现统一鉴权认证

    本文主要讲了Spring Security文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点,优秀一点 Spring Security Spring Security是一个强大且高度可定制的身份验证和访问控制框架。它是保护基

    2024年02月05日
    浏览(51)
  • 【Java】SpringBoot快速整合Redis

            文末有源码gitee地址         【面试】浅学Redis_redis 广播-CSDN博客         Redis是一种 高性能开源的基于内存的,采用键值对存储的非关系型数据库 ,它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。Redis的特点之一是 数据存储在内存

    2024年01月19日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包