jedis集群

Jedis cluster集群初始化源码剖析

我只是一个虾纸丫 提交于 2019-12-03 07:08:57
在项目中我们经常使用spring-data-redis来操作Redis,它封装了 Jedis 客户端来与Redis服务器进行各种命令操作。由于最近用到了Redis Cluster集群功能,这里就分析总结一下Jedis cluster集群初始化主要过程及源码。 环境 jar版本: spring-data-redis-1.8.4-RELEASE.jar、jedis-2.9.0.jar 测试环境: Redis 3.2.8,八个集群节点 applicationContext-redis-cluster.xml 配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <!--

Jedis cluster命令执行流程剖析

房东的猫 提交于 2019-12-01 22:49:15
在Redis Cluster集群模式下,由于key分布在各个节点上,会造成无法直接实现mget、sInter等功能。因此,无论我们使用什么客户端来操作Redis,都要考虑单一key命令操作、批量key命令操作和多节点命令操作的情况,以及效率问题。 在之前的文章中剖析了 Jedis cluster集群初始化源码 ,分析了源码之后可以得知,在Jedis中,使用的是JedisClusterConnection集群连接类来与Redis集群节点进行命令交互,它使用装饰模式对JedisCluster命令执行类进行了一层包装,同时对这三种不同类型的命令操作做了分类处理。 下面就看下JedisClusterConnection类中,如何实现这三种类型的key命令操作。在这里只列举一些典型的命令进行说明。本文基于spring-data-redis-1.8.4-RELEASE.jar和jedis-2.9.0.jar进行源码剖析,Redis版本为Redis 3.2.8。 单一key命令操作 对于单一命令操作,常用的就是get、set了。在JedisClusterConnection类中,get方法的实现如下: public byte[] get(byte[] key) { try { return cluster.get(key); } catch (Exception ex) { throw