Redis中的高级编程指南使用Jedis!

Redis是一个内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引。本文介绍了集群,发布和订阅等高级概念,使用Jedis Java库管理Redis的概念。

Redis中的高级编程指南使用Jedis!

Pipeling

Redis是一个TCP服务器,可以处理请求和响应模型。当需要执行连续的命令集时,在发送请求和接收响应的往返中将浪费更多时间。场景如大型物品列表,如果通过请求和响应模型发送,往返时间损失将更多。这可以避免使用流水线操作,我们可以将大量命令批处理到服务器,因此服务器批量处理命令并将响应排队并发送。

Jedis客户端创建管道,其中所有批处理命令集都排入其中。然后,sync将从1到10发送作业列表的批处理请求,每个作业都有5个taskid成员添加到服务器。同步将阻止客户端,直到服务器处理请求。然后可以检查jedis客户端以查找具有taskids的作业的列表。

 Pipeline pipeline = jedis.pipelined();
 for (int i=1; i<10; i++) {
 for (int j=1; j<5; j++) {
 pipeline.lpush("job" + i, "taskid" + j);
 }
 }
 pipeline.sync();
 for (int i=1; i<10; i++) {
 System.out.println(jedis.lrange("job"+i, 0, -1));
 }

消息经纪人

Redis是一个快速稳定的发布/订阅消息系统。发件人将消息发送到频道,订阅频道的订阅者可以接收消息。它是在两方之间共享消息的非阻塞方式。

Jedis客户端可以订阅该频道。需要提供消息处理程序以及订阅方法。它被动地听取频道的消息。

 final Jedis subJedis = jedisPool.getResource();
 subJedis.subscribe(new JedisPubSub() { 
 @Override
 public void onMessage(String channel, String message) {
 System.out.printf("Received msg: %s from channel %s", message, channel);
 }
 }, "channel1");
可以使用jedis客户端再次创建新连接以发布消息。它提供了发布方法,其中包含要在频道中发布的频道和消息。

 Jedis pubJedis = jedisPool.getResource();
 pubJedis.publish("channel1", "hello pubsub model");

Redis节点的聚类

Redis集群是redis的分布式实现,具有高达1000个节点的线性可扩展性,以及具有至少一个可到达从节点的每个主节点的最大可用性。集群节点与TCP总线和称为Redis集群总线的二进制协议连接。独立redis服务器支持的所有数据类型也可在群集中使用。它还标记了键标记到特定节点的标签。了解有关如何安装和设置Redis群集的详细信息

Redis服务器支持主从复制,其中master用于写入,slave用于读取。Master可以有很多从属,它是非阻塞异步复制。为了扩大写入,需要多个主设备和相应的从设备。redis中没有Peer-to-Peer类型的设置。

使用Redis群集

要连接到redis群集,必须将群集中的任一节点集创建为Set 或一个主节点。JedisCluster将集群节点设置为构造函数参数并创建集群客户端。

 Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
 jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7000));
 jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7001));
 jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7002));
 jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7003));
 jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7004));
 jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7005));
 JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes);
 /* will print all the cluster nodes */
System.out.println(jedisCluster.getClusterNodes());

创建集群客户端后,它可以直接用于存储和检索数据类型,因为它管理所有redis节点资源。

jedisCluster.set("blog-summary/advanced-redis", "Advanced programming in Redis using Jedis");
System.out.println(jedisCluster.get("blog-summary/advanced-redis"));

同样,redis中支持的所有数据类型也可以在redis群集中使用。可以使用JedisCluster中提供的相同类型的方法存储和检索数据类型。

整套架构面试题及系统化的架构师资料,热爱技术,喜欢程序员这一职业,有理想成为一名架构师,想面试跳槽涨薪,想提升自己的技术水平欢迎加入Java进阶架构交流:加入142019080。

直接点击链接加群。https://jq.qq.com/?_wv=1027&k=5lXBNZ7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值