自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

渣渣

一只菜鸟

  • 博客(75)
  • 资源 (3)
  • 收藏
  • 关注

转载 RPC与Restful比较

转自:https://developer.51cto.com/art/201906/597963.htm一、简述RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有:应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。目前流行的开源 RPC 框架还是比较多的,有阿里

2020-07-31 21:20:13 7550 1

原创 微信红包算法

public static double getRandomMoney(RedPackage _redPackage) { // remainSize 剩余的红包数量 // remainMoney 剩余的钱 if (_redPackage.remainSize == 1) { _redPackage.remainSize--; return (double) Math.round(_redPackage.remainMoney * 100) / 10.

2020-07-31 19:07:02 680

原创 哪些字段适合建索引

转自:https://blog.csdn.net/maliao1123/article/details/52431144/经常需要进行更新操作的属性1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字.

2020-07-31 17:57:36 2067

原创 MySQL-回表查询与索引覆盖

转自:https://www.cnblogs.com/yanggb/p/11252966.htmlmysql中的回表查询与索引覆盖了解一下MySQL中的回表查询与索引覆盖。回表查询要说回表查询,先要从InnoDB的索引实现说起。InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Secondary Index)。InnoDB的聚集索引InnoDB聚集索引的叶子节点存储行记录,因此InnoDB必须要有且只有一个聚集索引。1.如果表定义了.

2020-07-31 17:54:13 381

原创 redis zrange 与 zrangebyscore的区别

转自:https://blog.csdn.net/jfqqqqq/article/details/102858508一句话:zrange根据索引序列查询,zrangebyscore根据score值查询。可直接看本文结论。前言想做一个在redis中获取数据时分页的功能,从网上查找到了zrange和zrangebyscore两个函数,对于这两个函数的理解,在刚刚读完官方文档后,还是不太懂:zrange: “ordered from highest to lowest score”https:..

2020-07-31 16:56:26 1488

原创 Redis实现延迟队列

有赞延迟队列设计延迟队列,顾名思义它是一种带有延迟功能的消息队列。 那么,是在什么场景下我才需要这样的队列呢?背景我们先看看以下业务场景:当订单一直处于未支付状态时,如何及时的关闭订单,并退还库存? 如何定期检查处于退款状态的订单是否已经退款成功? 新创建店铺,N天内没有上传商品,系统如何知道该信息,并发送激活短信?等等为了解决以上问题,最简单直接的办法就是定时去扫表。每个业务都要维护一个自己的扫表逻辑。 当业务越来越多时,我们会发现扫表部分的逻辑会非常类似。我们可以考虑将这部分逻

2020-07-30 20:13:33 750

原创 懒加载Lazy Loading

“懒加载”也被叫作“延迟价值”,它的核心思想是把对象的实例化延迟到真正调用该对象的时候,这样做的好处是可以减轻大量对象在实例化时对资源的消耗,而不是在程序初始化的时候就预先将对象实例化。另外“懒加载”可以将对象的实例化代码从初始化方法中独立出来,从而提高代码的可读性,以便于代码能够更好地组织。最典型的一个应用“懒加载”的例子是在对象的getter方法中实例化对象,例如getter方法被重写,使得在第一次调用getter方法时才实例化对象并将实例化的对象返回,并且需要通过判断对象是否为空来防止对象重复实例

2020-07-30 14:01:52 372

原创 算法:由0-5随机数设计0-8随机数

首先生成两个0-5的随机数a和b。由a和b组成两位六进制数ab,(00-55 由于a和b都是随机的,则00-55范围内的数也是随机的)。将ab化成十进制c=a*6+b。将出现整行的模9,未出现整行的过滤掉即可。/** * 00-55 六进制 * 0-35 * 0 1 2 3 4 5 6 7 8 * 9 10 11 12 13 14 15 16 17 * 18 19 20 21 22 23 24 25 26 * 27 28 29 30 31 32 33 34

2020-07-30 13:46:32 2375

原创 Redis-过期Key删除/淘汰Kry策略

首先要区分master主节点和slave从节点。为什么呢?因为slave过期key的删除策略和master过期key的删除策略是不同的。一,redis主节点过期key的删除策略1,定时删除:在设置键的过期时间的同时,创建一个timer,让定时器在键的过期时间到达时,立即执行对键的删除操作。(主动删除)优缺点:对内存友好,但是对cpu时间不友好,有较多过期键的而情况下,删除过期键会占用相当一部分cpu时间。2,定期删除:每隔一段时间就对数据库进行一次检查,删除里面的过期键。(主..

2020-07-30 11:40:59 719

原创 Redis分片

分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集。本文第一部分将向你介绍分片的概念,第二部分将向你展示 Redis 分片的可选方案。一、分片能做什么Redis 的分片承担着两个主要目标:允许使用很多电脑的内存总和来支持更大的数据库。没有分片,你就被局限于单机能支持的内存容量。 允许伸缩计算能力到多核或多服务器,伸缩网络带宽到多服务器或多网络适配器。二、分片基础有很多不同的分片标准(criteria)。假想我们有 4 个 R

2020-07-30 11:09:14 2621

转载 Redis实现消息队列和订阅发布模式

在项目中用到了redis作为缓存,再学习了ActiveMq之后想着用redis实现简单的消息队列,下面做记录。  Redis的列表类型键可以用来实现队列,并且支持阻塞式读取,可以很容易的实现一个高性能的优先队列。同时在更高层面上,Redis还支持"发布/订阅"的消息模式,可以基于此构建一个聊天系统。一、redis的列表类型天生支持用作消息队列。(类似于MQ的队列模型--任何时候都可以消费,一条消息只能消费一次)  list操作参考:https://www.cnblogs.com/qlqwjy/.

2020-07-30 10:18:27 521

原创 Redis异步消息队列

一、异步消息队列介绍个人认为消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。使用场景的话,举个例子:假设用户在你的软件中注册,服务端收到用户的注册请求后,它会做这些操作:1.校验用户名等信息,如果没问题会在数据库中添加一个用户记录2.如果是用邮箱注册会给你发送一封注册成功的邮件,

2020-07-29 16:06:30 912

原创 redis客户端-服务端协议(RESP协议)

简介:    redis客户端与服务端通信,使用RESP(REdis Serialization Protocal,redis序列化协议)协议通信,该协议是专门为redis设计的通信协议,但也可以用于其它客户端-服务器通信的场景。    redis客户端与服务端通信,使用RESP(REdis Serialization Protocal,redis序列化协议)协议通信,该协议是专门为redis设计的通信协议,但也可以用于其它客户端-服务器通信的场景。RESP协议的设计初衷如下:实现简单..

2020-07-29 13:02:55 743

原创 一致性哈希和哈希槽对比

背景随着memcache和redis的出现,更多人认识到了一致性哈希。一致性哈希用于解决分布式缓存系统中的数据选择节点存储问题和数据选择节点读取问题以及在增删节点后减少数据缓存的消失范畴,防止雪崩的发生。哈希槽是在redis cluster集群方案中采用的,redis cluster集群没有采用一致性哈希方案,而是采用数据分片中的哈希槽来进行数据存储与读取的。一致性哈希一致性hash是一个0-2^32的闭合圆,(拥有2^23个桶空间,每个桶里面可以存储很多数据,可以理解为s3的存储桶)所

2020-07-29 11:50:01 1367

原创 Redis架构模式

一、单机版问题:1、内存容量有限 2、处理能力有限 3、无法高可用。主从复制 Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。 特点: 1、master/sla

2020-07-29 11:43:08 157

原创 Redis 架构之 cluster

一、简介当数据量过大,一个主机放不下的时候,就需要对数据进行分区,将key按照一定的规则进行计算,并将key对应的value分配到指定的redis实例上,这样的模式简称redis集群(Cluster)。 redis分区也称redis分片,或者redis集群。 从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。二、结构特点所有的redis节点彼此互联(PING-PANG)机制,内

2020-07-29 11:42:43 182

原创 解决Redis缓存雪崩、穿透、并发、预热、击穿、热点Key等问题

缓存雪崩数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。比如一个雪崩的简单过程:1、redis集群大面积故障2、缓存失效,但依然大量请求访问缓存服务redis3、redis大量失效后,大量请求转向到mysql数据库4、mysql的调用量暴增,很快就扛不住了,甚至直接宕机5、由于大量的应用服务依赖mysql和redis的服务,这个时候很快会演变成各服务器集群的雪崩,最后网站彻底崩溃。image如何

2020-07-29 11:18:13 515

原创 一致性hash算法

一致性Hash算法背景  一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。  但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性has

2020-07-28 19:10:54 113

原创 Redis哈希槽

从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。Redis 集群没有使用一致性 hash,是引入了哈希槽的概念。其结构特点: 1、所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。 2、节点的fail是通过集群中超过半数的节点检测失效时才生效。 3、客户端与redis节点直连,不需要中间proxy层....

2020-07-28 16:53:42 503

原创 Elasticsearch原理

小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节。但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。倒排索引吕老师:但是我让你说出带“前”字的诗句,由于没有索引,你只能遍历脑海中所有诗词,当你的脑海中诗词量大的时候,就很难在短时间内得到结果了。

2020-07-28 14:35:32 107

原创 防止恶意请求刷接口

1.增设图文验证码2.IP标记在redis数据库db0中新建一个名为rd_sms_request_count表,表结构:Ip:客户请求的ipSuccess_count:成功次数Failure_count:失败次数Is_close:是否已经加入到防火墙黑名单,1是 0否 ,默认0。结合业务,判单哪个ip是恶意的,每当一个ip访问接口,按照代码返回码,如果是都是错误请求,添加到redis数据库中的Failure_count字段加1,如果都是返回正确结果,那么Success_c..

2020-07-28 13:34:59 1869

原创 Redis之渐进式rehash

渐进式 rehash上一节说过, 扩展或收缩哈希表需要将ht[0]里面的所有键值对 rehash 到ht[1]里面, 但是, 这个 rehash 动作并不是一次性、集中式地完成的, 而是分多次、渐进式地完成的。这样做的原因在于, 如果ht[0]里只保存着四个键值对, 那么服务器可以在瞬间就将这些键值对全部 rehash 到ht[1]; 但是, 如果哈希表里保存的键值对数量不是四个, 而是四百万、四千万甚至四亿个键值对, 那么要一次性将这些键值对全部 rehash 到ht[1]的话...

2020-07-28 13:21:47 600

原创 Redis之rehash操作

http://redisbook.com/index.htmlrehash随着操作的不断执行, 哈希表保存的键值对会逐渐地增多或者减少, 为了让哈希表的负载因子(load factor)维持在一个合理的范围之内, 当哈希表保存的键值对数量太多或者太少时, 程序需要对哈希表的大小进行相应的扩展或者收缩。扩展和收缩哈希表的工作可以通过执行 rehash (重新散列)操作来完成, Redis 对字典的哈希表执行 rehash 的步骤如下:为字典的ht[1]哈希表分配空间, 这个哈希表的空间大小..

2020-07-28 12:16:49 950

原创 Redis之跳跃表实现

http://redisbook.com/index.html跳跃表的实现Redis 的跳跃表由redis.h/zskiplistNode和redis.h/zskiplist两个结构定义, 其中zskiplistNode结构用于表示跳跃表节点, 而zskiplist结构则用于保存跳跃表节点的相关信息, 比如节点的数量, 以及指向表头节点和表尾节点的指针, 等等。图 5-1 展示了一个跳跃表示例, 位于图片最左边的是zskiplist结构, 该结构包含以下属性:head...

2020-07-28 11:54:50 444

原创 Redis—字符串和SDS

一、字符串字符串的实现代码在sds.c和sds.h文件中。1.1 字符串介绍字符串是Redis中最为常见的数据存储类型,其底层实现是简单动态字符串sds(simple dynamic string),是可以修改的字符串。它类似于Java中的ArrayList,它采用预分配冗余空间的方式来减少内存的频繁分配。如图中所示,内部为当前字符串实际分配的空间 。其中capacity是最大容量,len是实际长度,一般要高于实际字符串长度 len。当字符串长度小于 1M 时,扩容都是加倍现

2020-07-27 21:16:33 364

原创 fail-fast与fail-safe工作机制

前言在Collection集合的各个类中,有线程安全和线程不安全的两大类版本。对于线程不安全的类,并发情况下可能会出现fail-fast(快速失败),而线程安全的类,可能会出现fail-safe(安全失败)并发修改当一个或多个线程正在遍历一个集合Collection的时候(Iterator遍历,增强for循环也属于迭代器遍历,使用普通索引进行遍历不会抛出异常),而此时另一个线程修改了这个集合的内容(如添加,删除或者修改)这就是并发修改的情况。fail-fast快速失败fail-fast

2020-07-27 20:13:15 273

原创 MySQL两个字段都建立索引 使用情况

做为一个开发者,关于MySQL的索引是必不可少的一个问题比如一条SQL查询:select * from userstatic where nick like "辛巴%" and rip=3726854906;可能问到的问题有:1、如果nick不是索引,rip是索引,这样的条件顺序会不会有问题? 这个问题比较简单,MySQL本身会对条件和索引进行判断,这样写可以用到索引,没有问题。2、如果nick和rip都是索引,这样写有没有问题?书写SQL语句的时候,我们不用在意条件的...

2020-07-26 17:58:25 2451

原创 Java之读写锁ReadWriteLock实现

一、为什么需要读写锁?与传统锁不同的是读写锁的规则是可以共享读,但只能一个写,总结起来为:读读不互斥,读写互斥,写写互斥,而一般的独占锁是:读读互斥,读写互斥,写写互斥,而场景中往往读远远大于写,读写锁就是为了这种优化而创建出来的一种机制。注意是读远远大于写,一般情况下独占锁的效率低来源于高并发下对临界区的激烈竞争导致线程上下文切换。因此当并发不是很高的情况下,读写锁由于需要额外维护读锁的状态,可能还不如独占锁的效率高。因此需要根据实际情况选择使用。二、一个简单的读写锁实现根据上面理论可以利用两

2020-07-26 17:46:47 522

原创 浅谈Java中的各种锁

在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比

2020-07-26 13:08:21 130

原创 进程间通信(IPC)之内存映射mmap和共享内存shm

一、共享内存shm1 概念:多个进程的地址空间都映射到同一块物理内存,这样多个进程都能看到这块物理内存,实现进程间通信,而且不需要数据的拷贝,所以速度最快。二、内存映射mmap1 前言:先介绍一下普通的读写文件的原理,进程调用read/write系统调用后会陷入内核,内核开始读写文件,假设内核是在读文件,内核先把文件读取到内核缓冲区,然后把内核缓冲区的数据拷贝到用户缓冲区,实际上整个过程拷贝了两次数据,即先从文件到内核缓冲区,再从内核缓冲区到用户缓冲区;2 概念:把某个文件映射到进程的地

2020-07-26 11:15:47 855

原创 进程间通信&线程间通信

一、多进程:首先,先来讲一下fork之后,发生了什么事情。由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是新进程(子进程)的进程 id。将子进程id返回给父进程的理由是:因为一个进程的子进程可以多于一个,没有一个函数使一个进程可以获得其所有子进程的进程id。对子进程来说,之所以fork返回0给它,是因为它随时可以调用getpid()来获取自己的pid;也可以调用getppid()来获取父进程的id

2020-07-26 10:58:54 2311

原创 TLB表作用及特点

TLB:Translation Lookaside Buffer.根据功能可以译为快表,直译可以翻译为旁路转换缓冲,也可以把它理解成页表缓冲。里面存放的是一些页表文件(虚拟地址到物理地址的转换表)。当处理 器要在主内存寻址时,不是直接在内存的物理地址里查找的,而是通过一组虚拟地址转换到主内存的物理地址,TLB就是负责将虚拟内存地址翻译成实际的物理内存地址,而CPU寻址时会优先在TLB中进行寻址。处理器的性能就和寻址的命中率有很大的关系。映射机制必须使一个程序能断言某个地址在其自己的进程空间或地址空间

2020-07-26 10:12:56 3049

原创 HTTPS 客户端验证 服务端证书流程

证书预置和申请1:客户端浏览器会预置根证书, 里面包含CA公钥2:服务器去CA申请一个证书3: CA用自己的签名去签一个证书,指纹信息保存在证书的数字摘要里面, 然后发送给服务器一次访问流程(简化)1: 客户端 sayHello2: 服务器返回证书3-1: 客户端验证证书内容有效性(过期时间, 域名是否相同等)3-2: 验证证书的有效性 (是否被串改), 通过本地根证书的CA公钥解密数字摘要,看是否匹配。3-3:如果数字签名验证通过, 就可以使用服务器证书里面提供的公钥进行下一步..

2020-07-25 13:18:01 3219

转载 GET请求里的body问题

故事还得从一个bug说起。今天有人问我,为什么发到后端的请求400了,我说肯定是参数不对,你去检查检查GET、POST之类的方法写没写对,要么就是字段没对上,无非是这几个问题。然后他说检查过了,没问题啊;我不太相信,但是看了看前端发送的请求,好像确实没啥问题:我说既然这样,那肯定是后端写错了,但后端说他已经用postman测过了,肯定没问题。这就很有意思了。于是我要来了后端的代码:不出所料,后端把GET请求里的参数当成body的内容了,把@RequestBody改成@RequestParam应该就没问

2020-07-25 11:58:56 14163 1

转载 HTTP幂等性

https://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html理解HTTP幂等性基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消

2020-07-25 11:35:13 787

原创 Redis哨兵机制

https://www.jianshu.com/p/06ab9daf921d主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。一、哨兵模式概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。这里的哨兵有两个作用

2020-07-24 21:12:11 172

转载 Redis主从复制

Redis主从复制原理总结和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。全量同步Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:- 从服务器连接主服务器,发送SYNC命令;- 主服务器接收到...

2020-07-24 20:45:28 122

原创 Redis淘汰机制

volatile-lru 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰volatile-ttl 从已设置过期时间的数据集中挑选将要过期的数据淘汰volatile-random从已设置过期时间的数据集中任意选择数据淘汰allkeys-lru从所有数据集中挑选最近最少使用的数据淘汰allkeys-random从所有数据集中任意选择数据进行淘汰noeviction禁止驱逐数据...

2020-07-24 20:40:16 52

原创 为什么说Redis是单线程的&Redis为什么这么快!

一、前言近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不常见的概念,都与我们的缓存服务器相关,一般常用的缓存服务器有Redis、Memcached等,而笔者目前最常用的也只有Redis这一种。如果你在以前面试的时候还没有遇到过面试官问你《为什么说Redis是单线程的以及Redis为什么这么快!》,那么你看到这篇文章的时候,你应该觉得是一件很幸运的事情!如果你

2020-07-24 18:57:08 592

原创 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级

今天给大家整理一篇关于Redis经常被问到的问题:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等概念的入门及简单解决方案。一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存正常从Redis中获取,示意图如下:缓存失效瞬间示意图如下:

2020-07-23 22:37:58 211

xampp-win32-5.6.8-0-VC11-installer.exe

xampp-win32-5.6.8-0-VC11-installer.exe。

2019-07-17

burpsuite_free_v1.7.24.jar

burpsuite_free_v1.7.24.jar。

2019-07-17

jstl standard urlrewritefilter

jstl standard urlrewritefilter jar包。java的开发。。。

2018-03-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除