博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面向接口编程实现不改代码实现Redis单机/集群之间的切换
阅读量:7235 次
发布时间:2019-06-29

本文共 5799 字,大约阅读时间需要 19 分钟。

开发中一般使用Redis单机,线上使用Redis集群,因此需要实现单机和集群之间的灵活切换

pom配置:

redis.clients
jedis

Redis单机和集群之间的灵活切换的封装:

JedisClient.java 接口 

import java.util.List;public interface JedisClient {    String set(String key, String value);    String get(String key);    Boolean exists(String key);    Long expire(String key, int seconds);    Long ttl(String key);    Long incr(String key);    Long hset(String key, String field, String value);    String hget(String key, String field);    Long hdel(String key, String... field);    Boolean hexists(String key, String field);    List
hvals(String key); Long del(String key);}

分别实现JedisClient单机版本和集群版本:

JedisClientCluster.java  JedisClient集群版:

import java.util.List;import redis.clients.jedis.JedisCluster;public class JedisClientCluster implements JedisClient {        private JedisCluster jedisCluster;        public JedisCluster getJedisCluster() {        return jedisCluster;    }    public void setJedisCluster(JedisCluster jedisCluster) {        this.jedisCluster = jedisCluster;    }    @Override    public String set(String key, String value) {        return jedisCluster.set(key, value);    }    @Override    public String get(String key) {        return jedisCluster.get(key);    }    @Override    public Boolean exists(String key) {        return jedisCluster.exists(key);    }    @Override    public Long expire(String key, int seconds) {        return jedisCluster.expire(key, seconds);    }    @Override    public Long ttl(String key) {        return jedisCluster.ttl(key);    }    @Override    public Long incr(String key) {        return jedisCluster.incr(key);    }    @Override    public Long hset(String key, String field, String value) {        return jedisCluster.hset(key, field, value);    }    @Override    public String hget(String key, String field) {        return jedisCluster.hget(key, field);    }    @Override    public Long hdel(String key, String... field) {        return jedisCluster.hdel(key, field);    }    @Override    public Boolean hexists(String key, String field) {        return jedisCluster.hexists(key, field);    }    @Override    public List
hvals(String key) { return jedisCluster.hvals(key); } @Override public Long del(String key) { return jedisCluster.del(key); }}

JedisClientPool.java JedisClient单机版

import java.util.List;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;public class JedisClientPool implements JedisClient {        private JedisPool jedisPool;    public JedisPool getJedisPool() {        return jedisPool;    }    public void setJedisPool(JedisPool jedisPool) {        this.jedisPool = jedisPool;    }    @Override    public String set(String key, String value) {        Jedis jedis = jedisPool.getResource();        String result = jedis.set(key, value);        jedis.close();        return result;    }    @Override    public String get(String key) {        Jedis jedis = jedisPool.getResource();        String result = jedis.get(key);        jedis.close();        return result;    }    @Override    public Boolean exists(String key) {        Jedis jedis = jedisPool.getResource();        Boolean result = jedis.exists(key);        jedis.close();        return result;    }    @Override    public Long expire(String key, int seconds) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.expire(key, seconds);        jedis.close();        return result;    }    @Override    public Long ttl(String key) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.ttl(key);        jedis.close();        return result;    }    @Override    public Long incr(String key) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.incr(key);        jedis.close();        return result;    }    @Override    public Long hset(String key, String field, String value) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.hset(key, field, value);        jedis.close();        return result;    }    @Override    public String hget(String key, String field) {        Jedis jedis = jedisPool.getResource();        String result = jedis.hget(key, field);        jedis.close();        return result;    }    @Override    public Long hdel(String key, String... field) {        Jedis jedis = jedisPool.getResource();        Long result = jedis.hdel(key, field);        jedis.close();        return result;    }    @Override    public Boolean hexists(String key, String field) {        Jedis jedis = jedisPool.getResource();        Boolean result = jedis.hexists(key, field);        jedis.close();        return result;    }    @Override    public List
hvals(String key) { Jedis jedis = jedisPool.getResource(); List
result = jedis.hvals(key); jedis.close(); return result; } @Override public Long del(String key) { Jedis jedis = jedisPool.getResource(); Long result = jedis.del(key); jedis.close(); return result; }}

实际使用方法:

applicationContext-redis.xml

使用:

@Test    public void testJedisClient() throws Exception {        //初始化spring容器        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-redis.xml");        //从容器中获得JedisClient对象        JedisClient jedisClient = applicationContext.getBean(JedisClient.class);        jedisClient.set("mytest", "jedisClient");        String string = jedisClient.get("mytest");        System.out.println(string);                    }

 

转载地址:http://kymfm.baihongyu.com/

你可能感兴趣的文章
WPS2012交叉引用提示word比wps这种强烈的更新参考
查看>>
微信支付[v3]
查看>>
linux网络配置相关命令、虚拟网络接口eth0:0
查看>>
意义和公式的协方差
查看>>
64脚和小于64脚的STM32进行AD时注意,参照电源处理方法(转)
查看>>
对想读社会科学各个领域研究生朋友的建议
查看>>
mysql_use_result & mysql_store_result & MYSQLI_ASYNC
查看>>
进程调度
查看>>
Oracle job调用存储过程
查看>>
Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析 ....
查看>>
kettle转换和作业插件开发及调试
查看>>
基于FPGA的并行计算技术
查看>>
学习笔记 Android.mk 搜索自己主动
查看>>
jquery在元素上收购事件
查看>>
hdu 4884 TIANKENG’s rice shop(模拟)
查看>>
PC-网络教程之宽带小型组网方案
查看>>
java编程接口(5) ------ button和button组
查看>>
ActiveReport开发入门-列表的交互性
查看>>
第一pga 畸形消费分析
查看>>
float、double(浮点数)区别还有和decimal(定点数)的比较
查看>>