Redis一通百通~P8架构师带你玩转Redis高性能缓存设计实战
前言
高并发十分考验架构师功底,它也是分布式架构设计中必须考虑的因素之一。要知道,光靠服务器堆是没有出路的。
想看看大牛是怎么面对高并发的?想知道BATJ大厂是怎么设计高可用架构的?这里有可参考的实践案例,干货满满,或许能对你有所启发。
Redis常用的数据类型
Redis的五种常用的数据类型分别是:String、Hash、List、Set和Sorted set
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键值对),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。采用单进程单线程模型,并发能力强大,是当前互联网架构中主流的分布式缓存工具。
Redis高性能缓存架构设计
1.架构设计
由于redis是单点,项目中需要使用,必须自己实现分布式。基本架构图如下所示:
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学习、面试;文档、视频资源免费获取
由于篇幅原因,就不多做展示了,需要获取更全面的资料,或专题视频,可以点击下方传送门
Java学习、面试;文档、视频资源免费获取
Redis一通百通~P8架构师带你玩转Redis高性能缓存设计实战相关推荐
- 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景
Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用 ...
- 阿里P8架构师谈:数据库、JVM、缓存、SQL等性能调优方法和原则
编辑 性能优化基本是BAT等一线互联网公司程序员必备的技能,以下为大家完整揭晓性能完整的优化方案和方法:包含web网站调优.数据库.JVM调优.架构调优等方案. 第一:Web网站调优 1.尽可能减少H ...
- 架构师带你玩转分布式锁
大多数互联网系统都是分布式部署的,分布式部署确实能带来性能和效率上的提升,但为此,我们就需要多解决一个分布式环境下,数据一致性的问题. 当某个资源在多系统之间,具有共享性的时候,为了保证大家访问这个资 ...
- 阿里P8架构师20年经验总结成微服务设计企业架构转型之道笔记
前言 本文涉及两个方面的知识体系,即企业架构知识体系和软件架构知识体系. 企业架构和软件架构虽然都与IT相关,但其知识体系是完全不同的两个领域.一般而言,搞企业架构的人士不明白软件架构的细节和实现,而 ...
- 阿里云王牌架构师杨曦:也谈系统缓存设计误区及高阶使用技巧
阿里云高级解决方案架构师 杨旭 世界最大混合云的总架构师,4年前,开始作为双11阿里云技术负责人,负责搭建全球最大的混合云结构,把 "双11"的电商业务和技术场景在阿里云上实现,并 ...
- 阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略
常见性能优化策略分类 1.代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视.很多技术人员拿到一个性能优化的需求以后,言必称缓存.异步.JVM等.实际上,第一步就应该是分析相关的代码, ...
- 阿里P8架构师谈:流量高峰时期的性能瓶颈有哪些、以及如何来解决
在高并发大量用户的场景,系统一般会面临如下三个挑战: 1. 日益增长的用户数量 2. 日渐复杂的业务 3. 急剧膨胀的数据 这些挑战对于性能优化而言表现为:在保持和降低系统TP95响应时间(指的是将一 ...
- 阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别
什么是RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC使 ...
- 阿里P8架构师谈:Web前端、应用服务器、数据库SQL等性能优化总结
web前端性能优化 Web前端指网站业务逻辑之前的部分,包括: 1.浏览器加载 2.网站视图模型 3.图片服务 4.CDN服务等 主要优化手段有优化浏览器访问,使用反向代理,CDN等. 1.浏览器访问 ...
最新文章
- GitHub的MySQL高可用性实践
- python建立数据库并搜索_如何建立一个简单的数据库,可供人在网络上进行搜索?...
- 【摩天好课推荐】传统企业数字化转型的困惑、思考与实践
- CCF OJ 1113-括号匹配[栈]
- swagger 修改dto注解_Web服务开发:Spring集成Swagger,3步自动生成API文档
- Python是什么?有那些用途?
- centos哪个版本好用_Ubuntu VS CentOS,谁才是更好的 Linux 版本?
- 递归 dfs 记忆化搜索 动态规划
- 设置DIV最小高度以及高度自适应随着内容的变化而变化
- python中33个保留字的含义_Python的保留字。这是什么意思?
- 彻底删除MySQL教程
- 三菱Q协议PLC TCP/IP通讯协议解析简述
- NSIS:在线下载并安装程序
- MySQL索引常见面试题(2022版)
- Windows Server 2016 路由和远程访问
- 计蒜客:Adjoin the Networks
- python与ai的关系_Python与人工智能的关系原来是这样的...
- uoj 30 tourists
- 【原创】Moon在2005的辉煌
- Android Vendor Test Suite (VTS) 的概念、作用及测试方法