Redis【应用 01】Java实现动态切换写入不同Redis数据库的方法实例(动态切换Redis数据库)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis【应用 01】Java实现动态切换写入不同Redis数据库的方法实例(动态切换Redis数据库)

1.说明

项目中想要将一部分数据放入Redis的其他库内,需要动态进行数据库的切换。

2.代码实现

2.1 配置

# 独立的配置信息
jedis:
  database: 7
  host: 192.168.0.000
  port: 6379
  password:

2.2 代码实现及调用方法

// 工具类
@Component
public class JedisUtil {
    @Autowired
    private JedisConfig jedisConfig;
    // 管理单个Jedis对象【这里可以使用Map管理多个对象,有需求的小伙伴可以发挥一下】
    private Jedis jedis;
    public synchronized String setCache(String key, String value) {
        if (jedis == null) {
            String host = jedisConfig.getHost();
            int port = jedisConfig.getPort();
            int database = jedisConfig.getDatabase();
            // 初始化Redis客户端
            jedis = new Jedis(host, port);
            // 切换数据库
            jedis.select(database);
        }
        return jedis.set(key, value);
    }
}
// 代码调用
// 使用时类注入对象
@Autowired
private JedisUtil jedisUtil;
// 调用
jedisUtil.setCache(key, value);

2.3 升级版

// 管理多个Jedis对象
@Component
public class JedisManagerUtil {
    @Autowired
    private JedisConfig jedisConfig;
    /**
     * 统一管理Jedis对象
     */
    private Map<Integer, Jedis> jedisMap = new HashMap<>(16);
    /**
     * 写入数据
     *
     * @param key      redis的key
     * @param value    redis的value
     * @param database 写入的库index
     * @return 写入结果
     */
    public synchronized String setCache(String key, String value, int database) {
        if (!jedisMap.containsKey(database)) {
            String host = jedisConfig.getHost();
            int port = jedisConfig.getPort();
            Jedis jedis = new Jedis(host, port);
            jedis.select(database);
            jedisMap.put(database, jedis);
            return jedis.set(key, value);
        } else {
            Jedis jedis = jedisMap.get(database);
            return jedis.set(key, value);
        }
    }
}
// 测试调用
@SpringBootTest
class JedisApplicationTests {
    @Autowired
    private JedisManagerUtil jedisManagerUtil;
    @Test
    void jedisManagerUtilTest() {
        System.out.println(jedisManagerUtil.setCache("jedis", "ok", 3));
        System.out.println(jedisManagerUtil.setCache("jedis", "ok", 4));
        System.out.println(jedisManagerUtil.setCache("jedis", "ok", 5));
    }
}

调用结果:

看看数据库:

4.总结

这个工具还可以进行扩展,这里仅展示动态切换相关操作。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8天前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
33 5
|
20天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
33 3
|
20天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
37 2
|
20天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
41 2
|
20天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
19 1
|
11天前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
存储 消息中间件 缓存
面试疑难点解析——Java数据库开发(一)
阿里云再offer 5000人,数据库人才求贤若渴!7月9日 19:00,阿里云数据库事业部的两位技术大咖在线直招10多个岗位,想要进入阿里云吗?快来投递简历吧:https://developer.aliyun.com/special/offerday01
面试疑难点解析——Java数据库开发(一)
|
NoSQL Java 关系型数据库
面试疑难点解析——Java数据库开发(七)
本文介绍事务处理的四个特性:ACID,以及开发中可能见到的事务处理模式。
|
算法 Java 数据库连接
面试疑难点解析——Java数据库开发(九)
本文主要教大家区分悲观锁与乐观锁,帮助大家巩固Java开发性相关知识,提高面试通过率。
面试疑难点解析——Java数据库开发(九)
|
Java 数据库连接 数据库
面试疑难点解析——Java数据库开发(六)
本文通过案例向同学们阐明检测数据库更新的两个误区以及连接池实现原理。
面试疑难点解析——Java数据库开发(六)