Redis 缓存架构
文章平均质量分 53
Redis
^果然好^
这个作者很懒,什么都没留下…
展开
-
传统的Java实现redis乐观锁实现高并发秒杀
在限量秒杀抢购的场景,一定会遇到抢购成功数超过限量的问题和高并发的情况影响系统性能。土方法如下:1、虽然能用数据库的锁避免,超过限量的问题。但是在大并发的情况下,大大影响数据库性能2、为了避免并发操作数据库,我们可以使用队列来限制,但是并发量会让队列内存瞬间升高3、我们又可以用悲观锁来实现,但是这样会造成用户等待,响应慢体验不好因此我们可以利用redis来实现乐观锁:1、利用redis的watch功能,监控这个redisKey的状态值2、获取redisKey的值3、创建redis事务原创 2021-07-01 21:52:13 · 1074 阅读 · 0 评论 -
Redis和Lua的原子性实现抢红包
前言我们一定会在项目中遇到过这种场景:一段代码中,redis进行多次取值存值,虽然单个redis操作具有原子性,但是redis组合操作就不能保证整体的原子性了,这时候我们可以通过lua脚本来实现redis组合操作的原子性。Lua脚本能够保证redis所有操作的原子性。我们可以看一下Redis官方文档对Lua脚本原子性的解释。Atomicity of scriptsRedis uses the same Lua interpreter to run all the commands. Als原创 2021-05-14 19:35:48 · 217 阅读 · 0 评论 -
案例-使用Redis搭建电商秒杀系统
参考:https://help.aliyun.com/document_detail/63920.html原创 2021-05-27 20:45:04 · 166 阅读 · 0 评论 -
商品详情页系统架构-笔记12 - 商品详情页整体架构组成+前端介绍
1、商品详情页整体架构组成动态渲染系统将页面中静的数据,直接在变更的时候推送到缓存,然后每次请求页面动态渲染新数据商品详情页系统(负责静的部分):被动接收数据,存储redis,nginx+lua动态渲染商品详情页动态服务系统(对外提供数据接口)提供各种数据接口动态调用依赖服务的接口,产生数据并且返回响应从商品详情页系统处理出来的redis中,获取数据,并返回响应时效低:时效高:OneService系统动的部分,都是走ajax异步请求的,不是走动态渲染的商品详情页.原创 2020-11-13 19:09:27 · 2702 阅读 · 1 评论 -
商品详情页系统架构-笔记11 - 分布式重建缓存的并发冲突问题
目录1、前言2、分布式的缓存重建并发冲突问题发生3、问题解决-基于zookeeper分布式锁的解决方案3.1、zk的主要代码3.2、业务逻辑代码1、前言整个三级缓存的架构已经走通了我们还遇到一个问题,就是说,如果缓存服务在本地的ehcache中都读取不到数据,那就恩坑爹了这个时候就意味着,需要重新到源头的服务中去拉去数据,拉取到数据之后,赶紧先给nginx的请求返回,同时将数据写入ehcache和redis中分布式重建缓存的并发冲突问题重建缓存:比如我们这里,数据原创 2020-11-12 17:36:57 · 231 阅读 · 1 评论 -
商品详情页系统架构-笔记10 - Nginx分发层+Nginx应用层
1、前言eshop-cache01和eshop-cache02作为应用层nginx,用eshop-cache03作为分发层nginx在eshop-cache03,也就是分发层nginx中,编写lua脚本,完成基于商品id的流量分发策略。2、分发层实现1、获取请求参数,比如productId2、对productId进行hash3、hash值对应用服务器数量取模,获取到一个应用服务器4、利用http发送请求到应用层nginx5、获取响应后返回这个就是基于商品id的定向流量分发的策略,原创 2020-11-12 14:04:13 · 397 阅读 · 1 评论 -
商品详情页系统架构-笔记9 - Nginx层缓存
1、缓存命中率低为什么低三层缓存架构中的本地堆缓存+redis分布式缓存都搞定了就要来做三级缓存中的nginx那一层的缓存了如果一般来说,你默认会部署多个nginx,在里面都会放一些缓存,就默认情况下,此时缓存命中率是比较低的。原因如下:2、如何提高命中率分发层+应用层,双层nginx【分发层nginx】,负责流量分发的逻辑和策略,这个里面它可以根据你自己定义的一些规则,比如根据productId去进行hash,然后对后端的nginx数量取模 怎么实现?..原创 2020-11-11 20:07:16 · 149 阅读 · 1 评论 -
商品详情页系统架构-笔记8 - 详情页缓存架构设计-2
目录1、阶段总结2、zk、kafka集群安装3、基于kafka+ehcache_redis完成缓存数据生产服务的开发4、业务逻辑1、阶段总结时效性要求很高的数据库存,采取的是数据库+缓存双写的技术方案,也解决了双写的一致性的问题时效性不高的数据比如一些商品的基本信息,如果发生了变更,假设在5分钟之后再更新到页面中,供用户观察到,也是ok的时效性要求不高的数据,那么我们采取的是异步更新缓存的策略【缓存数据生产服务】监听一个消息队列,然后数据源服务(商品信息管理服原创 2020-11-11 16:17:04 · 208 阅读 · 1 评论 -
商品详情页系统架构-笔记7 - 详情页缓存架构设计-1
目录1、商品详情页缓存数据生产服务(Java服务)的工作流程分析2、spring boot+mybatis+redis框架整合搭建1、商品详情页缓存数据生产服务(Java服务)的工作流程分析(1)监听多个kafka topic,每个kafka topic对应一个服务(简化一下,监听一个kafka topic)(2)如果一个服务发生了数据变更,那么就发送一个消息到kafka topic中(3)缓存数据生产服务监听到了消息以后,就发送请求到对应的服务中调用接口以及拉取数据,此时是从mysq.原创 2020-11-11 15:13:24 · 322 阅读 · 1 评论 -
商品详情页系统架构-笔记6 - 实时性要求不高的详情页数据
1、概述我们讲解过,咱们的整个缓存的技术方案,分成两块:第一块:是做实时性比较高的那块数据,比如说库存,销量之类的这种数据,我们采取的实时的缓存+数据库双写的技术方案,双写一致性保障的方案第二块:是做实时性要求不高的数据,比如说商品的基本信息,等等,我们采取的是三级缓存架构的技术方案,就是说由一个专门的数据生产的服务,去获取整个商品详情页需要的各种数据,经过处理后,将数据放入各级缓存中,每一级缓存都有自己的作用我们先来看看一下,所谓的这种实时性要求不高的数据,在商品详情页中,都有哪些原创 2020-11-11 14:43:30 · 371 阅读 · 0 评论 -
商品详情页系统架构-笔记5-结合代码实现
cache aside pattern最经典的缓存+数据库读写的模式,cache aside pattern1、Cache Aside Pattern(1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应(2)更新的时候,先删除缓存,然后再更新数据库2、为什么是删除缓存,而不是更新缓存呢?原因很简单,很多时候,复杂点的缓存的场景,因为缓存有的时候,不简单是数据库中直接取出来的值,主要可能是缓存逻辑复杂,代价大。双...原创 2020-11-10 16:25:21 · 409 阅读 · 1 评论 -
商品详情页系统架构-笔记4-商品详情页多级缓存
目录redis在实践中的一些常见问题以及优化思路阶段性总结电商系统中的商品详情页多级缓存redis在实践中的一些常见问题以及优化思路(1)fork耗时导致高并发请求耗时方案:一般redis内存控制在10G以内(2)AOF阻塞问题为什么阻塞:redis写入数据AOF缓冲区,会单独开一个线程fsync,每秒一次。但是Redis 会检查两次的fsync时间,距离上一次fsync超过2秒会写阻塞。方案:采用SSD硬盘(3)主从复制延迟在info replication中看原创 2020-11-09 20:29:12 · 494 阅读 · 0 评论 -
商品详情页系统架构-笔记3-企业级高可用
目录企业级的数据备份和各种灾难下的数据恢复redis如何通过读写分离来承载读请求QPS超过10万+redisreplication 以及master持久化对主从架构的安全意义如何做到redis 99.99%的高可用新老架构对比hash算法 、一致性hash算法(memcached)、 redis cluster的hash slot算法真正生成环境上,读写都是放在matser上的Redis单机的内存不要太高(建议6-8G)企业级的数据备份和各种灾难下的数据恢复是怎么做.原创 2020-11-09 19:49:47 · 219 阅读 · 1 评论 -
商品详情页系统架构-笔记2-RDB、AOF
RDB、AOFredis持久化的意义在于故障恢复。redis突然挂了。进程死了,遇到灾难性的故障(机房停电、线缆被挖断),redis坏了。通过持久化将数据copy一份到磁盘上,然后定期同步或者备份到一些云存储服务器上去,就可以保证数据不丢失,还是可以恢复过来的。RDB周期性:AOF...原创 2020-11-09 16:27:49 · 141 阅读 · 0 评论 -
商品详情页系统架构-笔记1-概述
注:本文章作为笔记用,非喜勿喷。路线商品详情页架构->缓存架构->高并发技术->解决方案->高可用技术+解决方案+架构商品详情页静态化架构及缺陷小电商:实现:页面静态化 - 全页面静态化 结合cms系统(内容管理系统)实现 。在系统中点一个按钮(或者系统自动化)直接生成html缺陷:如果只是数据变还好,只要改这条数据的模板 如果模板变了,惨了所有的页面要重新生成,所以这种方式只适合小的电商。大网站:页面太多,一个模板修改了,要重新...原创 2020-11-05 14:49:47 · 578 阅读 · 0 评论