游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Redis笔记,涵盖了Redis所有知识点,拿走不谢

  一、Redis为什么那么快QPS达到10万秒用C语言实现基于内存单线程,不用线程上下文切换及加锁二、Redis数据类型String,常见的缓存,存储登录session等Hash,存储对象,单独修改对象属性List,有序列表,可实现简单的消息队列,阻塞队列Set,分布式去重Zset,也叫做sortedset,有序集合,关联一个double类型的分数,根据分数排序,可实现排行榜、延时队列Stream,redis5。0后的新数据类型,消费者可分组,一条消息只能被同组的一个消费者消费,但可以被不同组的多个消费者重复消费,借此实现可持久化的发布订阅功能三、缓存模式A:旁路缓存模式CacheAsidePattern应用程序同时对接缓存、数据库查询时先查询缓存,缓存未命中则查询数据库,同时更新数据库更新时先更新数据库,在删除缓存缓存最常用的模式会有数据不一致性问题适用读多写少的场景两种加载缓存的方式,读到再加载,或者启动时就加载为什么是先更新数据库再删除缓存,而不是先删除缓存再更新数据库?为什么是更新数据库后删除缓存,而不是更新缓存?四、缓存模式B:读写穿透模式ReadWriteThroughPattern应用程序只对接缓存,由缓存对接数据库,相当于CacheProvider中封装了数据库查询时若缓存未命中则,则CacheProvider去查询数据库,设置到缓存后再返回更新时,由CacheProvider同时更新缓存和数据库,这里有事务保证此模式很耗时,但能保证数据一致性少见的模式五、缓存模式C:异步缓存写入WriteBehind应用程序只更新缓存,不直接更新数据库在一定时间触发异步的方式写入数据库类似于MySQLInnoDB缓冲池的模式在写入数据库前断电挂机会有丢失数据可能放大了数据不一致性,但速度很快适用于高并发写,但对数据一致性要求不高且允许丢失的场景六、问题A:缓存雪崩
  电商首页热点数据会做缓存,定时任务刷新,所有key失效时间一样。
  热点key大面积集中失效,大量请求一下子打到数据库,导致数据库挂掉。失效时间加随机值,不让它们集中失效设置热点key永不过期,有更新时就更新缓存如果Redis是集群部署,可让热点key分布在不同的Redis库中七、问题B:缓存穿透
  缓存和数据库中都不存在的数据,被攻击者利用,如id1,发起攻击的时候会绕过换过,不断查询数据库。对参数合法性进行检验使用布隆过滤器,会有一定误判数据库查询为null时,可以缓存约定的数据,如请稍后重试,缓存时间设置短点,如30秒(防止正常了这个id下有数据了也无法正常使用)限流八、问题C:缓存击穿
  一个热点key,在失效的瞬间,遭遇高并发,大量请求在缓存中查不到,会直接去查数据库设置热点key永不过期使用分布式互斥锁,保证在缓存失效时,只有一个请求能查到数据库九、问题D:数据一致性
  数据一致性就是指数据库和缓存的数据一致的问题。
  根据三种缓存模式可知,在数据一致性和效率是两个极端,只能取一个中间平衡点。
  一般是采用旁路缓存模式,且采用先更新数据库,后删除缓存的方式。
  但就这时候还是会有少量请求因为删除缓存不及时而读到旧数据,不过一般都能顺利删除缓存,这已经是对业务影响最轻的做法。
  这时候如果允许短期的数据不?致不会影响业务,那么只要下次更新时可以成功,能保证最终?致性就可以,那么可以不用再做处理。
  如果还要再完美,可以捕捉删除缓存异常增加重试,对耗时敏感的可以进行异步补偿重试,即放到mq里面监听,但是这样对业务侵入性比较大,也可以采用监听mysqlbinlog日志的方式进行重试。十、布隆过滤器
  原理:
  一个元素被加入到集合时,通过k个哈希函数将这个元素映射成一个位数组中的k个点,把它们设置为1。
  检索时,看这些位置是不是为1就知道这个元素在不在集合中了,如果都是1则可能存在,如果有一个是0则一定不存在。缺点:存在误判的肯定,可通过建立白名单来存储误判的元素删除困难,初始化要把所有合法元素加到过滤器中,删除时设置为0可能会影响其他元素的判断,可通过CountBloomFilter十一、高并发更新同一个key问题使用zookeeper分布式锁保证线程安全如果也要更新数据库,涉及到双写,就会出现数据一致性问题,可以参考上面的删除key如果不能删除key,则在更新缓存时比较数据的更新时间十二、持久化方式:RDB(全量持久化)记录内存快照的方式使用bgsave,fork一个子进程进行,不会阻塞set操作,类似于GC的守护进行CopyOnWrite,写时复制机制,备份的时候发生写入操作,则备份的是写入之前的数据,所以会有数据丢失定期进行,一般是5分钟一次,断电可能会丢失较多数据恢复块、备份久可能把RDB快照文件定期放到远程存储,一般做冷备RDB备份的文件体积小,恢复很快十三、持久化方式:AOF(增量持久化)日志追加的方式,类似于MySQLinnoDB引擎中redo。log,备份当前操作命令恢复慢、备份块会不会丢失数据取决于appendfsync配置,配置为实时备份则每次写操作都会备份,性能低,一般是配置为每秒一次,这样最多是丢失一秒的数据适合做灾备随着时间增长,AOF文件会越来越大,Redis提供了日志重写功能,可以压缩命令,重写后新的AOF文件仅包含旧AOF文件命令的最小集合AOF备份的文件体积大,即使经过重写,仍然很大,恢复很慢
  Redis4。0后使用了RDBAOF混合持久化模式,生成RDB文件重新记录,这时AOF日志不再是全量的,而是增量的日志记录,体积很小。十四、Redis过期策略
  Redis需要删除失效的数据以清空内存,过期策略就是怎么删除过期数据。定期删除:默认每隔100ms随机抽取部门设置了过期时间的key,检查key是否失效,失效了就删除。(不全部检查是因为效率低,类似于MySQL全表扫描)惰性删除:当应用程序来查key的时候,检查到key失效就会删除,未失效就返回。
  Redis使用定期删除惰性删除,能保证最终一定会删除过期的key,但是定期删除会有漏网之鱼,而应用程序又很久没来查询就会导致长时间滞留在内存之中,这时需要用到内存淘汰机制。十五、Redis内存淘汰机制
  FIFO:FirstInFirstOut,先进先出
  LRU:LeastRecentlyUsed,最近最少使用,从时间上看很久没有使用的被淘汰
  LFU:LeastFrequentlyUsed,最不经常使用,从次数上看使用得最少的被淘汰volatilelru:将设定了超时时间的数据,采用LRU算法将数据提前删除allkeyslru:对所有的数据采用LRU算法进行删除volatilelfu:设定超时时间的数据采用LFU算法删除allkeyslfu:对所有数据采用LFU算法删除volatilerandom:设定了超时时间的数据随机删除allkeysrandom:所有数据随机删除volatilettl:设定了超时时间的数据根据剩余时间少的删除数据noeviction:不删除内存数据,如果内存溢出报错返回(默认策略)十六、Redis数据同步策略A:全量同步(发送RDB快照)
  全量同步主要发生在Slave初始化阶段,当启动一台Slave时,它需要连接到Master,把Master数据都复制一份。Slave连接上Master,发送sync命令给到Master。Master执行bgsave,按照全量备份方式生成一份RDB快照,并用内存缓冲区记录此后执行的所有写命令。Master向Slave发送RDB快照。Slave收到RDB文件后,丢弃所有旧数据,并载入收到的快照文件。Master发送完RDB快照就接着发缓冲区中的写命令。Slave载入完RDB快照,就开始接收执行Master发送过来的写命令。十七、Redis数据同步策略B:增量同步(发送写命令)
  Master每执行一个写命令就会向Slave发送相同的写命令,Slave接收执行收到的写命令。十八、Redis主从复制
  主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave在任何时候都可以发起全量同步。redis策略是,无论如何,首先会尝试进行增量同步,如不成功,再要求从机进行全量同步。
  主从复制,只是实现了容灾备份,不能故障转移,不是实现高可用。十九、Redis高可用方案A:哨兵模式主动复制
  哨兵是什么?哨兵是一个独立的进程。哨兵的作用主要有两个,A:通过心跳机制监控Redis服务器运行状态,包括Master和Slave。B:当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的哨兵、slave,修改配置文件,让它们切换主机。故障切换过程是怎么样的?(failover)当一个哨兵监测到Master宕机,系统并不会马上进行故障切换,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行故障切换。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。哨兵模式的优缺点是什么?优点:实现了容灾备份和自动故障切换,是高可用方案。缺点:不好在线扩容(Slave可以随时配置多个,提高读并发,但Master只有一个,提高不了写并发),配置麻烦,只有一个主节点对外提供服务,没法支持很高的并发量。二十、Redis高可用方案B:RedisCluster(集群架构)
  Redis集群是一个由多个主从节点群组组成的分布式服务集群,他具有复制、高可用、分片特性,Redis集群不需要sentinel哨兵,也能完成节点移除和故障转移的功能,需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展;Redis集群的性能和高可用均优于之前版本的哨兵模式,且集群配置非常简单。故障切换过程是怎么样的?Redis的所有节点都会保存当前redis集群中的全部主从状态信息,并且每个节点都能够相互通信。当一个节点发生宕机,则集群中的其他节点通过心跳机制检查Redis节点是否宕机。当有半数以上的节点认为宕机,则认为主节点宕机,同时由Redis剩余的主节点进入选举机制,投票选举链接宕机的主节点的从机,实现故障迁移。集群中如果主机宕机,那么从机可以继续提供服务,当主机中没有从机时,则向其它主机借用多余的从机,继续提供服务,如果主机宕机时没有从机可用,则集群崩溃。即:每个节点都至少保持是一主一从。
  数据存储原理是什么?hash槽存储原理,所有的键根据哈希函数(CRC16〔key〕16383)映射到016384槽内。当向redis集群中插入数据时,首先将key进行计算。之后将计算结果匹配到具体的某一个槽的区间内,之后再将数据set到管理该槽的节点中。
  二十一、keys命令keys命令可以列出所有符合给定模式pattern的key单因为redis是单线程的,使用keys命令会导致线程阻塞一段时间,线上服务停顿,知道指令执行完毕,服务才能恢复,如列出10亿个相同前缀的key时,影响特别大。可以使用scan指令代替,但会有一定重复,通过代码去重就好。二十二、redis常见功能使用String类型缓存用户登录状态使用Hash类型缓存一张配置表、字典表使用setnxexpirelua实现分布式锁使用List类型实现高性能的分页(如文章的评论列表)、简单的消息队列功能使用Set类型实现分布式全局去重使用Zset类型实现热榜、排行榜、延时队列功能使用pubsub实现简单的发布订阅功能(不可持久化)使用Stream类型实现有消费组的发布订阅功能(可持久化)使用Bitmap(位图)实现签到、布隆过滤器功能使用HyperLogLog实现的不精确的去重统计,如PV(页面访问)、UV(用户访问)使用Geospatial保存地理位置,计算位置距离,实现附近的人功能使用Pipeline(管道)把一批命令打包好发送到redis一次性执行,减少客户端与redis的通信次数来实现降低往返延时时间使用Lua脚本保证原子性,实现秒杀场景扣除商品库存使用Set类型实现标签系统

