redis切换db方法

article/2025/11/11 7:28:48

//最近发现redis 数据都是默认存在db0的 看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开 后面自己总结了三种方法给大家分享下 有什么不足的地方大家也可以指出来哦

提供了三种方式 切换db的方法 

1- 第一种方式最简单 先看看redis 的yml 文件的配置 这个是单机的配配置

spring:thymeleaf:cache: falseredis:#REDIS 数据库索引(默认为0)database: 0#redis服务地址host: 127.0.0.1#redis服务连接端口port: 6379#redis密码(没有密码默认为空)password:#连接池最大连接数(使用负值表示没有限制)jedis:pool:max-active: 8lettuce:pool:#连接池最大堵塞等待时间(使用负值表示没有限制)max-wait: -1#连接池最大空闲连接max-idle: 8#连接池中的最小空闲连接min-idle: 0#连接超时时间(毫秒)timeout: 5000

第二步 我们用最简单的方法实现切库

    /*** 添加字符串** @param key*/@RequestMapping("/ha")@ResponseBodypublic void demo02(String key) {//Redis服务Jedis jedis = new  Jedis();//切库表示你要存的db几jedis.select(10);//写进数据jedis.set("K1", key);System.out.println(key);}

 2- 现在介绍第二种方式切换的方式

2-1 :先配置yml文件的信息@value 调用的方法 

redis:#REDIS 数据库索引(默认为0)database: 0#redis服务地址host: 127.0.0.1#redis服务连接端口port: 6379#redis密码(没有密码默认为空)password:#连接池最大连接数(使用负值表示没有限制)#连接池最大堵塞等待时间(使用负值表示没有限制)maxWait: -1#连接池最大空闲连接maxIdle: 8#连接池中的最小空闲连接minIdle: 0#连接超时时间(毫秒)timeout: 5000#redis切库默认0默认第一个值 表示现在只能切换db0和db1如果想切换更多的可以在逗号后面多添加几个值dbs: 0,1

2-2:我们看下配置 容器下的配置

package com.lwq.demo.config;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Component;
import redis.clients.jedis.JedisPoolConfig;import javax.annotation.PostConstruct;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
@Slf4j
public class redisDbConfig {@Value("${redis.host}")private String hostName;@Value("${redis.port}")private int port;@Value("${redis.password}")private String passWord;@Value("${redis.maxIdle}")private int maxIdl;@Value("${redis.minIdle}")private int minIdl;@Value("${redis.timeout}")private int timeout;private int defaultDb;@Value("${redis.dbs}")private List<Integer> dbs;public static Map<Integer, RedisTemplate<Serializable, Object>> redisTemplateMap = new HashMap<>();/*** 只加载一次的服务器* @throws Exception*/@PostConstructpublic void initRedisTemp() throws Exception {log.info("###### START 初始化 Redis 连接池 START ######");defaultDb = dbs.get(0);for (Integer db : dbs) {log.info("###### 正在加载Redis-db-" + db+ " ######");redisTemplateMap.put(db, redisTemplateObject(db));}log.info("###### END 初始化 Redis 连接池 END ######");}private RedisTemplate<Serializable, Object> redisTemplateObject(Integer db) {RedisTemplate<Serializable, Object> redisTemplateObject = new RedisTemplate<Serializable, Object>();redisTemplateObject.setConnectionFactory(redisConnectionFactory(jedisPoolConfig(),db));setSerializer(redisTemplateObject);redisTemplateObject.afterPropertiesSet();return redisTemplateObject;}private void setSerializer(RedisTemplate<Serializable, Object> template) {template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());}public RedisTemplate<Serializable, Object> getRedisTemplate(int db){return redisTemplateMap.get(db);}public RedisTemplate<Serializable, Object> getRedisTemplate(){return redisTemplateMap.get(defaultDb);}/*** 连接池配置* @return*/private JedisPoolConfig jedisPoolConfig() {JedisPoolConfig poolConfig = new JedisPoolConfig();// 最大连接数poolConfig.setMaxIdle(maxIdl);// 最小空闲连接数poolConfig.setMinIdle(minIdl);poolConfig.setTestOnBorrow(true);poolConfig.setTestOnReturn(true);poolConfig.setTestWhileIdle(true);poolConfig.setNumTestsPerEvictionRun(10);poolConfig.setTimeBetweenEvictionRunsMillis(60000);// 当池内没有可用的连接时,最大等待时间poolConfig.setMaxWaitMillis(10000);// ------其他属性根据需要自行添加-------------return poolConfig;}/*** jedis连接工厂** @param jedisPoolConfig* @return*/public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPoolConfig, int db) {// 单机版jedisRedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();// 设置redis服务器的host或者ip地址redisStandaloneConfiguration.setHostName(hostName);// 设置默认使用的数据库redisStandaloneConfiguration.setDatabase(db);// 设置密码redisStandaloneConfiguration.setPassword(RedisPassword.of(passWord));// 设置redis的服务的端口号redisStandaloneConfiguration.setPort(port);// 获得默认的连接池构造器(怎么设计的,为什么不抽象出单独类,供用户使用呢)JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jpcb = (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder) JedisClientConfiguration.builder();// 指定jedisPoolConifig来修改默认的连接池构造器(真麻烦,滥用设计模式!)jpcb.poolConfig(jedisPoolConfig);// 通过构造器来构造jedis客户端配置JedisClientConfiguration jedisClientConfiguration = jpcb.build();// 单机配置 + 客户端配置 = jedis连接工厂return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);}}

2-3:测试的方法:

    //redis 数据结构配置@Autowiredprivate redisDbConfig redisDb;/*** 添加字符串** @param key*/@GetMapping("/hi")@ResponseBodypublic void demo03(String key) {//配置结构 表示你想配置切换的db几 getRedisTemplate(1) 如果不写默认为db0redisDb.getRedisTemplate(1).opsForValue().set("k2",key);System.out.println(key);}

 

 //此信息部分参考这位大佬  https://ld246.com/article/1594863004207

//3-现在我们介绍第三种方式 也是最简单 最直接的方法

// 还有直接用yml 文件切换 database 1  就这样直接切换db1了

spring:thymeleaf:cache: falseredis:#REDIS 数据库索引(默认为0) 分片想存在那里就存在那里 0-15database: 1#redis服务地址host: 127.0.0.1#redis服务连接端口port: 6379#redis密码(没有密码默认为空)password:#连接池最大连接数(使用负值表示没有限制)jedis:pool:max-active: 8lettuce:pool:#连接池最大堵塞等待时间(使用负值表示没有限制)max-wait: -1#连接池最大空闲连接max-idle: 8#连接池中的最小空闲连接min-idle: 0#连接超时时间(毫秒)timeout: 5000

 //我们来演示一下

    @Autowiredprivate StringRedisTemplate stringRedisTemplate;/*** 添加字符串** @param key*/@RequestMapping("/haha")@ResponseBodypublic void demo01(String key) {stringRedisTemplate.opsForValue().set("K3", key);System.out.println(key);}

 

 


http://chatgpt.dhexx.cn/article/gxngibQ9.shtml

相关文章

Redis基本介绍

文章目录 1.Redis简介2.Redis应用场景3.Redis单线程模型4.Redis常用命令5.Redis数据结构6.SpringBoot整合Redis框架 参考蚂蚁课堂 1.Redis简介 Redis属于No-sql数据库类似于MongoDB&#xff0c;是一个完全开源免费的一个高性能的key-value数据库。它是基于内存的数据库&#…

DB2的HADR的搭建

整理这篇文档主要记录复制搭建过程中遇到的问题&#xff0c;被其中一个搞了好久才突然一下子明白过来。。。。 1.备份恢复的时候报错&#xff1a;SQL0970N The system attempted to write to a read-only file. SQLSTATE55009 2.SQL1768N Unable to start HADR. Reason cod…

gaussDB安装

1、用winSCP连接弹性服务器&#xff0c;将windows下的gaussDB安装包复制到linux下 2、将GaussDB安装包从root目录下复制一份到/gs目录下 3、在当前目录解压缩 4、打开配置文件 vi /etc/profile 添加如下命令 ulimit -c unlimited 5、打开系统配置文件 vi /etc/sysctl.c…

redis 如何切换db

文章来源&#xff1a;http://www.ttlsa.com/redis/redis-database/ redis默认有db0~db15之多。 一台服务器上都快开启200个redis实例了&#xff0c;看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开。 那么&#xff0c;redis有没有什么方法使不同…

PostgreSQL安装+TimescaleDB安装(Windows)

PostgreSQL安装TimescaleDB安装&#xff08;Windows&#xff09; 一、安装环境1.系统2.PostgreSQL安装包3.TimescaleDB安装包4.Visual Studio Community 2019 二、PostgreSQL安装1.安装PostgreSQL2.配置环境变量3.验证是否安装成功 三、TimescaleDB安装1.安装TimescaleDB2.验证…

springboot连接redis并动态切换database(db0到db15)

redis redis db0到db15springboot连接redis添加配置文件application.properties测试是否连接成功redis动态切换database redis db0到db15 可以理解为数据库表这是redis默认提供的16个表 我们可以把不同的数据存在不同的db上 取得时候可以在不同的db拿到不同类型数据 springb…

各种接口

一、DB9与DB25 九针串口 串口是计算机主要的外部接口之一&#xff0c;通过九针串口连接的设备有很多&#xff0c;像串口鼠标、MODEM、手写板等等&#xff0c;九针串口的示意图如上&#xff0c;其各脚的定义如下&#xff1a; 1 DCD 载波检测 2 RXD 接收数据 3 TXD 发送数据…

Altium designer--DB接口DB9/DB15/DB25/DB37/DB50

使用Altium designer软件绘制DB接口封装图如下所示&#xff1a; 具体获取方式见文末链接 &#xff08;1&#xff09;DB9针 &#xff08;2&#xff09;DB15针 &#xff08;3&#xff09;DB25针 &#xff08;4&#xff09;DB37针 &#xff08;5&#xff09;DB50针 AD封装库链接…

常用接口定义02——DB与DR系列端口

&#xfeff;&#xfeff; DB系列与DR系列端子是设计PCB时经常会遇到的&#xff0c;直到前两天才专门找时间总结了一下两个系列接口的区别并从淘宝上找到实物图与之对应。 DB系列&#xff1a; 1.DB9 2.DB15&#xff08;三排&#xff09; 母头尺寸图&#xff1a; 3.DB15&#x…

pixhawk罗盘校准进度条没有反应

可能还是得把GPS加上才能校准罗盘。 https://blog.csdn.net/LockeDr/article/details/89320593 https://wenku.baidu.com/view/1b5c56114a2fb4daa58da0116c175f0e7cd11968.html

电子罗盘详解之地磁场和航向角

地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 高斯,其大小和方向随地点(甚至随时间) 而异。地球本身具有磁性,所以地球和近地空间之间存在着磁场,叫做地磁场。地磁场的强度为0. 3 至0. 6 高斯,其大小和方向随地点(甚至随时间) 而…

倾斜补偿的电子罗盘(2):磁传感器的误差来源、硬磁干扰的校准(3个参数)、实验验证

电子罗盘(2)&#xff1a;磁传感器的误差来源、硬磁干扰的校准&#xff08;3个参数&#xff09;、实验验证 文章目录 理想情况误差来源内部外部误差模型 硬磁干扰的校准&#xff08;3个参数&#xff09;使用的模型最小二乘法 实测结果总结代码和资料MATLAB代码参考资料样机 理想…

倾斜补偿的电子罗盘(3):椭球拟合,磁传感器软磁干扰和硬磁干扰的9参数校准

倾斜补偿的电子罗盘(3)&#xff1a;椭球拟合&#xff0c;磁传感器软磁干扰和硬磁干扰的9参数校准 背景 之前提到磁传感器的误差来源&#xff0c;并介绍了消除硬磁干扰的3参数校准。倾斜补偿的电子罗盘(2)&#xff1a;磁传感器的误差来源、硬磁干扰的校准&#xff08;3个参数&…

地磁传感器_磁感应计_电子罗盘(compass)原理

ref: http://www.360doc.com/content/14/0724/23/9152906_396847920.shtml https://wenku.baidu.com/view/8fcb6f94284ac850ad024244.html 原文链接&#xff1a;https://blog.csdn.net/weixin_43614541/article/details/104818380 1.利用旋转矩阵推导倾斜补偿公式 电子罗盘的…

电子罗盘全详解

目前, 导航系统在汽车、航海、航空等领域已经得到广泛的应用。电子罗盘是导航系统不可缺少的重要组成部分。 GPS导航定位的缺陷 1、虽然GPS在导航、定位、测速、定向方面有着广泛的应用&#xff0c;但由于其信号常被地形、地物遮挡&#xff0c;导致精度大大降低,其信号可用性仅…

电子罗盘详解之原理和特点

电子罗盘的原理 三维电子罗盘由三维磁阻传感器、双轴倾角传感器和MCU构成。 三维磁阻传感器用来测量地球磁场,倾角传感器是在磁力仪非水平状态时进行补偿;MCU处理磁力仪和倾角传感器的信号以及数据输出和软铁、硬铁补偿。 三维磁阻传感器采用三个互相垂直的磁阻传感器,每个…

大疆无人机飞行感知技术中各传感器作用

无人机的飞行感知技术主要有两个用途&#xff1a; 其一是提供给飞行控制系统&#xff0c;由于飞行控制系统的主要功能是控制飞机达到期望姿态和空间位置&#xff0c;所以这部分的感知技术主要测量飞机运动状态相关的物理量&#xff0c;涉及的模块包括陀螺仪、加速度计、磁罗盘、…

看完这个,让你分分钟搞定罗盘与加计校准!

看完这个&#xff0c;让你分分钟搞定罗盘与加计校准&#xff01; 罗盘和加计的校准是日常开发中最基础的工作&#xff0c;特邀Echo老师对罗盘和加速度计校准的工程方法进行总结&#xff0c;为小伙伴你们解惑&#xff0c;是有此文。 作者信息 Echo&#xff0c;本名邹佳池&…

android 磁场传感器 罗盘,Android开发获取重力加速度和磁场强度的方法

本文实例讲述了Android开发获取重力加速度和磁场强度的方法。分享给大家供大家参考,具体如下: Android获取重力加速度和磁场强度主要依靠: Sensor.getRotationMatrix (float[] R, float[] I, float[] gravity, float[] geomagnetic) 输入数据: gravity为重力传感器测得的重…

一文读懂电子罗盘的原理、校准和应用

1 概述及应用 基本介绍 电子罗盘&#xff0c;也叫数字指南针&#xff0c;是利用地磁场来定北极的一种方法&#xff0c;作为导航仪器或姿态传感器已被广泛应用。古代称为罗经&#xff0c;现代利用先进加工工艺生产的磁阻传感器为罗盘的数字化提供了有力的帮助。现在一般由用磁阻…