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

本文涉及的产品
云数据库 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
目录
相关文章
|
2天前
|
安全 Java 大数据
探索Java的奇妙世界:语言特性与实际应用
探索Java的奇妙世界:语言特性与实际应用
|
4天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
24 0
|
4天前
|
关系型数据库 MySQL 数据库
一台MySQL数据库启动多个实例
一台MySQL数据库启动多个实例
|
4天前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
18 0
|
4天前
|
Java
Java中的并发编程:理解和应用线程池
【4月更文挑战第23天】在现代的Java应用程序中,性能和资源的有效利用已经成为了一个重要的考量因素。并发编程是提高应用程序性能的关键手段之一,而线程池则是实现高效并发的重要工具。本文将深入探讨Java中的线程池,包括其基本原理、优势、以及如何在实际开发中有效地使用线程池。我们将通过实例和代码片段,帮助读者理解线程池的概念,并学习如何在Java应用中合理地使用线程池。
|
9天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
151 10
|
9天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
存储 NoSQL Redis
|
17天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
241 0
|
26天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
211 2