springboot项目同时操作redis服务器的两个库以及操作两个redis实例

SpringBoot基本操作(五)——SpringBoot使用Jedis整合Redis(有demo) SpringBoot2.0笔记 (一)SpringBoot基本操作——环境搭建及项目创建(有demo) (二)SpringBoot基本操作——使用IDEA打war包发布及测试 (三)SpringBoot基本操作——SpringBoot整合SpringDataJpa(有demo) (四)SpringBoot基本操作——SpringBoot使用RedisTemplate整合Redis(有dem... 阅读详情

本文介绍的有两种连接方式:1.操作一个redis实例的不同库。2.操作两个redis实例的库【这种情况相同不同都一样】,两种方法大差不差,基于一个大致的框架上小改即可实现。

先说第一种情况:

一、搭建项目

搭建项目比较简单,idea可以自动生成,这里只放pom.xml【依赖是我项目用到的,根据自己情况改】

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.siemens</groupId>
    <artifactId>gat</artifactId>
    <version>0.0.1</version>
    <name>gat</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.42</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-joda</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
            <version>1.3.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.6.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

二、application.yml文件配置

server:
  port: 8081

spring:
  datasource:
    name: druid_source
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=utf8&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
    username: xxxx
    password: xxxx

#配置0号库和10号库
redis:
  database:
    db1: 0
    db2: 10
  host: 127.0.0.1
  port: 6379
  timeout: 10000
  pool:
    max-active: 100
    max-idle: 3
    min-idle: 0
    max-wait: -1

三、redis配置类

package com.siemens.gat.config;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.StringRedisTemplate;

import java.time.Duration;

/**
 * Created by SongShilun on 2020/12/14 10:12
 */
@Configuration
public class RedisConfig {
    @Value("${redis.database.db1}")
    private int db1;

    @Value("${redis.database.db2}")
    private int db2;

    @Value("${redis.host}")
    private String host;

    @Value("${redis.port}")
    private int port;

    @Value("${redis.timeout}")
    private int timeout;

    @Value("${redis.pool.max-active}")
    private int maxActive;

    @Value("${redis.pool.max-idle}")
    private int maxIdle;

    @Value("${redis.pool.min-idle}")
    private int minIdle;

    @Value("${redis.pool.max-wait}")
    private int maxWait;

    @Bean
    public GenericObjectPoolConfig getPoolConfig(){
        // 配置redis连接池
        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(maxActive);
        poolConfig.setMaxIdle(maxIdle);
        poolConfig.setMinIdle(minIdle);
        poolConfig.setMaxWaitMillis(maxWait);
        return poolConfig;
    }

    @Bean(name = "redisTemplate1")
    public StringRedisTemplate getRedisTemplate1(){
        return getStringRedisTemplate(db1);
    }

    @Bean(name = "redisTemplate2")
    public StringRedisTemplate getRedisTemplate2(){
        return getStringRedisTemplate(db2);
    }

    private StringRedisTemplate getStringRedisTemplate(int database) {
        // 构建工厂对象
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
        config.setHostName(host);
        config.setPort(port);
        //config.setPassword(RedisPassword.of(password));
        LettucePoolingClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
                .commandTimeout(Duration.ofSeconds(timeout))
                .poolConfig(getPoolConfig())
                .build();
        LettuceConnectionFactory factory = new LettuceConnectionFactory(config, clientConfig);
        // 设置使用的redis数据库
        factory.setDatabase(database);
        // 重新初始化工厂
        factory.afterPropertiesSet();
        return new StringRedisTemplate(factory);
    }
}

以上就是连接一个redis实例,分别操作一个redis实例的不同的两个库的配置

---------------------------------------------------------------分割线--------------------------------------------------------------

下边说一下,当需要连接两个不同服务器上的redis时,应该怎么配置:
ps:连接两个redis实例和上述的代码很像,只需要做些小小的改动即可:

  1. pom.xml文件不动
  2. application.yml:
server:
  port: 8081

spring:
  datasource:
    name: druid_source
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/databaseName?characterEncoding=utf8&useSSL=false&serverTimezone=CTT&allowPublicKeyRetrieval=true
    username: xxxx
    password: xxxx

#配置两个redis实例,第一个用0号库,用于读取并监控数据变化;第二个用10号库,用来存放数据变化的信息
redis1:
  database:
    db1: 0
  host: 127.0.0.1
  port: 6379
  timeout: 10000
  pool:
    max-active: 100
    max-idle: 3
    min-idle: 0
    max-wait: -1

redis2:
  database:
    db2: 10
  host: xxx.xxx.xx.xx
  port: 6379
  timeout: 10000
  pool:
    max-active: 100
    max-idle: 3
    min-idle: 0
    max-wait: -1
  1. redis配置类
package com.siemens.gat.config;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.StringRedisTemplate;

import java.time.Duration;

/**
 * Created by SongShilun on 2020/12/14 10:12
 */
@Configuration
public class RedisConfig {
    @Value("${redis1.database.db1}")
    private int db1;

    @Value("${redis2.database.db2}")
    private int db2;

    @Value("${redis1.host}")
    private String host1;

    @Value("${redis1.port}")
    private int port1;

    @Value("${redis1.timeout}")
    private int timeout;

    @Value("${redis1.pool.max-active}")
    private int maxActive;

    @Value("${redis1.pool.max-idle}")
    private int maxIdle;

    @Value("${redis1.pool.min-idle}")
    private int minIdle;

    @Value("${redis1.pool.max-wait}")
    private int maxWait;


    @Value("${redis2.host}")
    private String host2;
    @Value("${redis2.port}")
    private int port2;

    @Bean
    public GenericObjectPoolConfig getPoolConfig(){
        // 配置redis连接池
        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        poolConfig.setMaxTotal(maxActive);
        poolConfig.setMaxIdle(maxIdle);
        poolConfig.setMinIdle(minIdle);
        poolConfig.setMaxWaitMillis(maxWait);
        return poolConfig;
    }

    @Bean(name = "redisTemplate1")
    public StringRedisTemplate getRedisTemplate1(){
        return getStringRedisTemplate(db1,host1,port1);
    }

    @Bean(name = "redisTemplate2")
    public StringRedisTemplate getRedisTemplate2(){
        return getStringRedisTemplate(db2,host2,port2);
    }

    private StringRedisTemplate getStringRedisTemplate(int database,String address,int portNum) {
        // 构建工厂对象
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
        config.setHostName(address);
        config.setPort(portNum);
        //config.setPassword(RedisPassword.of(password));
        LettucePoolingClientConfiguration clientConfig = LettucePoolingClientConfiguration.builder()
                .commandTimeout(Duration.ofSeconds(timeout))
                .poolConfig(getPoolConfig())
                .build();
        LettuceConnectionFactory factory = new LettuceConnectionFactory(config, clientConfig);
        // 设置使用的redis数据库
        factory.setDatabase(database);
        // 重新初始化工厂
        factory.afterPropertiesSet();
        return new StringRedisTemplate(factory);
    }
}

可以看出来,相比于连接一个redis实例的不同库,连接两个redis实例只多了application的一个配置信息,和对redis配置类的工厂化方法的小改动。一个redis默认有下标为0-15的16个库,连接一个实例的不同库和连接两个实例的相同库,以及连接两个实例的不同库,其原理都是相同的,只要做通一个功能,其余的功能可以基于原有的功能上进行修改。

SpringBoot+mysql+Redis整合增删改查操作 前言: 本文通过记录SpringBoot+springMVC+redis+mysql来实现web项目中增删改查的具体操作。 redis做缓存数据库,针对于频繁需要查询或者解决单点问题都会把数据存到redis来分担服务器压力。 阅读详情

相关推荐

告别OFDM卡顿:用MATLAB手把手仿真AFDM波形,搞定高铁、无人机通信的时变信道难题

本文详细介绍了如何使用MATLAB仿真AFDM波形,解决高铁和无人机通信中的时变信道难题。通过仿射变换技术,AFDM在多普勒频移严重的场景下表现优异,显著提升通信质量。文章包含参数配置、波形生成、性能对比等实战内容,适合通信工程师和研究人员参考。

weixin_27014595的博客 318

SpringBoot连接多个Redis或者Redis里的多个不同的库

SpringBoot连接多个Redis或者Redis里的多个不同的库

Mr_XiMu的博客 1万+

数据分析(二):学生成绩预测分析报告

表1 特征变量描述变量描述school学生的学校sex学生的性别age学生的年龄address学生的家庭住址类型famsize家庭规模Pstatus父母同居状况Medu母亲的教育Fedu父亲的教育Mjob母亲的工作Fjob父亲的工作reason选择学校的理由guardian学生监护人traveltime从家到学校的时间studytime每周学习时间failures过去的类失败次数schoolsup额外的教育支持famsup家庭教育支持。

m0_73963149的博客 4414

SpringBoot整合redis(StringRedisTemplate),操作一个redis服务器的多个库

SpringBoot整合redis(StringRedisTemplate),操作一个redis服务器的多个库

lixianhe的博客 2万+

Kisssoft软件在行星齿轮设计上的初试

行星齿轮传动与链传动相比较,具有质量小,体积小,承载能力强,传动比大,传动效率高等优点,但在行星齿轮传动种种优点下,不可避免的带来一些缺点,对其材料的要求过高,在追求传动比大而体积小的同时,其传动结构大大的复杂化,以及在制造和安装过程中较困难,对于行星齿轮传动设计来说,不仅应该了解其优点,而且应该在设计中,充分发挥其优点,且把其缺点降低到最低的限度。从而才能设计出性能优良的行星齿轮传动装置,为我们赛车提供更加强大的动力保证。 Kisssoft软件为我们行星齿轮传动设计提供了一体化方案,从设...

m0_69808569的博客 1万+

F5 Shape盾JSVMP核心检测点与无限并发Header生成实战(TikTok/航司)

本文深入剖析了F5 Shape盾结合JSVMP技术的核心风控机制,详细解读了其针对浏览器指纹、行为时序等多维度的检测逻辑。通过实战案例,分享了如何通过逆向分析、精准Hook关键检测点,并构建稳定、高并发的请求Header生成方案,以应对TikTok、航司等平台的高级反爬挑战。

weixin_29325007的博客 1010

Spring使用RedisTemplate的xml配置

1,spring-redis.xml <!-- redis连接池的配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="500" /> <property name="max...

一只小小鸟 1798

YOLOv8【第十二章:数据增强与数据工程篇·第10节】主动学习(Active Learning):如何挑选最有价值的样本进行标注!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 507

SpringBoot2.0实现多个Redis配置的RedisTemplate使用实例全解

SpringBoot2.0整合redis springboot的自动化配置。 首先,如果你采用maven来构建项目,那么在pom文件中添加如下依赖: 这里要注意版本问题,下面两个版本测试没有问题 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --&...

qq_30868737的博客 7199

【AI智能体】基于OpenCode 搭建Skills环境与项目实战开发详解

基于OpenCode 搭建Skills环境与项目实战开发详解

congge 8898

python全栈入门到实战【基础篇 03】入门实操:第一个Python程序 + PyCharm使用 + 输入输出全解析

本文是一篇Python入门教程,主要介绍PyCharm编辑器的安装配置和基础使用,以及Python输入输出语法的实操练习。文章分为四个部分:1)PyCharm的下载安装与基础配置;2)第一个Python程序"Hello World"的编写与运行;3)Python输入输出函数print()和input()的详细讲解;4)个人信息录入系统的实战案例。教程包含大量截图和动图演示,适合Python新手跟随操作,快速掌握编辑器使用和基础语法。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 4003

