返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Spring Boot 项目集成Redis的方式详解
  • 918
分享到

Spring Boot 项目集成Redis的方式详解

2024-04-02 19:04:59 918人浏览 安东尼
摘要

集成方式 使用Jedis Jedis是Redis官方推荐的面向Java的操作Redis的客户端,是对服务端直连后进行操作。如果直接使用Jedis进行连接,多线程环境下是非线程安全的

集成方式

使用Jedis

Jedis是Redis官方推荐的面向Java的操作Redis的客户端,是对服务端直连后进行操作。如果直接使用Jedis进行连接,多线程环境下是非线程安全的,正式生产环境一般使用连接池进行连接。


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

使用spring-data-redis

由Spring 框架提供,是对Redis客户端的进一步封装,屏蔽了不同客户端的不同实现方式,让服务端和客户端进一步解耦;也就是你可以切换不同的客户端实现,比如Jedis或Lettuce(Redis客户端实现之一),而不影响你的业务逻辑。

类似于的SpringCloud的服务治理框架对不同服务治理组件的适配,或是AMQP

它利用RedisTemplate对Jedisapi进行高度封装。使用的依赖如下:


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

Redis的安装

​收先要安装Redis服务端,Redis官方提供的是linux安装包。网上有很多详细的安装教程,这里不做展开。关于windows下的安装,可参考我的另一篇博文windows下Redis的安装和使用

绑定配置

​完成Redis服务端的安装之后,我们开始在项目中进行集成。这里我们先介绍使用Jedis的方式进行的集成。先按上面的提及的方式进行依赖的引入。然后将Redis的相关信息配置到配置文件中去。我们可以的新建一个配置文件redis.properties,内容如下:


# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.passWord=
# 连接超时时间(毫秒)
spring.redis.timeout=0

​接下来我们要为Redis客户端连接绑定上面的配置,创建出来的客户端实例才能够连接到我们的想连的Redis服务端。你可以使用@Value注解或@ConfigurationProperties注解的方式,本文采用的是后者,如果还不清楚的该注解的用法,可以移步我的另一篇博文@ConfigurationProperties实现自定义配置绑定查看,这里不做展开。

​以下是Redis服务端信息配置的接收类:MyRedisProperties.java


@ConfigurationProperties(
        prefix = "spring.redis"
)
@Component
@Data
@PropertySource("classpath:/redis.properties")
public class MyRedisProperties {
    private String database;
    private String host;
    private Integer port;
    private String password;
    private Integer timeOut;
}

由于我们正式生产环境一般都是采用连接池方式实现,所以我们还需要关于连接池的配置如下:


# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0

对应的接收类如下:


@ConfigurationProperties(
        prefix = "spring.redis.pool"
)
@Data
@Component
@PropertySource("classpath:/redis.properties")
public class RedisPoolProperties {

    private Integer maxActive;
    private Integer maxWait;
    private Integer maxIdle;
    private Integer minIdle;
}

然后向Spring容器装配客户端实例,分为单个客户端和连接池两种实现,如下代码:


@Configuration
public class RedisConfig {

    @Autowired
    private RedisPoolProperties redisPoolProperties;
    @Autowired
    private MyRedisProperties myRedisProperties;

    @Bean
    public Jedis singleJedis(){
        return new Jedis(myRedisProperties.getHost(),myRedisProperties.getPort());
    }

    @Bean
    public JedisPool jedisPool(){ 
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxIdle(redisPoolProperties.getMaxIdle());
        poolConfig.setMaxTotal(redisPoolProperties.getMaxActive());
        poolConfig.setMaxWaitMillis(redisPoolProperties.getMaxWait() * 1000);
        JedisPool jp = new JedisPool(poolConfig, myRedisProperties.getHost(), myRedisProperties.getPort(),
                myRedisProperties.getTimeOut()*1000, myRedisProperties.getPassword(), 0);
        return jp;

    }
}

获取Redis客户端

进行相关配置的绑定之后,意味着我们程序可以拿到Redis和连接池的相关信息,然后进行客户端的创建和连接了。所以我们要向Spring容器装配客户端实例,分为单个客户端和连接池两种实现,如下代码:


@Configuration
public class RedisConfig {

    @Autowired
    private RedisPoolProperties redisPoolProperties;
    @Autowired
    private MyRedisProperties myRedisProperties;

    @Bean
    public Jedis singleJedis(){
        return new Jedis(myRedisProperties.getHost(),myRedisProperties.getPort());
    }

