千家信息网

Redis怎么配置多个数据库

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"Redis怎么配置多个数据库"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Redis怎么配置多个数据库"文章能帮助大家解决问题。前言redi
千家信息网最后更新 2025年01月19日Redis怎么配置多个数据库

这篇文章主要介绍"Redis怎么配置多个数据库"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"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 依赖

    org.springframework.boot    spring-boot-starter-data-redis    2.0.5.RELEASE

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

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

1)新建一个configuration 配置类

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

3)初始化一个 LettuceConnectionFactory 。

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 java.time.Duration; /*** reactive redis* @Author:wangqipeng* @Date:14:38 2019-07-03*/ @Configurationpublic 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 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 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 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 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 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 getSerializerRedisTemplate(){        RedisTemplate redisTemplate = new RedisTemplate<>();        redisTemplate.setKeySerializer(new StringRedisSerializer());        redisTemplate.setHashKeySerializer(new StringRedisSerializer());        redisTemplate.setHashValueSerializer(new StringRedisSerializer());        return redisTemplate;    }     private RedisTemplate createRedisTemplate(RedisConnectionFactory redisConnectionFactory) {        RedisTemplate 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;    }}

三、使用方式

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

关于"Redis怎么配置多个数据库"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

数据 数据库 配置 多个 容器 方式 知识 实例 序列 效率 数据源 方法 行业 选择 不同 实用 繁琐 接下来 内容 前言 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 汉中民宿软件开发 aig网络安全险思维导图 系统显示无法连接到远程服务器 宁波天科软件开发有限公司 网络安全的演变过程图片 新型智慧城市网络安全和数据安全 服务器公会 移动通信网络技术课后题 网络安全审计硬件多少钱 简述数据库系统的安全性措施 网络安全与执法的专业是什么 sql数据库怎么打代码 电脑服务器管理面板 数据库建表电话号码长度 查询数据库线程 对网络安全六个意识的看法 数据库王珊学生 华为被国际网络安全 每日科技速递互联网医院管理办法 数据库绑定是什么意思 新沂财务软件开发 简述数据库系统的安全性措施 无线网络技术应用结课论文 数据网络安全与信息化的发展 软件开发工期被拖延怎么发函 软件开发成果管理办法 正在连接itunes更新服务器 数据库的表中可以存图片吗 服务器 smp a股的互联网科技公司有哪些
0