【springboot进阶】SpringBoot整合RedisTemplate配置多个redis库

SpringBoot整合RedisTemplate配置多个redis库,通过配置注入不同库的redis模板,便能灵活扩展,最后使用组件化的帮助类并对其进行操作。

1万+

电气论文实现:前推回代在IEEE33节点中的潮流计算实现(matlab,python)

本文首先介绍了前推回代的原理。然后基于IEEE33节点算例,分别用python和matlab运用前推回代进行了潮流计算。

总裁余(余登武)博客 8607

SpringBoot操作Redis

SpringBoot操作Redis

阿水的博客 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SpringBoot集成redis

今天,日月在这里教大家如何使用springBoot集成redis,说实话比较简单,网上也有大把的教程。先套用一下网上的简介。 定义 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value...

真的愿意去努力,人生最坏的结果,也不过是大器晚成。 25万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【SpringBoot】| SpringBoot 集成 Redis

【SpringBoot】| SpringBoot 集成 Redis

m0_61933976的博客 8821

springboot 同时连接多个redis

springboot项目同时连接多个reids

窦再兴的博客 9075

SpringBoot连接多个Redis或者Redis里的多个不同的库_springboot 连接多个redis

要想实现连接不同的Redis,只需要将对应的Redis地址写进配置里即可。// ================================ Map类型 =================================// =============================== List类型 =================================// ============================= 公共方法 ============================

