缓存,消息队列,搜索引擎
。
不要停止思考-jcn
向往美好生活
展开
-
Redis数据结构以及使用场景
在没有redis之前,客户端访问后端应用时,当并发大的时候,存储层如mysql是支撑不了的,可能会将存储层mysql压死,存储层一旦宕机,整个应用就完了。为了很高效的加速应用的读写速度,同时也可以降低后端负载在一定程度上可以通过AOF和RDB机制保证在一定的情况下(如缓存层宕机)快速恢复数据为应用提供服务。缓存层可以通过主从复制+哨兵或集群实现高可用。Redis(REmote DIctionary...转载 2020-02-07 07:33:46 · 228 阅读 · 0 评论 -
【由浅至深】redis 实现发布订阅的几种方式
【由浅至深】redis 实现发布订阅的几种方式非常感谢依乐祝发表文章《.NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐》,对csredis作了一次完整的诠释。前言提到消息队列,最熟悉无疑是 rabbitmq,它基本是业界标准的解决方案。本文详细介绍 redis 多种实现轻订阅方法,作者认为非常有趣并加以总结,希望对有需要的朋友学习 redis 功能有一定的带入作用。...转载 2020-02-06 21:22:46 · 1582 阅读 · 0 评论 -
基于Redis消息的订阅发布应用场景
目录 基于Redis消息的订阅发布应用场景 1.应用背景 2.困境 2.1 锁表风险 2.2 实时性差 2.3 增加编程复杂性 2.4 实时效果 3.解决方案 3.1 前端传值给服务端 ...转载 2020-02-06 21:18:53 · 675 阅读 · 0 评论 -
Redis哨兵(Sentinel)模式
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。一、哨兵模式概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实...转载 2020-02-06 21:06:40 · 175 阅读 · 0 评论 -
通过三张图直观理解Redis集群设计原理
Redis集群设计包括2部分:哈希Slot和节点主从,本篇博文通过3张图来搞明白Redis的集群设计。 节点主从:主从设计不算什么新鲜玩意,在数据库中我们也经常用主从来做读写分离,直接上图:图上能看得到的信息:1, 只有1个Master,可以有N个slaver,而且Slaver也可以有自己的Slaver,由于这种主从的关系决定他们是在配置阶段就要指定他们的上下...转载 2020-02-06 19:48:55 · 161 阅读 · 0 评论 -
Redis主从复制原理以及应用
目录 主从复制概述如何使用主从复制开启主从复制断开主从复制主从复制的实现原理连接建立阶段数据同步阶段 命令传播阶段【数据同步阶段】全量复制和部分复制全量复制部分复制psync命令的执行【命令传播阶段】心跳机制主->从:PING从->主:REPLCONF ACK应用中的问题读写分离及其中的问题 复制超时问题各场景下复制的选择及优化技巧复制相关的配置单机内存大...转载 2020-02-06 19:44:04 · 624 阅读 · 0 评论 -
Redis分布式锁实现秒杀业务(乐观锁、悲观锁)
一、业务场景 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作,所以实现秒杀,就必须控制线程对资源的争抢,既要保证高效并发,也要保证操作的正确。二、一些可能的实现 刚才提到过,实现秒杀的关键点是控制线程对资源的争抢,根据基本的线程知识,可以不加思索的想到下面的一些方法:1)、秒...转载 2020-02-06 16:16:10 · 675 阅读 · 0 评论 -
用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景?
首先,我们一起来看看这个问题的背景?前段时间有个朋友在外面面试,然后有一天找我聊说:有一个国内不错的电商公司,面试官给他出了一个场景题:假如下单时,用分布式锁来防止库存超卖,但是是每秒上千订单的高并发场景,如何对分布式锁进行高并发优化来应对这个场景?他说他当时没答上来,因为没做过没什么思路。其实我当时听到这个面试题心里也觉得有点意思,因为如果是我来面试候选人的话,应该会给的范围更大一些比...转载 2020-02-06 16:03:02 · 2040 阅读 · 3 评论 -
利用redis实现分布式事务锁,解决高并发环境下库存扣减
问题描述:某电商平台,首发一款新品手机,每人限购2台,预计会有10W的并发,在该情况下,如果扣减库存,保证不会超卖解决方案一利用数据库锁机制,对记录进行锁定,再进行操作SELECT * from goods where ID =1 for update;UPDATE goods set stock = stock - 1;利用排它锁将并行转化为串行操作,但该方案的性能和用户体验较差...转载 2020-02-06 16:00:06 · 1147 阅读 · 0 评论 -
Redis事务机制和分布式锁
Redis事务机制严格意义来讲,Redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的;Redis的事务实质上是命令的集合,在一个事务中要么所有命令都被执行,要么所有事物都不执行。 一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。在MySQL中我们使用START TRANSACTION 或 BEGIN开启一个事务,使用COMMIT提交一个事务;...转载 2020-02-06 15:39:02 · 182 阅读 · 0 评论 -
Redis持久化RDB/AOF详解与实践
Redis 是一个开源( BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持的数据类型很丰富,如字符串、链表、集 合、以及散列等,并且还支持多种排序功能。什么叫持久化?用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、 XML 数据文件中等等。...转载 2020-02-06 11:11:29 · 128 阅读 · 0 评论 -
es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)?
面试官心理分析在搜索这块,lucene 是最流行的搜索库。几年前业内一般都问,你了解 lucene 吗?你知道倒排索引的原理吗?现在早已经 out 了,因为现在很多项目都是直接用基于 lucene 的分布式搜索引擎—— ElasticSearch,简称为 es。而现在分布式搜索基本已经成为大部分互联网行业的 Java 系统的标配,其中尤为流行的就是 es,前几年 es 没火的时候,大家一般...转载 2020-02-10 18:32:13 · 380 阅读 · 0 评论 -
浅谈ActiveMQ的使用
如何使用ActiveMQ1.AcitveMQ的数据传送流程2.ActiveMQ的两种消息传递类型(1)点对点传输,即一个生产者对应一个消费者,生产者向broke推送数据,数据存储在broke的一个队列中,当消费者接受该条队列里的数据。(2)基于发布/订阅模式的传输,即根据订阅话题来接收相应数据,一个生产者可向多个消费者推送数据,与MQTT协议的实现是类似的,对MQTT协议有兴趣...转载 2020-02-10 18:24:10 · 176 阅读 · 0 评论 -
一分钟了解ActiveMQ
是什么消息中间件。可以在分布式系统的不同服务之间进行消息的发送和接收它的出现解决了什么问题可以让系统解耦 比如:使用消息中间件,某一个服务,可能依赖了其他好几个服务。比如课程里面的运营商后台依赖了4个服务,那不用mq就和4个服务耦合,用了mq,就只和1个mq耦合。参考下图:实际项目应用场景监听商品添加消息,接收消息,将对应的商品信息同步到索引库 每次添加完商品并将同...转载 2020-02-10 17:44:21 · 319 阅读 · 0 评论