redis雪崩,击穿,穿透
聪明出于勤奋,天才在于积累。——华罗庚
缓存雪崩对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着急,重启数据库,但是数据库立马又被新的流量给打死了。
(
1、缓存中大批量热点数据过期后系统涌入大量查询请求
2、因为大部分数据在Redis层已经失效,请求渗透到数据库层
3、大批量请求犹如洪水一般涌入,引起数据库压力造成查询堵塞甚至宕机。
)
缓存雪崩的事前事中事后的解决方案如下。
事前:redis 高可用,主从+哨兵,redis cluster,避免全盘崩溃。
事中:本地 ehcache 缓存 + hystrix 限流&降级,避免 MySQL 被打死。
事后:redis 持久化,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。
(
1、事前:redis 高可用,主从+哨兵,redis cluster,避免全盘崩溃
2、事中:本地 ...
redis优化
聪明出于勤奋,天才在于积累。——华罗庚
数据持久化数据持久化
内存优化设置maxmemory。设置Redis使用的最大物理内存,即Redis在占用maxmemory大小的内存之后就开始拒绝后续的写入请求,该参数可以确保Redis因为使用了大量内存严重影响速度或者发生OOM。此外,可以使用info命令查看Redis占用的内存及其它信息。
让键名保持简短。键的长度越长,Redis需要存储的数据也就越多
使用短结构。主要Redis的list、hash、set、zset这四种数据结构的存储优化。在Redis3.2之前,如果列表、散列或者有序集合的长度或者体积较小,Redis会选择一种名为ziplist的数据结构来存储它们。该结构是列表、散列和有序集合三种不同类型的对象的一种非结构化表示,与Redis在通常情况下使用双向链表来表示列表、使用散列表示散列、使用散列加跳跃表表示有序集合相比,它更加紧凑,避免了存储额外的指针和元数据(比如字符串值的剩余可用空间和结束符”\0”)。但是压缩列表需要在存储的时候进行序列化,读取的时候进行反序列化。以散列为例,在redis.conf中,可以进行如下设置
...
redis主从
聪明出于勤奋,天才在于积累。——华罗庚
redis主从原理一、复制过程 1、从节点执行 slaveof 命令
2、从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制
3、从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点
4、连接建立成功后,发送 ping 命令,希望得到 pong 命令响应,否则会进行重连
5、如果主节点设置了权限,那么就需要进行权限验证;如果验证失败,复制终止。
6、权限验证通过后,进行数据同步,这是耗时最长的操作,主节点将把所有的数据全部发送给从节点。
7、当主节点把当前的数据同步给从节点后,便完成了复制的建立流程。接下来,主节点就会持续的把写命令发送给从节点,保证主从数据一致性。
二、数据间的同步 redis 同步有 2 个命令: sync 和 psync,前者是 redis 2.8 之前的同步命令,后者是 redis 2.8 为了优化 sync 新设计的命令。我们会重点关注 2.8 的 psync 命令。
psync 命令需要 3 个组件支持: a、主从节点各自复制偏移量
...
《小丑》 (美国2019年托德·菲利普斯执导电影)
电影背景《小丑》是由托德·菲利普斯执导,杰昆·菲尼克斯、莎姬·贝兹、罗伯特·德尼罗、弗兰西丝·康罗伊、布莱特·卡伦等联袂出演的犯罪剧情片。2019年8月31日在威尼斯电影节主竞赛单元首映。
《小丑》的故事背景设定在1980年代,讲述小丑的起源故事 。该片是华纳和DC所独立开发的影片,与DC扩展宇宙并无关联。
该片于2019年10月4日在美国上映,随即以9620万美元的收入登顶北美周末票房榜,创下北美影史10月份上映影片首周末最高票房纪录。截至2019年11月8日,《小丑》全球票房将超过9.57亿美元,成为了影史上最赚钱的漫改电影
剧情简介亚瑟·弗莱克是一个和母亲住在老旧公寓里,需要靠社会福利组织帮助,不断服用精神疾病药物的小丑。他想成为一个脱口秀演员,但并不成功。人们只是嘲笑他。他在地铁上爆发式地犯下了谋杀案。他的世界,就此一点一滴地开始崩塌了
创作背景导演兼编剧的托德·菲利普斯透露,《小丑》取材并不遵循任何漫画。托德·菲利普斯按照自己的认知,创造了一个故事,没有从漫画书中汲取任何灵感。讲述了小丑这样的角色是如何产生的,这就是托德·菲利普斯感兴趣的地方。该片的故事背景设定在1980 ...
redis数据淘汰机制
书痴者文必工,艺痴者技必良。——蒲松龄
Redis 内存淘汰机制一、五种数据淘汰机制的具体实现
volatile-lru:使用LRU算法进行数据淘汰(淘汰上次使用时间最早的,且使用次数最少的key),只淘汰设定了有效期的key,从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
allkeys-lru:使用LRU算法进行数据淘汰,所有的key都可以被淘汰,从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
volatile-random:随机淘汰数据,只淘汰设定了有效期的key,从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-random:随机淘汰数据,所有的key都可以被淘汰,从数据集(server.db[i].dict)中任意选择数据淘汰
volatile-ttl:淘汰剩余有效期最短的key,从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
二、设置redis的最大存储空间内存的淘汰机制的初衷是为了更好地使 ...
Redis五大数据类型
读不在三更五鼓,功只怕一曝十寒。——郭沫若
一、redis的五大数据类型实现原理说明
1、redis中所有的数据结构都已唯一的key字符串作为名称,然后通过这个唯一的key来获取对应的value
2、不同的数据类型数据结构差异就在于value的结构不一样
字符串(string)1、value的数据结构(数组)
①、字符串value数据结构类似于数组,采用与分配容易空间来减少内存频繁分配
②、当字符串长度小于1M时,扩容就是加倍现有空间
③、如果字符串长度操作1M时,扩容时最多扩容1M空间,字符串最大长度为 512M
2、字符串的使用场景(缓存)
①、字符串一个常见的用途是缓存用户信息,我们将用户信息使用JSON序列化成字符串
②、取用户信息时会经过一次反序列化的过程
list(列表)1、value的数据结构(双向链表)
①、列表的数据结构是双向链表,这意味着插入和删除的时间复杂度是0(1),索引的时间复杂度位0(n)
②、当列表弹出最后一个元素后,该数据结构会被自动删除,内存被回手
2、列表的使用场景(队列,栈)
...
逆地理编码
根据经纬度获取地理位置(逆地理编码)获取高德key
url
https://restapi.amap.com/v3/geocode/regeo?parameters
请求方式
GET
通过key与经纬度来获取地理位置12345678910$("#run").click(function () { $.get({ url: "https://restapi.amap.com/v3/place/around", dataType: "json", data: {key:"04c0e3f51ca3ef8a45ec00ac9e57150c",location:"120.045846,30.231004",radius:100,types:"190000",extensions:"all"}, success: function (data) { console.log(data ...
联合索引的意义,作用,以及使用方式(ORM)
一、为什么要用联合索引1、每多创建一个索引,都会增加操作的开销和磁盘空间的开销。对于大量数据的表,这可是不小的开销。
2、覆盖索引。数据库可以直接通过遍历索引取得数据,而无需回表,这减少了很多的随机io操作。减少io操作,特别的随机io其实是dba主要的优化策略。所以,在真正的实际应用中,覆盖索引是主要的提升性能的优化手段之一。
3、索引列越多,通过索引筛选出的数据越少。如果是复合索引,通过索引筛选出1000w *10% *10% *10%=1w,然后再排序、分页,哪个更高效,一眼便知。
二、联合索引的使用12345678910111213141516171819202122232425262728293031class User(models.Model): #一.常用字段: #1.字符字段 username = models.CharField(max_length=32) #2.数字字段 age = models.IntegerField()#整数 num = models.DecimalField(ma ...
RBAC权限管理
一、RBAC模型是什么?RBAC是一套成熟的权限模型。在传统权限模型中,我们直接把权限赋予用户。而在RBAC中,增加了“角色”的概念,我们首先把权限赋予角色,再把角色赋予用户。这样,由于增加了角色,授权会更加灵活方便。在RBAC中,根据权限的复杂程度,又可分为RBAC0、RBAC1、RBAC2、RBAC3。其中,RBAC0是基础,RBAC1、RBAC2、RBAC3都是以RBAC0为基础的升级。我们可以根据自家产品权限的复杂程度,选取适合的权限模型。
二、基本模型RBAC0解析:RBAC0是基础,很多产品只需基于RBAC0就可以搭建权限模型了。在这个模型中,我们把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。
举例:譬如我们做一款企业管理产品,如果按传统权限模型,给每一个用户赋予权限则会非常麻烦,并且做不到批量修改用户权限。这时候,可以抽象出几个角色,譬如销售经理、财务经理、市场经理等,然后把权限分配给这些角色,再把角色赋予用户。这样无论是分配权限还是以后的修改权限,只需要修改用户和角色的关系,或角色和权限的关系即 ...
《哪吒之魔童降世》国漫的崛起?
《哪吒之魔童降世》是由霍尔果斯彩条屋影业有限公司出品的动画电影,由饺子执导兼编剧,吕艳婷、囧森瑟夫、瀚墨、陈浩、绿绮、张珈铭、杨卫担任主要配音。
该片改编自中国神话故事,讲述了哪吒虽“生而为魔”却“逆天而行斗到底”的成长经历的故事。该片于2019年7月26日在中国内地上映。
2019年9月6日,第十二届中国国际漫画节开幕式暨第16届中国动漫金龙奖颁奖大会于广州举行。《哪吒之魔童降世》获得最佳动画长片奖金奖、最佳动画导演奖、最佳动画编剧奖、最佳动画配音奖
2019年10月8日,电影《哪吒之魔童降世》将代表中国内地参选2020年第92届奥斯卡最佳国际影片(原最佳外语片)。《哪吒之魔童降世》被授予推介委员会特别荣誉推介电影。
2019年1月17日,片方发布“是他,就是他”版预告 。同年5月30日,片方发布首款定档预告及海报 。7月10日,片方发布一组中国风人物海报 。7月13日,该片在成都开展全国首批观影和路演 。7月21日,该片在成都举办千人首映礼 。7月23日,该片与动画电影《西游记之大圣归来》发布联动短片。7月23日,片方在北京举办“做自己的英雄”主题首映礼。
天地灵气孕育出 ...