Redis怎么配置多个数据库


前言

redis 默认有 0-16 号数据库,一般我们操作redis时,用的是 0号数据库,但是有时我们的项目想同时操作多个数据库,又不想每次访问其它库数据时 select 切换数据库,这样太繁琐。

因此我们需要配置多个Jedis Client,但是jedis是容易阻塞,效率不太好,所以我这边采用了 Lettuce Client,它是 Reactive 的连接方式,效率比较高。但是怎么使用到 Lettuce Client,其实一般我们添加  spring-boot-starter-data-redis  依赖,通过RedisTemplate 去使用Redis的功能时,当版本很高的时候默认RedisTemplate底层用的就是通过Lettuce Client 去建立连接和操作数据。

一、添加pom 依赖

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

二、多数据源的配置和添加到spring容器中

下面我的截图使用了四个数据源,分别是1,2,3,4号库。

1)新建一个configuration 配置类

2)new RedisStandaloneConfiguration(host, port); 初始化一个Redis配置,并接下来选择好库号。

3)初始化一个 LettuceConnectionFactory 。

v3.4.0智睿报修管理系统 v3.4.0智睿报修管理系统

智睿报修管理系统定位行政企业,单位,机关加快网络无纸办公化,网络信息报修管理系统,系统支持城市区域模块管理,会员信息模块,报修种类,维修工人信息显示,达到快速准确到位,支持在线打印,数据导出,汇总数据,报修次数统计。本系统为免费版本,不收取任何费用,可直接使用。 功能模块: 权限设置 - 可设多个管理员,自由分配选项管理权限 数据备份 - 支持在线数据库备份及还原数据库 类别管理 - 支持

v3.4.0智睿报修管理系统 161 查看详情 v3.4.0智睿报修管理系统

4)实例化一个 RedisTemplate ,并设置键值序列化的方式,这里key和value都是字符串的,所以序列化器选择  StringRedisSerializer。

5)给 RedisTemplate 设置第三步创建的 LettuceConnectionFactory,并以@Bean注解注入到spring容器中,使用时直接通过方法名字在spring容器中查找,装配到引用它的实例中。

import io.lettuce.core.resource.ClientResources;
import io.lettuce.core.resource.DefaultClientResources;
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.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.util.ObjectUtils;
 
import j*a.time.Duration;
 
/**
* reactive redis
* @Author:wangqipeng
* @Date:14:38 2019-07-03
*/
 
@Configuration
public class RedisDatasourceConfiguration {
 
    @Value("${redis.isCleanRedisCache:false}")
    private String cleanRedisCache;
    @Value("${redis.host:127.0.0.1}")
    public String host;
    @Value("${redis.port:6379}")
    public Integer port;
    private String password;
 
    @Value("${redis.timeout:2000}")
    public Integer timeout;
    public Integer maxIdle = 16;
    public Integer minIdle = 5;
    public Integer maxTotal = 30;
 
 
    @Bean
    public RedisTemplate<String, String> stringRedisTemplate1() {
        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(host, port);
        configuration.setDatabase(1);
        if (!ObjectUtils.isEmpty(password)) {
            RedisPassword redisPassword = RedisPassword.of(password);
            configuration.setPassword(redisPassword);
        }
        return createRedisTemplate(creatFactory(configuration));
    }
 
    @Bean
    public RedisTemplate<String, String> stringRedisTemplate2() {
        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(host, port);
        configuration.setDatabase(2);
        if (!ObjectUtils.isEmpty(password)) {
            RedisPassword redisPassword = RedisPassword.of(password);
            configuration.setPassword(redisPassword);
        }
        return createRedisTemplate(creatFactory(configuration));
    }
    @Bean
    public RedisTemplate<String, String> stringRedisTemplate3() {
        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(host, port);
        configuration.setDatabase(3);
        if (!ObjectUtils.isEmpty(password)) {
            RedisPassword redisPassword = RedisPassword.of(password);
            configuration.setPassword(redisPassword);
        }
        return createRedisTemplate(creatFactory(configuration));
    }
    @Bean
    public RedisTemplate<String, String> stringRedisTemplate4() {
        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(host, port);
        configuration.setDatabase(4);
        if (!ObjectUtils.isEmpty(password)) {
            RedisPassword redisPassword = RedisPassword.of(password);
            configuration.setPassword(redisPassword);
        }
        return createRedisTemplate(creatFactory(configuration));
    }
 
    @Bean
    public RedisTemplate<String, String> stringRedisTemplate5() {
        RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(host, port);
        configuration.setDatabase(5);
        if (!ObjectUtils.isEmpty(password)) {
            RedisPassword redisPassword = RedisPassword.of(password);
            configuration.setPassword(redisPassword);
        }
        return createRedisTemplate(creatFactory(configuration));
    }
 
