![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 73
南国_之恋
每一个坚持c++的人都有一个淫荡的梦想,希望自己像硅谷天才工程师一样牛逼
展开
-
redis三种模式对比
模式类型主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)主从模式原理同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。优点:1、解决数据备份问题...转载 2021-04-29 18:51:55 · 166 阅读 · 0 评论 -
分布式之数据库和缓存双写一致性方案解析
引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成 1、讲解缓存更新策略 2、对每种策略进行缺点分析 3、针对缺点给出改进方案正.转载 2021-03-25 14:34:31 · 115 阅读 · 0 评论 -
缓存与数据库双写一致最佳解决方案分析
写在最前面在大型互联网应用当中如果你的应用引入了缓存机制,那么有一个大前提就是你的业务场景上必须得接受数据的新鲜度上有可能会有一定时间的延迟。删除缓存失败是一个极小概率事件,且在不能保证所有操作100%成功的几率下,采用JOB补偿的机制是目前比较成熟的解决方案。大并发量写请求的应用,不可能去实时写DB,基本都采用队列+消息异步写DB的机制,不然会有大量的并发问题缓存机制介绍如今利用缓存机制来提高查询效率已被广泛用在各大生产环境,查询数据的一般流程如下所示使用缓存提高查询效率.转载 2021-03-25 14:14:07 · 113 阅读 · 0 评论 -
彻底理解分布式锁原理并附上常用的分布式锁实现
一:概念锁的目的就是对资源的一种并发控制;当有多个使用者对一个资源进行使用的时候,为了保证避免对资源的使用冲突,必然会出现一种串行控制操作。比如酒店的房间门锁,当你入住的时候,你需要先申请锁(的钥匙),如果锁(的钥匙)已经被其他人拿走,那么你将不能使用该房间资源;如果你申请到锁(的钥匙)进入房间,那么再有别人想申请进入则不被允许;当你释放锁(的钥匙,即办理退房)的时候,则其他人可以再次申请锁。对于Java来说synchronized,Lock等都是为了解决该问题而出现的。那么分布式.转载 2021-03-24 20:04:29 · 200 阅读 · 0 评论 -
AP模式(Redis)的分布式锁分析以及实现
目录分布式CAP理论AP模型的分布式锁Redis分布式锁原理Redis分布式锁的实现Redis分布式锁代码AP模式分布式锁总结分布式CAP理论在介绍分布式锁之前,先说一下CAP理论。因为现在提到分布式系统一定离不开CAP理论。C(Consistency)一致性、A(Availability)可用性、P(Partition tolerance)分区容错性。三者不能同时存在,由于P是必要因素,所以分为CP和AP两种模型。下面我们就根据AP和CP模型来分析一下分布式锁以及使用场景。AP模型的分转载 2021-03-24 11:50:43 · 1314 阅读 · 0 评论 -
分布式锁用 Redis 还是 Zookeeper?看完你就明白了!!
每日英文There will be a tear that lets you grow in a twinkling.总会有一次流泪,让我们瞬间长大。每日掏心话生活中没有绝对的一帆风顺和十全十美,生命的滋味难免有曲折和苦涩,不要把曲折当成包袱,走过去就是轻松,过去再怎么苦涩,也不要太过渲染。作者:jianfeng | 来源:石杉的架构笔记| 责编:乐乐程序员小乐(ID:study_tech)第 912 次推文 图源:百度往日回顾:微信推出史上最简单「拍一拍」新功能,仅需...转载 2021-03-24 11:02:56 · 109 阅读 · 0 评论 -
精讲Redis内存模型
前言Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解Redis的5种对象类型的用法和特点的基础上,进一步了解Redis的内存模型,对Redis的使用有很大帮助,例如:1、估算Redis内存使用量。目前为止,内存的使用成本仍然相对较高,使用内存不能无所顾忌;根转载 2021-03-22 19:36:49 · 100 阅读 · 0 评论 -
Redis官方分布式锁的实现-Redlock实现原理
前文笔者介绍了目前市面上见的比较多的Redis+lua分布式锁的实现,大概有如下三个要点:set命令要用 setkey value px milliseconds nx;保证原子性value要具有唯一性,释放锁时要验证value值,不能误解锁;解锁要使用lua脚本,也是为了保证原子性Redis官方也指出该方法有安全隐患就是在主从复制模式下会导致两个线程可能会同时持有一个锁,如果业务允许如此,则推荐使用这种方案,毕竟实现简单,易维护。如果对锁的要求非常高的场景,Redis官方建议使用RedLoc转载 2021-03-19 16:11:33 · 132 阅读 · 0 评论 -
使用redis+lua脚本实现分布式锁
分布式锁的应用场景当多个机器(多个进程)会对同一条数据进行修改时,并且要求这个修改是原子性的。这里有两个限定:多个进程之间的竞争,意味着JDK自带的锁失效;原子性修改,意味着数据是有状态的,修改前后有依赖。分布式锁的实现条件:高性能(加、解锁时高性能)可以使用阻塞锁与非阻塞锁。不能出现死锁。可用性(不能出现节点 down 掉后加锁失败)。Redis使用分布式锁本文将先介绍Redis的实现方式,当然Redis实现分布式锁有多种方案,本文介绍一种基于lua脚本的实现方案。后面笔者会介绍分转载 2021-03-19 15:56:17 · 321 阅读 · 0 评论 -
Redis原理(二) Redis的对象类型及其内部编码
Redis 支持 5 种对象类型,而每种结构都有至少两种编码。这样做的好处在于:一方面接口与实现分离,当需要增加或改变内部编码时,用户使用不受影响,另一方面可以根据不同的应用场景切换内部编码,提高效率。Redis 各种对象类型支持的内部编码官网描述:Strings can be encoded as raw (normal string encoding) or int (strings representing integers in a 64 bit signed interval are转载 2021-03-19 14:40:45 · 99 阅读 · 0 评论 -
Redis原理(一) redis的内存模型
Redis最为常用的数据类型主要有以下五种:String 字符串Hash 哈希List 列表Set 集合Sorted set 有序集合丰富的类型是 Redis 相对于 Memcached 等的一大优势redis 内部的存储结构如图示:在了解上文的基础上,进一步了解Redis 的内存模型,对 Redis 的使用有很大帮助。如:估算 Redis 内存使用量,选择合理的机器配置优化内存占用,选择最合适的数据结构和编码快速定位问题,当 Redis 出现阻塞、内存占用等问题时本文介绍转载 2021-03-19 14:39:19 · 125 阅读 · 0 评论 -
深入学习Redis(1):Redis内存模型
前言Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解Redis的5种对象类型的用法和特点的基础上,进一步了解Redis的内存模型,对Redis的使用有很大帮助,例如:1、估算Redis内存使用量。目前为止,内存的使用成本仍然相对较高,使用内存不能无所顾忌;根转载 2021-03-18 10:51:57 · 106 阅读 · 0 评论 -
分布式之数据库和缓存双写一致性方案解析
引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成1、讲解缓存更新策略2、对每种策略进行缺点分析3、针对缺点给出改进方案正文先做一转载 2021-03-12 18:41:07 · 72 阅读 · 0 评论 -
分布式之redis复习精讲
引言为什么写这篇文章?博主的《分布式之消息队列复习精讲》得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚踏实地,一步一个脚印,不要投机取巧。考虑到绝大部分写业务的程序员,在实际开发中使用redis的时候,只会setvalue和getvalue两个操作,对redis整体缺乏一个认知。又恰逢博主某个同事下周要去培训redis,所以博主斗胆以redis为题材,对redis常见问题做一个总结,希望能够弥补大家的知识盲点。转载 2021-03-12 18:22:47 · 70 阅读 · 0 评论 -
那些年用过的Redis集群架构(含面试解析)
引言今天是2019年2月12号,也就是大年初八,我接到了高中同学刘有码面试失利的消息。他面试的时候,身份是某知名公司的小码农一枚,却因为不懂自己生产上Redis是如何部署的,导致面试失败!人间惨剧,莫过于此。接到他面试失利的消息,我差点发出猪一样的笑声,显然是平时太少关注孤独烟这个公众号!我提笔6次,放笔6次,差点因为过于兴奋而没法编下去。最后还是硬着头皮写下了本文!因此,今天我们来谈谈Redis集群这个话题,需要说明的是本文适合人群:不知道自己生产redis集群架构,以及对Re转载 2021-03-12 17:21:19 · 87 阅读 · 0 评论 -
为什么Redis集群有16384个槽
引言我在《那些年用过的Redis集群架构(含面试解析)》一文里提到过,现在redis集群架构,redis cluster用的会比较多。如下图所示对于客户端请求的key,根据公式HASH_SLOT=CRC16(key) mod 16384,计算出映射到哪个分片上,然后Redis会去相应的节点进行操作!那大家思考过,为什么有16384个槽么?ps:CRC16算法产生的hash值有16bit,该算法可以产生2^16-=65536个值。换句话说,值是分布在0~65535之间。那作者在做mod运算的时候,转载 2021-03-12 17:07:52 · 119 阅读 · 0 评论 -
Redis常见面试题
http://jasontec.cn/articles/2019/12/20/1576826633007.html介绍:Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。传统数据库遵循 ACID 规则。而 Nosql(Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称) 一般为分布式而分布式一般遵循 CAP 定理。Github 源转载 2021-03-12 16:22:47 · 64 阅读 · 0 评论 -
订阅与发布
Redis 通过PUBLISH、SUBSCRIBE等命令实现了订阅与发布模式, 这个功能提供两种信息机制, 分别是订阅/发布到频道和订阅/发布到模式, 下文先讨论订阅/发布到频道的实现, 再讨论订阅/发布到模式的实现。频道的订阅与信息发送Redis 的SUBSCRIBE命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订阅的频道时, 信息就会被发送给所有订阅指定频道的客户端。作为例子, 下图展示了频道channel1, 以及订阅这个频道的三个客户端 ——client2...转载 2021-02-19 15:19:04 · 871 阅读 · 0 评论 -
当 Redis 发生高延迟时,到底发生了什么
Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。但是 Redis 也会发生延迟时,这是就需要我们对其产生原因有深刻的了解,以便于快速排查问题,解决 Redis的延迟问题一条命令执行过程在本文场景下,延迟 (latency) 是指从客户端发送命令到客户端接收到命令返回值的时间间隔。所以我们先来看一下 Redis 一条命令执行的步骤,其中每...转载 2020-01-08 18:18:15 · 170 阅读 · 0 评论 -
分布式锁的实现—Redis(条理清晰)
实现分布式锁的必要条件:互斥性和不会发生死锁互斥性的保证:就是同时只能有一个线程注册成功获取到锁 比如 jedis.setNX(key,value):方法含义:如果key不存在就设置避免发生死锁:就是获得锁以后 无论这个加锁的客户端怎么样,都要最终能释放出来锁;redis的分布式锁的实现机制就是:获得锁:多线程竞争注册相同的key并存储value,因为Jedis有排他性的方法比如setN...转载 2019-12-26 16:49:14 · 96 阅读 · 0 评论 -
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题1、什么是 Redis?.2、Redis 的数据类型?3、使用 Redis 有哪些好处?4、Redis 相比 Memcached 有哪些优势?5、Memcache 与 Redis 的区别都有哪些?6、Redis 是单进程单线程的?7、一个字符串类型的值能存储最大容量是多少?8、Redis 的持久化机制是什么?各自的优缺点?9、Redis 常见性能...转载 2019-12-02 17:35:28 · 277 阅读 · 0 评论 -
redis分布式锁,面试官请随便问,我都会
目录前言实现要点正确的redis分布式锁实现错误加锁方式错误方式一错误方式二错误解锁方式解锁错误方式一解锁错误方式二正确加锁释放锁方式前言现在的业务场景越来越复杂,使用的架构也就越来越复杂,分布式、高并发已经是业务要求的常态。像腾讯系的不少服务,还有CDN优化、异地多备份等处理。说到分布式,就必然涉及到分布式锁的概念,如何保证不同机器不同线程的分布式锁同步呢?实现要点...转载 2019-11-18 17:47:28 · 121 阅读 · 0 评论 -
【Redis笔记】一起学习Redis | 聊聊Redis的内存淘汰LRU算法?
本文转载自博客:https://blog.csdn.net/SnailMann/article/details/97385084--------------------------------------------------------------------------------------------------------------------------------------...转载 2019-07-30 17:57:28 · 254 阅读 · 0 评论