上一篇redis中,讲解了redis cluster集群,但是却没有涉及到客户端代码,这次就一起来看下如何通过jedis使用redis cluster。
在此之前,需要说一个坑,上一篇中,我们将cluster中每个节点的ip:port配置成了如127.0.0.1:7000这样的形式。
但是,由于集群内部存取时,需要确定key所在的slot,一旦不是在我们登录的节点上,就会有内部转发,如下:
127.0.0.1:7000> set a 10 -> Redirected to slot [15495] located at 127.0.0.1:7003 OK 127.0.0.1:7003> get c -> Redirected to slot [7365] located at 127.0.0.1:7001 "10" 127.0.0.1:7001>
可见,set之后我们的登录的redis地址成了127.0.0.1:7003,当我们进行远程操作时,便会发生"Connection refused"错误。所以,我们需要将节点配置成192.168.xx.xx:port这样的形式才行。
spring对于redis cluster的支持目前在spring-data-redis-1.7.0RC1中,不知道离发布还有多久,需要的朋友可以从spring-data-redis文档先用着。
为了代码方便,就不采用xml和properties文件了,首先添加jedis的jar:
// pom.xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency>
由于我们都用spring开发,那么便需要配置bean:
@Configuration public class RedisConfig { @Bean public JedisCluster jedisCluster (){ Set<HostAndPort> set = new HashSet<>(); set.add(new HostAndPort("192.168.0.21", 7001)); set.add(new HostAndPort("192.168.0.21", 7002)); set.add(new HostAndPort("192.168.0.21", 7003)); set.add(new HostAndPort("192.168.0.21", 7004)); JedisCluster jedisCluster = new JedisCluster(set); return jedisCluster; } }
我们并不需要配置这么多节点,1个就可以,这里是为了防止个别节点挂掉。
对于JedisCluster的bean,大家可以通过properties和xml文件配置,为了方便阅读,这里就不用了(⁄ ⁄•⁄ω⁄•⁄ ⁄)
以上,一个简单的jedis连接redis cluster客户端就完成了。
下面可以测试一下:
@Configuration @ComponentScan(basePackages = "config") // RedisConfig所在package public class RedisClusterTest { @Test public void testCluster (){ ApplicationContext ctx = new AnnotationConfigApplicationContext(RedisClusterTest.class); JedisCluster jedisCluster = ctx.getBean(JedisCluster.class); jedisCluster.set("redisCluster4Test", "2016-3-22"); String value = jedisCluster.get("redisCluster4Test"); System.out.println(value); } }
运行后输出 2016-3-22,至此就完成了客户端的基本要求。
关于jedis的更多操作,网上有很多,只要对redis的操作足够熟悉,通过方法名大家就能知道对应的操作。
另外,对于redis-trib.rb,它建立cluster时并没有为我们提供password的功能,所以,你的集群节点不能有password,因此使用的时候还需要考虑。
相关推荐
2. **RedisConnectionFactory**:Spring会使用这些配置创建`RedisConnectionFactory`,它是连接到Redis服务器的工厂类,可以配置为使用Jedis或Lettuce客户端。 3. **RedisTemplate**或`StringRedisTemplate`:基于`...
Redis 集群的高可用测试(含 Jedis 客户端的使用) Redis 集群是指将多个 Redis 节点组合成一个集群,以提高 Redis 的高可用性和性能。本文将介绍如何使用 Jedis 客户端来测试 Redis 集群的高可用性。 一、Jedis ...
在`redisCluster-demo`这个项目中,你可以期待找到一个使用Java实现的示例,展示如何配置和使用`JedisCluster`或者`Lettuce`来连接Redis Cluster,以及如何进行基本的数据操作。这个示例可以帮助初学者理解如何在...
3. `jfinal-rediscluster-plugin-by-shixiaotian-0.0.1.jar`:这应该是JFinal Redis Cluster插件的jar包,由开发者shixiaotian创建,版本为0.0.1,用于在JFinal项目中支持Redis集群。 4. `readme.txt`:通常这个文件...
在本文中,我们将深入探讨如何搭建Redis集群,以及如何在Java中使用Jedis客户端进行集群操作。 首先,让我们了解Redis集群的基本概念。Redis集群通过数据分片(Sharding)来分散数据,每个节点存储一部分数据。集群...
客户端连接Redis Cluster时,首先需要发现集群的节点信息,然后根据键的槽位选择合适的节点进行操作。如果操作的键不在当前节点,客户端会收到一个MOVED错误,提示正确的节点位置,客户端需要重试操作。 五、Java...
9. **客户端连接**:连接到Redis Cluster时,客户端需要支持Cluster模式,例如Jedis或RediStack等。 10. **监控与维护**:定期检查节点状态,使用`CLUSTER NODES`命令查看节点信息,确保没有孤立节点或无法达到的...
这个“RedisCluster.rar”压缩包很可能包含了一个Java项目的示例代码,用于演示如何使用Java客户端操作RedisCluster。 首先,RedisCluster的核心概念包括: 1. **节点(Nodes)**:RedisCluster由多个Redis实例...
项目中的 `redis-jedis` 可能是包含 Jedis 客户端使用示例的目录,`redis-lock` 可能是关于分布式锁实现的代码,而 `redis-boot-sentinel-cluster` 可能是配置和使用 Redis Sentinel 进行高可用集群的示例。...
* Jedis:Jedis 是 Java Redis 客户端的主要类,负责连接 Redis 服务器和执行 Redis 命令。 * JedisPool:JedisPool 是一个连接池类,负责管理与 Redis 服务器的连接。 * JedisCommands:JedisCommands 是一个命令...
本资料包含的是使用Java的jedis客户端操作Redis高可用集群的源码示例。通过这份资料,我们可以深入理解如何在Java应用中实现对Redis集群的高效且可靠的访问。 首先,让我们了解一下Redis集群的基本概念。Redis集群...
为了使应用程序能够连接到 Redis Cluster,需要配置客户端支持集群模式。大多数现代 Redis 客户端库(如 Jedis、StackExchange.Redis 等)都提供了集群支持。确保阅读对应客户端的文档以了解如何配置。 ### 6. 测试...
Java客户端库如JedisCluster或Lettuce提供了连接和操作Redis集群的API。 批量插入String类型数据时,通常使用`JedisCluster`类中的`mset`方法。这个方法允许一次性设置多个键值对,但需要注意的是,由于Redis集群的...
标题"jedis-2.9.0.jar和commons-pool2-2.6.0.jar下载(jedis连接redis数据库)"指的是两个Java库的下载信息,用于连接Redis数据库。其中,`jedis-2.9.0.jar`是Jedis的特定版本,它是Java开发人员用来操作Redis的...
3. **客户端连接**:客户端需支持Redis Cluster协议,如Jedis、StackExchange.Redis等,它们会自动处理槽映射和错误恢复。 **三、Redis Cluster优势** 1. **高可用性**:通过主从复制和槽动态迁移,Redis Cluster...
- 连接Redis:Jedis实例化时需要指定Redis服务器的IP地址和端口号,可以通过`Jedis jedis = new Jedis("localhost", 6379);`建立连接。 - 基本操作:包括设置键值对(`set(key, value)`)、获取键值(`get(key)`)...
3. 配置客户端:客户端需要支持Redis-Cluster,例如Jedis、StackExchange.Redis等。配置客户端连接时,需指定集群模式,并提供所有节点的地址。 四、运行和监控 1. 检查集群状态:使用`redis-cli -c -h node1:port ...
2. **Java客户端**:Java中常见的Redis客户端有Jedis、Lettuce和Redisson等。它们都提供了与Redis服务器通信的API,包括连接管理、命令执行、事务处理等功能。例如,Jedis是较早的Redis客户端,功能完备,而Lettuce...
许多流行的Redis客户端库如Jedis、redis-py等都提供了对Redis Cluster的支持。 七、最佳实践 1. 考虑使用哨兵(Sentinel)系统配合Redis Cluster,提供更高级别的故障检测和恢复策略。 2. 避免使用需要跨节点操作...