redis
文章平均质量分 64
fldjsaldkfjoeiaf
这个作者很懒,什么都没留下…
展开
-
缓存雪崩、缓存穿透、缓存击穿
缓存雪崩、缓存穿透、缓存击穿缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。解决方案:缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。给每一个缓存数据增加相应的缓存标记,记录缓存是否失效,如果缓存标记失效,则更新数据缓存。缓存预热互斥锁缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id<=0原创 2021-11-04 09:54:36 · 91 阅读 · 0 评论 -
redis 主从复制的核心原理
redis 主从复制的核心原理通过执行slaveof命令或设置slaveof选项,让一个服务器去复制另一个服务器的数据。主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。全量复制:(1)主节点通过bgsave命令fork子进程进行RDB持久化,该过程是非常消耗CPU、内存(页表复制)、硬盘IO的(2)主节点通过网络将RDB文件发送给从节点,对主从节点的原创 2021-11-04 09:51:23 · 155 阅读 · 0 评论 -
redis集群
主从复制模式主从复制模式中包含一个主数据库实例(master)与一个或多个从数据库实例(slave)客户端可对主数据库进行读写操作,对从数据库进行读操作,主数据库写入的数据会实时自动同步给从数据库。具体工作机制为: 1、slave启动后,向master发送SYNC命令,master接收到SYNC命令后通过bgsave保存快照(RDB持久化),并使用缓冲区记录保存快照这段时间内执行的写命令2、master将保存的快照文件发送给slave,并继续记录执行的写命令3、slave接收到快照文件后,加载快照原创 2021-11-04 09:49:20 · 151 阅读 · 0 评论 -
简述Redis事务实现
简述Redis事务实现1、事务开始MULTI命令的执行,标识着一个事务的开始。MULTI命令会将客户端状态的 flags 属性中打开REDIS_MULTI 标识来完成的。2、命令入队当一个客户端切换到事务状态之后,服务器会根据这个客户端发送来的命令来执行不同的操作。如果客户端发送的命令为MULTI、EXEC、WATCH、DISCARD中的一个,立即执行这个命令,否则将命令放入一个事务队列里面,然后向客户端返回 QUEUED 回复如果客户端发送的命令为 EXEC、DISCARD、WATCH、MUL原创 2021-11-04 09:48:08 · 320 阅读 · 0 评论 -
Redis线程模型、单线程快的原因
Redis线程模型、单线程快的原因Redis基于Reactor(反应器)模式开发了网络事件处理器,这个处理器叫做文件事件处理器 file event handler。这个文件事件处理器,它是单线程的,所以Redis才叫做单线程的模型,它采用IO多路复用机制来同时监听多个Socket,根据Socket上的事件类型来选择对应的事件处理器来处理这个事件。可以实现高性能的网络通信模型,又可以跟内部其他单线程的模块进行对接,保证了Redis内部的线程模型的简单性。文件事件处理器的结构包含4个部分:多个Socket原创 2021-11-04 09:46:37 · 135 阅读 · 0 评论 -
Redis的过期键的删除策略
Redis的过期键的删除策略Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。对于过期键一般有三种删除策略定时删除:在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作;惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,那就返回该键;定期删除:每隔一段时间,程序原创 2021-11-04 09:44:23 · 128 阅读 · 0 评论 -
RDB、AOF
RDB:Redis DataBase在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。优点:1、整个Redis数据库将只包含一个文件 dump.rdb,方便持久化。2、容灾性好,方便备份。3、性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所以是 IO 最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis 的高性能4.相对于数据集大时,比 AO原创 2021-11-04 09:43:35 · 105 阅读 · 0 评论