2401_84264107的博客 2124

SpringBoot中连接服务器Redis需要配置操作

废话不多说直接干步骤 检查服务器端口(6379)是否打开 检查服务器防火墙是否开放6379端口 #执行下面代码 如果返回yes 就代表开启了 返回no 就代表没有 firewall-cmd --query-port=6379/tcp #如果上面返回no 执行下面的这个代码,开通端口 #如果是yes,可以不用执行略过 firewall-cmd --zone=public --add-port=6379/tcp --permanent #然后重启防火请 firewall-cmd --reload

qq_42135780的博客 2036

springboot redis连接不上_springboot项目连接Redis操作

springboot项目连接Redis操作基于缓存的数据库存储,C语言开发,支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,操作很是舒服,我们先来跑通Redis服务,并连上springboot项目首先需要下载Redis的服务器包GitHub下载地址https://github.com/tporadowski/redis/releases我们选择...

weixin_39878247的博客 2122

SpringBoot集成Redis和配置Redis做缓存

Redis介绍 Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求,直观的存储结构使得通过程序交互十分简单。 Redis数据库中所有数据都存储在内存中,由于内存的读写速度远快于硬盘,因此Redis在性能上对比其他基于硬盘存储的数据库有非常明显的优势,而且Redis提供了对持久化的支持,即可以将内存中的数据异步写入到硬盘中,且不影...

