//最近发现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);}

redis切换db方法相关推荐

  1. SpringBoot下Redis切换db

    我的springboot版本:1.5.6 redis下,数据库是由一个整数索引标识,而不是由一个数据库名称.默认情况下,一个客户端连接到数据库0. 一个redis实例,一般有默认有16个db,当然,也 ...

  2. java redis db0 db1_SpringBoot-技术专区-Redis同数据源动态切换db

    解决办法 新建一个RedisDBChangeUtil.java @Component public class RedisDBChangeUtil { @Autowired private Strin ...

  3. python中cmd如何切换盘_redis 中如何切换db

    redis 中如何切换db redis数据库个数是可以配置的,默认为16个 如上图 我们如何切换呢? 我在redis客户端查询如下 通过用select N 你想要的数据库 就能切到对应的数据库去了 每 ...

  4. 关于redis的db的使用几号db的问题

    关于redis的db的使用,所有数据都存在0号db中,减少业务切换db的消耗. 所有业务通过业务+key来区分,其他db可以用来做测试.备份等做隔离作用

  5. redis怎么连接mysql数据库_Golang连接Redis数据库的方法

    Golang连接Redis数据库 golang连接数据库,这里博主推荐使用go-redis这个库,理由很简单(连接数据库的操作类似在数据库里面输入命令) go-redis的安装方式 go get -v ...

  6. python 交互redis 的ZADD方法异常: AttributeError: ‘int‘ object has no attribute ‘items‘

    2019.8.15更新 代理池异常的原因,是因为在db.py中zadd方法没有修改完全. def max(self, proxy):"""将代理设置为MAX_SCORE: ...

  7. Redis[1]-RedisDesktopManager连接不上redis的解决方法

    RedisDesktopManager连接不上redis的解决方法 RedisDesktopManager是一款连接redis数据库的客户端. 当连接不上redis的时候,解决方案: 第一步:在自己的 ...

  8. Redis 缓存问题(Redis 与 DB 更新一致性问题、缓存击穿、缓存穿透、缓存雪崩)

    Redis 与 DB 更新一致性问题 缓存更新策略 1. 内存淘汰 说明:不用自己维护,利用 Redis 的内存淘汰机制,当内存不足时自动淘汰部分数据,下次查询时更新缓存 一致性:差 维护成本:无 2 ...

  9. Redis与DB数据同步问题

    2019独角兽企业重金招聘Python工程师标准>>> Redis与DB数据同步问题 https://www.jianshu.com/p/e8b36ef79c93 Redis缓存数据 ...

最新文章

  1. 简单解决XP共享连接数10限制
  2. mysql8.0导出带数据的库表_MySQL8.0数据库导出与备份
  3. 如何使用python批量下载-用Python调用迅雷实现后台批量下载
  4. 【计算机类】大学生计算机专业常用工具汇总
  5. 保存点云数据_PCL入门系列三——PCL进行数据读写
  6. linux epoll 开发指南-【ffrpc源码解析】
  7. Hibernate中封装session(静态单例模式)
  8. 单片机蜂鸣器唱歌c语言程序,STC89C52单片机蜂鸣器唱歌实验
  9. 【好玩的小demo】微信QQ聊天数据统计分析
  10. 小程序分包大小超过限制
  11. 如何刷访问量 的详细介绍
  12. 记录每天背的单词,准备考研。(2月21日)
  13. Jquery监听input回车事件
  14. powerpoint和word内使用latex编辑公式
  15. Gif录制神器GifCam
  16. RationalDMIS 7.0量块程序(力合)
  17. mysql 13位时间戳转时间戳_时间戳换算(13位时间戳转换工具 在线)
  18. 抖音将来会做电商小程序
  19. EXCEL中将数字日期格式改为日期格式
  20. audio 应用-Python 分析工具

热门文章

  1. 国产ETL etl-engine 星光不问赶路人 时我不待
  2. 孤立汉语数字语音识别系统
  3. Unity3D笔记十八 GL图像库
  4. FPGA接口-PMOD,FMC与SYZYGY
  5. python爬虫实现boss直聘自动化强制投简历
  6. 在经济寒冬的乱七八糟的瞎说
  7. failed to create network error response from daemon filed to setup ip tables问题
  8. MySQL数据库多表查询练习题
  9. 需求文档怎么写?这里有一套思维框架
  10. Java 虚拟机(JVM)原理介绍