Redis 为了提高效率和数据备份,提供了主从复制。在主从复制的中,数据库分为两类,一类是主数据库(master),另一类是从数据(slave)。主数据可以进行读写操作,当写操做导致数据变化时自动将数据同步给从数据库。从数据库一般是只读的,并接收主数据同步过来的数据。
下面将介绍怎样通过 jedis 来连接到主从复制的 Redis 服务。
注意:如何搭建 Redis 主从服务架构,请参考“Redis 主从复制”。
该实例将演示 Jedis 怎样连接到一主一从,代码如下:
// 创建主库对象 Jedis master = new Jedis("127.0.0.1", 6379); // 创建从库对象 Jedis slave = new Jedis("127.0.0.1", 6378); // 将 6378 端口的 Redis 设置为 6379 端口 Redis 的从库 slave.slaveof("127.0.0.1", 6379); // 写入数据到主库 Master master.set("title", "www.hxstrive.com"); // 从读库读取数据 String result = slave.get("title"); System.out.println("从库读取的值=" + result);
上面代码中,直接通过创建 Jedis 的对象来建立到 Redis 的连接,然后通过 Jedis 的 slaveof() 方法将某个 Redis 设置为另一个 Redis 的从 Redis。
该实例将演示 Jedis 连接到一主多从,代码如下:
// 创建主库对象 Jedis master = new Jedis("127.0.0.1", 6379); // 创建从库对象 Jedis slave1 = new Jedis("127.0.0.1", 6378); // 将 6378 端口的 Redis 设置为 6379 端口 Redis 的从库 slave1.slaveof("127.0.0.1", 6379); // 从库2 Jedis slave2 = new Jedis("127.0.0.1", 6377); slave2.slaveof("127.0.0.1", 6379); // 写入数据到主库 Master master.set("title", "www.hxstrive.com"); // 从读库读取数据 String result = slave1.get("title"); System.out.println("从库1读取的值=" + result); result = slave2.get("title"); System.out.println("从库2读取的值=" + result);
上面代码中,创建 Jedis 的方式和一主一从一样,两个 Slave 都是使用 Jedis 的 slaveof() 方法来将自己设置为另一个 Redis 的从 Redis。