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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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
目录
相关文章
|
4天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
31 17
|
2天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
14 4
|
2天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
15 2
|
6天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
11 3
|
6天前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
9 2
|
6天前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
8 1
|
18天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
74 6
|
15天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
50 3
Mysql(4)—数据库索引
|
18天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
57 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
4天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
18 4