晚点独家丨TikTok电商上半年GMV超10亿美元《晚点LatePost》独家获悉,TikTok电商在2022年上半年的GMV(商品交易总额)已超10亿美元,与其在2021年全年的体量相当。其中,印尼市场的月均GMV达2亿美元……苹果macOSMonterey12。2公测版Beta发布重构IT之家12月18日消息,在发布开发者预览版一天后,苹果今日面向公共测试计划用户推出了macOSMonterey12。2第一个公开测试版本。用户可通过IT之家App发现苹……苹果第八大股东表态将投票反对苹果管理层薪酬计划,包括向库克支2月28日消息,据外媒报道,在苹果年度股东大会召开之前,世界最大主权财富基金、斥资1。3万亿美元的挪威主权财富基金运营机构于当地时间周日表示,该基金将投票反对苹果管理层的薪酬计……腾讯QQ音乐macOS版8。2。0正式适配苹果M1芯片感谢IT之家网友rocspike的线索投递!IT之家5月21日消息,昨日,腾讯发布了QQ音乐macOS版8。2。0正式版更新,宣布适配了苹果M1系统,新版本现已登陆Mac……618购机指南,性价比旗舰机,不到3000块钱入手天玑900要问当今天下手机处理器哪款最强?那必须得是苹果A15、骁龙8Gen1、天玑9000这三款。各家手机厂商最高端的旗舰手机都是这些搭载这些处理器(比如vivoX80系列、小米……微软VisualStudio2022macOS版17。0预览IT之家4月1日消息,据Neowin报道,几周前,微软推出了VisualStudio2022forMac17。0预览版7,该版本的亮点包括改进对Xamarin的支持,继续向原生……几个少见的提高生产力的数据和系统可视化工具提高生产力的数据和系统可视化工具使用这些管理复杂文件、开发环境等的可视化工具有助于提高你的工作效率,一起瞧瞧随着文件、数据集和配置的增长,导航它们变得越来越困难。然而,有……苹果iPhone13Pro即将发布,运营商将大力补贴推动销售IT之家9月14日消息苹果秋季发布会时间定于北京时间9月15日凌晨1点,有望推出全新iPhone13系列机型以及AppleWatchSeries7智能手表、AirPods3无线……消息称缺芯片影响苹果iPhone13Pro圣诞季销售,分析师北京时间10月14日消息,席卷全球的芯片荒可能影响iPhone13系列生产,但分析师称,苹果能度过这次危机,明年更强劲的表现将弥补今年圣诞销售季的损失。彭博社星期二刊文称,由于……苹果官网改版新增Apple独家配件及AirPods版块IT之家10月19日消息,在今天凌晨举行的苹果来炸场特别活动结束后,苹果不仅在官网上架了新品,还对官网进行了重新设计,将其产品和服务分开。Apple。com顶部的栏目取消……2021款MacBookPro搭载夏普定制屏,苹果技术加持下IT之家10月19日消息,今日凌晨,苹果召开发布会,正式发布了AirPods3、2021款MacBookPro等新品。2021款MacBookPro采用刘海屏设计,两侧的……中年男人为什么劝你少穿卫衣,多穿夹克?看46岁靳东就明白了对于大多数男人来说,年轻时候都想打扮得稍微成熟一点,让自己看起来有男人味;等到了中年以后,又想穿得年轻时尚一些,好让自己比同龄人显年轻。其实,男人有这种心理很正常,但是从……
模板康宁汉姆!力压一众超新星,夺MVP!天才前锋成2023届在露天看台最新一期2023届NBA选秀模拟榜单中,达里克怀特黑德被排在第四顺位。怀特黑德身高1米98,他是2022年奈史密斯奖高中最有价值球员,在ESPN榜单2022届排……臭汗虚汗冷汗原来都是身体发出的警报,需格外注意明代医家张景岳在总结前人问诊要点的基础上,写出了中医问诊十问歌:一问寒热二问汗,三问头身四问便将汗列为第二,足以证明辨汗素来就被历代医家视作极为重要的问诊手段。在中医眼中……一棵开花的树平时不怎么喜欢现代诗,但席慕蓉的这首《一棵开花的树》很喜欢。原因应该是因为里面写了的是关于爱情。每一个人应该都会对爱充满期待和向往,我也不例外。在感情中,受伤仿佛是……她的旅行,藏满细节今天是所有女性的节日。我们由衷地开心在面对广阔的世界时,有越来越多乐于探索、拥有精彩人生的女性,她们传递给我们无畏上路的勇气,也向我们揭示:……意外!国足执意新西兰拉练,曝部分国脚拒集训,归化最后亮相机会根据国足相关的安排,无论洋帅何时到位,国足集结的时间已经敲定,新西兰之旅也肯定不会改变了。不过,这一次国足大名单的选择不会是李霄鹏亲自决定了,因为李霄鹏实际上已经下课,但由于洋……碎片商店9月更新前瞻,史诗8选3,貂蝉典藏突袭,新版白青蛇绝王者峡谷每次周更,玩家比较关心的调整有两个,其一是英雄的平衡优化,其二便是碎片商店的轮换。而按照更新时间得知,碎片商店下一轮更新将在9月1号进行,那么这次都有哪些高级史诗有望上……孩子身上长胎记,让她上学时被笑话,准妈妈孕期别太大意了人们在看到长有明显胎记的人总会多看两眼,身上有胎记的人总害怕自己生出来的小孩也会长胎记,每一位父母都希望孩子健康白净,如果能拥有一个可爱有颜值的宝宝就更好了!可是,有时候……10月国际线航班量大增!清迈水灯节回归!坦桑尼亚一客机坠毁本周的消息,主要以国际信息为主。国内航班客运量,特别是国际航班的运营数量,在10月份再次大增,进一步扩大了国际间的交流。目前国内多省市城市已恢复国际线的运营欧洲客运方面,……国乒的恋爱达人,刘诗雯陈梦刘国梁马琳上榜,都有传奇故事一直以来,刘诗雯跟陈梦在球迷的心目当中就是人善心美的化身,是不少粉丝心目当中的白莲花。这就牵扯到一个粉丝的标准问题,对这两个老将的评价,不同的球迷有不同的标准。那些认为这两个选……建国后,毛主席和李银桥散步,突然问他是李敏好还是李讷好?毛主席是领袖,也是父亲,他的一生有10个子女,但在艰苦的战争环境中,长大成人的仅仅有4人,分别是毛岸英、毛岸青、李敏和李讷。作为政治家和领袖,毛主席把国家、人民和党的利益……为什么说辽宁男篮冠军水我就不明白了。为什么大家都那么酸,难道要跟NBA冠军打一场赢了才叫不水吗?辽宁能拿下冠军,是赢了常规赛,再打季后赛,半决赛,决赛,都赢了才能夺冠,你们说的水是从哪来的,那辽宁赢……新规曝光,直通瘦西湖!扬州下一个文旅名片亮相!扬州向北平山乡,一场巨变即将上演。近日,扬州自然资源局发布【平山片区详细规划方案公示】,新增大批住宅、商业、文旅等用地。平山乡农村,这是很多人对这里的第一印象。……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网