打破沉默的博客 1万+

在SpringBoot项目中配置Redis

SpringBoot的Redis配置

m0_63445035的博客 1万+

Springboot整合Redis

首先我们要知道Redis是什么:Redis一个NoSQL数据库,常用作缓存使用( cache ),用户访问应用,如果找数据的话会先访问redis,如果redis中有数据的话就直接返回发给用户,如果redis中没有的话我们再去查数据库,找到了数据之后一方面存到redis中,另一方面再反馈给用户,目的是说如果用户下次再访问类似的数据的话,redis中就有了。Redis如何启动:双击;客户端双击exit就退出了。

桂林电子科技大学 -芳 5042

SpringBoot 操作 Redis 数据

SpringBoot2.x【七】整合 Redis 入门 首先,Redis是什么? Redis是一个开源的,基于内存的键值数据存储,用作数据库,缓存和消息代理。在实现方面,Key-Value存储代表NoSQL空间中最大和最老的成员之一。Redis支持数据结构,如字符串,散列,列表,集和带范围查询的有序集。 在spring data redis的框架,可以很容易地编写,通过提供一个抽象的数据存储使用...

Java Pro 19万+

SpringBoot项目中使用redis

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、引入redis依赖二、配置application.properties三、编写配置类1、操作string2、操作list3、操作hash4、操作set5、操作zset完整代码总结 前言 简单介绍一下,springboot项目中如何使用redis。 一、引入redis依赖 <!-- redis依赖包 --> <dependency> <groupId>org.springframew.

qq_39176307的博客 6778
上一篇: redis数据RDB导出导入方式
下一篇: 相对路径在IDEA和Eclipse中使用的区别
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值