    @Bean
    public JedisPool jedisPool(){ 
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxIdle(redisPoolProperties.getMaxIdle());
        poolConfig.setMaxTotal(redisPoolProperties.getMaxActive());
        poolConfig.setMaxWaitMillis(redisPoolProperties.getMaxWait() * 1000);
        JedisPool jp = new JedisPool(poolConfig, myRedisProperties.getHost(), myRedisProperties.getPort(),
                myRedisProperties.getTimeOut()*1000, myRedisProperties.getPassword(), 0);
        return jp;

    }
}

Redis工具的编写

装配好客户端实例后,我们就可以通过@Autowired的方式进行注入使用了。我们都知道,Redis有5中数据类型,分别是:

  • string(字符串
  • hash(哈希)
  • list(列表)
  • set(集合
  • zset(sorted set:有序集合)

所以的有必要的封装一个操作者5种数据列表的工具类,由于篇幅的关系,我们以Redis最基本的数据类型String为例,简单封装几个操作方法作为示例如下,更详细的封装,可参考java操作Redis数据库的redis工具,RedisUtil,jedis工具JedisUtil,JedisPoolUtil这一博文


@Service
public class RedisService {

    @Autowired
    private JedisPool jedisPool; // 连接池方式
    @Autowired
    private Jedis myJedis; // 单个客户端

    public <T> T get(String key, Class<T> clazz) {
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            String str = jedis.get(key);
            return stringToBean(str,clazz);
        } finally {
            close(jedis);
        }
    }

    public <T> void set(String key, T value) {
        try {
            String str = value.toString();
            if (str == null || str.length() <= 0) {
                return;
            }
            myJedis.set(key, str);
        } finally {
            close(myJedis);
        }
    }

    private void close(Jedis jedis) {
        if (jedis != null) {
            jedis.close();
        }
    }

    
    public static <T> T stringToBean(String str, Class<T> clazz) {

        if(str == null || str.length() <= 0 || clazz == null) {
            return null;
        }

        if(clazz == int.class || clazz == Integer.class) {
            return (T)Integer.valueOf(str);
        }else if(clazz == String.class) {
            return (T)str;
        }else if(clazz == long.class || clazz == Long.class) {
            return  (T)Long.valueOf(str);
        }else {
            return JSON.toJavaObject(jsON.parseObject(str), clazz);
        }
    }
}

其中get方法使用连接池中的客户端实例,set方法用到的是非连接池的实例,以区分两种不同的使用方式

使用

封装好的Redis的操作工具类后,我们就可以直接使用该工具类来进行对Redis的各种操作 。如下,直接注入即可。


@RestController
public class TestController {

    @Autowired
    private RedisService redisService;
    
    ......
}

到此这篇关于Spring Boot 项目集成Redis的文章就介绍到这了,更多相关Spring Boot 项目集成Redis内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring Boot 项目集成Redis的方式详解

本文链接: https://lsjlt.com/news/133256.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring Boot 项目集成Redis的方式详解
    集成方式 使用Jedis Jedis是Redis官方推荐的面向Java的操作Redis的客户端,是对服务端直连后进行操作。如果直接使用Jedis进行连接,多线程环境下是非线程安全的...
    99+
    2024-04-02
  • Spring Boot Redis 集成配置详解
    spring Boot 熟悉后,集成一个外部扩展是一件很容易的事,集成Redis也很简单,看下面步骤配置:一、添加pom依赖 <dependency> <groupId>org.springframe...
    99+
    2023-05-31
    spring boot redis
  • 详解Spring Boot集成MyBatis(注解方式)
    MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。spring Boot是能支持快速创建Spring应用的Java框架。本文通过一个例子来学习Spring B...
    99+
    2023-05-31
    spring boot mybatis
  • 详解Spring-Boot集成Spring session并存入redis
    spring Session 提供了一套用于管理用户 session 信息的API和实现。Spring Session为企业级Java应用的session管理带来了革新,使得以下的功能更加容易实现: 编写可水平扩展的原生云应用。 将se...
    99+
    2023-05-31
    spring session redis
  • 详解Spring集成Redis的两种方式
    目录一、使用Jedis方式集成1、增加依赖2、配置项3、配置连接池4、测试使用spring-data-redis1、引入依赖2、配置项3、使用4、可能会遇到的坑哨兵和集群总结:在工作...
    99+
    2024-04-02
  • Spring Boot集成redis,key自定义生成方式
    一)自定义redis key生成策略 @Configuration:表示当前类属于一个配置类,类似于一个spring.cfg.xml。 @EnableCaching:表示支持启用缓存...
    99+
    2024-04-02
  • 详解spring boot集成RabbitMQ
    RabbitMQ作为AMQP的代表性产品,在项目中大量使用。结合现在主流的spring boot,极大简化了开发过程中所涉及到的消息通信问题。首先正确的安装RabbitMQ及运行正常。RabbitMQ需啊erlang环境,所以首先安装对应版...
    99+
    2023-05-31
    spring boot bit
  • spring boot集成redis基础入门实例详解
    目录Redisredis和spring bootspring boot集成redisredis使用redis在spring boot中存取数据set写入数据get读取数据模拟接口请求读取redis中的数据总结redis ...
    99+
    2024-04-02
  • spring boot集成redis基础入门实例详解
    目录redisredis和spring bootspring boot集成redisredis使用redis在spring boot中存取数据set写入数据get读取数据模拟接口请求...
    99+
    2024-04-02
  • 详解Spring Boot 访问Redis的三种方式
    目录前言开始准备RedisTemplateJPA RepositoryCache总结前言 最近在极客时间上面学习丁雪丰老师的《玩转 Spring 全家桶》,其中讲到访问Redis的方式,我专门把他们抽出来,在一起对比下,...
    99+
    2022-12-13
    Spring Boot 访问Redis Spring Boot  Redis
  • 详解Spring Boot 访问Redis的三种方式
    目录前言开始准备RedisTemplateJPA RepositoryCache总结前言 最近在极客时间上面学习丁雪丰老师的《玩转 Spring 全家桶》,其中讲到访问Redis的方...
    99+
    2022-12-14
    Spring Boot 访问Redis Spring Boot  Redis
  • 详解Spring Boot 集成Shiro和CAS
    请大家在看本文之前,先了解如下知识点: Shiro 是什么?怎么用? Cas 是什么?怎么用? 最好有spring基础首先看一下下面这张图: 第一个流程是单纯使用Shiro的流程。 第二个流程是单纯使用Cas的流程。 第三个图是Shiro集...
    99+
    2023-05-31
    springboot shiro cas
  • 新鲜速递:Spring Boot 3 项目快速集成 Spring Security 6的方法
    准备 Spring Boot 3正式版本已发版了半个月,Spring Security6也一并更新,但是网络上的相关中文文档较少,盲目进行集成容易出错,所以本文讲如何快速集成。这里不再赘述Spring Boot3和Spring Securi...
    99+
    2023-08-25
    spring spring boot java
  • mybatis集成到spring的方式详解
    目录1 前言1.1 集成spring前使用mybatis的方式1.2 集成mybatis到spring的关键步骤2 SqlSessionFactoryBean对象分析2.1 buil...
    99+
    2023-05-20
    mybatis集成spring mybatis集成到spring
  • Spring Boot项目搭建的两种方式
    目录什么是Spring Boot使用 Spring Boot有什么好处Spring Boot开发环境搭建方式1:官网配置生成方式2:IDEA中生成什么是Spring Boot Spr...
    99+
    2024-04-02
  • 利用spring-data-redis如何将redis集成到spring项目中
    利用spring-data-redis如何将redis集成到spring项目中?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Redis 做为基于内存的 Key-...
    99+
    2023-05-31
    spring-data-redis redis spring
  • Redis通过在Spring Boot项目中使用实现集中式缓存
    这篇文章将为大家详细讲解有关Redis通过在Spring Boot项目中使用实现集中式缓存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 利用Spring Initializr来新建一个sp...
    99+
    2023-05-31
    springboot 集中 redis
  • spring boot集成redisson的方法
    本文小编为大家详细介绍“spring boot集成redisson的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“spring boot集成redisson的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-06-29
  • Spring Boot创建项目的方式有哪些
    这篇文章主要介绍了Spring Boot创建项目的方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Boot创建项目的方式有哪些文章都会有所收获,下面我们一起来看看吧。一...
    99+
    2023-06-30
  • Spring Boot项目集成Knife4j接口文档的实例代码
    目录1、在pom.xml引入依赖包2、创建Knife4j配置文件3、使用Knife4j注解4、全局参数Knife4j就相当于是swagger的升级版,对于我来说,它比swagger要...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作