Redis一通百通~P8架构师带你玩转Redis高性能缓存设计实战

前言

高并发十分考验架构师功底,它也是分布式架构设计中必须考虑的因素之一。要知道,光靠服务器堆是没有出路的。

想看看大牛是怎么面对高并发的?想知道BATJ大厂是怎么设计高可用架构的?这里有可参考的实践案例,干货满满,或许能对你有所启发。

Redis常用的数据类型

Redis的五种常用的数据类型分别是:String、Hash、List、Set和Sorted set

13465705-d952160356949314.png

Redis的使用场景

1.Counting(计数)
2.展示最近、最热、点击率最高、活跃度最高等等条件的top list
3.用户最近访问记录也是redis list的很好应用场景
4.通过list的lpop及lpush接口进行队列的写入和消费
5.Redis 的Lua的功能扩展实际给Redis带来了更多的应用场景,你可以编写若干command组合作为一个小型的非阻塞事务或者更新逻辑
6.Redis提供的主从数据同步功能,其实是对cache的一个强有力功能扩展

小结

如此多的应用无非离不开Redis的所有特性

揭开Redis的神秘面纱

Redis是一个开源(KEY-VALUE键值对),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。采用单进程单线程模型,并发能力强大,是当前互联网架构中主流的分布式缓存工具。

13465705-ee17801df41421fa.png

Redis高性能缓存架构设计

1.架构设计

由于redis是单点,项目中需要使用,必须自己实现分布式。基本架构图如下所示:

13372770-7aacc0dfc9062ec4.png

2.分布式实现

通过key做一致性哈希,实现key对应redis结点的分布。

一致性哈希的实现:

hash值计算:通过支持MD5与MurmurHash两种计算方式,默认是采用MurmurHash,高效的hash计算。

一致性的实现:通过java的TreeMap来模拟环状结构,实现均匀分布

3.client的选择

对于jedis修改的主要是分区模块的修改,使其支持了跟据BufferKey进行分区,跟据不同的redis结点信息,可以初始化不同的ShardInfo,同时也修改了JedisPool的底层实现,使其连接pool池支持跟据key,value的构造方法,跟据不同ShardInfos,创建不同的jedis连接客户端,达到分区的效果,供应用层调用

4.模块的说明

脏数据处理模块,处理失败执行的缓存操作。

屏蔽监控模块,对于jedis操作的异常监控,当某结点出现异常可控制redis结点的切除等操作。

整个分布式模块通过hornetq,来切除异常redis结点。对于新结点的增加,也可以通过reload方法实现增加。(此模块对于新增结点也可以很方便实现)

在这里分享一位阿里的架构师朋友他录制的【BAT常见Redis场景设计实战】专题视频,对于面试中的难点-Redis的高性能设计这块,是很好的补充。

视频内容如下:

1,微博关系设计实战;
2,微信朋友圈设计实战;
3,淘宝购物车设计实战;
4,热搜排名设计等.

如何获取免费架构学习资料?

资料获取方式:点击下方传送门

Java学习、面试;文档、视频资源免费获取

13465705-6003ae4a21f53cb6.png
13465705-5bf439ce18303939.png
13465705-dd374aad89f5c952.png
13465705-494767c3c363eb03.png
13465705-079f75e1251179fc.png
13465705-11ef4c411befa3de.png

由于篇幅原因,就不多做展示了,需要获取更全面的资料,或专题视频,可以点击下方传送门

Java学习、面试;文档、视频资源免费获取

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值