    private RedisTemplate<String, String> getSerializerRedisTemplate(){
        RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());
        return redisTemplate;
    }
 
    private RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, String> redisTemplate = getSerializerRedisTemplate();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
    private GenericObjectPoolConfig getGenericObjectPoolConfig(){
        GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
        genericObjectPoolConfig.setMaxTotal(maxTotal);
        genericObjectPoolConfig.setMinIdle(minIdle);
        genericObjectPoolConfig.setMaxIdle(maxIdle);
        genericObjectPoolConfig.setMaxWaitMillis(timeout);
        return genericObjectPoolConfig;
    }
 
    private LettuceConnectionFactory creatFactory(RedisStandaloneConfiguration configuration){
        LettucePoolingClientConfiguration.LettucePoolingClientConfigurationBuilder builder = LettucePoolingClientConfiguration.builder();
        builder.poolConfig(getGenericObjectPoolConfig());
 
//        LettuceClientConfiguration.LettuceClientConfigurationBuilder builder = LettuceClientConfiguration.builder();
//        builder.clientResources(clientResources());
//        builder.commandTimeout(Duration.ofSeconds(3000));
        LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(configuration, builder.build());
        connectionFactory.afterPropertiesSet();
        return connectionFactory;
    }
}

三、使用方式

Redis怎么配置多个数据库

这里引用是2号库,即上面通过@Bean 加载到spring容器中的。

以上就是Redis怎么配置多个数据库的详细内容,更多请关注其它相关文章!


# redis  # 开远网站建设团队  # 优化网站推广厂家  # 兖州市网站建设  # 微信营销公众号推广方案  # 站内seo优化推荐  # 相关文章  # 它是  # 较高  # 序列化  # 都是  # 的是  # 如何实现  # 网络带宽  # 管理系统  # 多个  # 数据库  # 建材seo技巧  # 在哪能搞到网站推广文章  # 天津广电网站优化耗材  # 徐州网站推广高手  # 苍南会计网站建设 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 谷歌浏览器官方镜像获取方法_谷歌浏览器网页版入口极速直达  C++ priority_queue怎么用_C++优先队列底层实现与自定义比较器  《淘票票》添加到苹果钱包教程  《洛克王国:世界》国家队搭配攻略  不吃碳水化合物是健康减肥的好办法吗  《猎聘》筛选猎头岗位方法  之了课堂app做题入口  Google Cloud Functions 时区处理指南:理解与最佳实践  《小黑盒》删除历史浏览方法  创建您的便携版VS Code:让配置随身携带  cad怎么隐藏指定的图层_cad隐藏或冻结图层方法  2025考研成绩查询时间入口分享  MongoDB聚合管道:高效统计列表中各项的文档数量  照片整理的黄金法则是怎样的? 理解“收集-筛选-归档-备份”四步流程  Google Drive API 认证:服务账户与OAuth 2.0的选择与实践  厨房地面防滑垫的油污怎么洗? 机洗和手洗防滑垫的注意事项  vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读  知音漫客官网首页入口_知音漫客热门漫画推荐  附近酒吧怎么找?  百度识图图像分析 百度识图识别平台  圆通快递官方入口不需要登录 在线查询入口快速查询  《万兴喵影》导出视频方法  PSD转AI文件的简单方法  《合金装备4》有望推出重制版!制作人发话了  NumPy 高性能技巧:基于多列条件查找最近邻行索引的向量化实现  263企业邮箱如何设置邮件转发功能  12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案  电脑开不了机怎么办 电脑无法开机的解决方法  《全民k歌》网页版最新登录入口一览  研招网官方网站正版登录网址_中国研究生招生信息网官网首页  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  Symfony路由参数转换器:实体存在性验证与错误处理策略  C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏  手机坏了微信聊天记录怎么导出来 新手机恢复聊天记录技巧  在PySimpleGUI中实现键盘按键绑定按钮事件  OTT月报 | 2025年9月智能电视大数据报告  J*aScript文本高亮功能优化:解决多词匹配错误与精确分割策略  虫虫漫画绿色安全入口_虫虫漫画绿色安全入口安全看漫画  CodeIgniter 3 中基于 MySQL 数据高效生成动态图表教程  《杖剑传说》食谱大全  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  mysql怎么查询数据_mysql基础查询语句使用教程  抖音如何进行蓝V认证 抖音企业号申请所需资料与流程  Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型  纯CSS实现滚动时动态时间轴线条颜色填充效果  歌词怎么展示在|直播|间视频号?有什么注意事项?  咸鱼怎么设置仅粉丝可见的动态_咸鱼动态粉丝可见设置方法  我的世界官方网址入口 我的世界游戏主页直达入口  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  抄漫画官网防走失地址_抄漫画最新漫画完整版阅读入口 

 2023-05-28

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.