Redis重点讲解
文章平均质量分 71
关注redis实际使用过程中需要注意的关键点
java学僧
这个作者很懒,什么都没留下…
展开
-
Redis持久化过程中,有新写入操作会怎样?----Redis写时复制(copy-on-write)策略
RDB持久化:bgsave触发,Redis调用fork()函数,创建一个子进程(子进程与父进程共内存),子进程执行持久化操作,将内存中的缓存持久化到一个rdb临时文件,待到持久化完成,临时文件替换旧的dump.rdb文件。自此一次RDB持久化操作就完成了。AOF持久化:AOF 持久化时,会将新写入的命令放入aof_buff中,然后检测时间(这个时间就是redis.conf中配置的aof执行频率),再决定是否持久化。当发生aof日志重写时,Redis同样会调用fork()函数,创建一个子进程,对当前内存中.原创 2021-04-21 14:42:01 · 2719 阅读 · 3 评论 -
Redis缓存过期机制,内存淘汰机制
在Redis中有设置过期时间的键值对是如何实现过期删除的呢?在使用redis的时候有没有想过Redis内存不够用的临界点是什么呢?Redis内存不够用时会发生什么呢?Redis缓存过期机制Redis中缓存过期机制包括惰性删除和定期删除:Redis使用的策略是惰性删除+定时删除并用。惰性删除很好理解,所谓的惰性删除其实就是Redis不主动删除过期的键值对,而是在客户端访问的时候去检查该键值对是否过期,若过期,Redis则会删除该键值对并返回null给客户端。惰性删除的情况下,Redis在清除原创 2021-04-21 10:33:27 · 255 阅读 · 0 评论 -
Redis的数据类型及使用场景
redis原创 2021-04-19 17:40:53 · 166 阅读 · 0 评论 -
springboot项目中redis客户端(Jedis、Lettuce、Redisson)
一、redis客户端的对比1)、JedisJedis作为Redis官方推荐的一款客户端,也算是简单好用,基础功能齐全,在中小型项目中还是很好用的,但是Jedis是直连模式,在多个线程间共享一个Jedis实例时是线程不安全的。– 为啥不安全呢?不是说Redis是单线程,是世界上最安全的吗?看官不要激动,这里说的不安全不是说Redis处理数据不安全,而是Jedis向Redis服务器提交数据和从Redis上拿数据不安全,简单阅读Jedis的源码就不难发现,在单个Jedis实例中,向Redis推数据的写流(原创 2021-03-25 16:33:14 · 4266 阅读 · 0 评论 -
Redis双写一致性问题
1、缓存的最终一致性从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存。因此,接下来讨论的思路不依赖于给缓存设置过期时间这个方案。2、数据更新策略(1)先更新数据库,再更新缓存(不可行)存在问题:1)当写操作是否频繁的情况下(多于读操作),可能用户根本就没有去读缓存数据就转载 2021-02-20 14:26:46 · 3029 阅读 · 0 评论 -
Redis缓存穿透、缓存击穿、缓存雪崩区别和解决方案
1、什么是缓存穿透,缓存击穿,缓存雪崩缓存穿透: key对应的数据在数据源并不存在,并且没有的数据也无法从redis缓存中获取,这时所有对这类key的请求都会直接请求到数据源,从而可能压垮数据源;比如一个不存在的商品id获取商品详情,数据库和redis缓存中都没有,每次请求就会去数据库中去查询,若被黑客利用进行攻击,极有可能压垮数据库。代码示例及解决方法:// 一、若key对应的数据在数据源中不存在,我们在redis缓存中存儲为空,//这个空结果的过期时间尽量设置短些,最好不要超过五分钟,避免下原创 2021-02-20 10:29:21 · 357 阅读 · 0 评论 -
Redis配置详解
1、一些参数解释somaxconn:在文件/proc/sys/net/core/somaxconn中记录的linux系统参数,定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128;该参数限制了接收新 TCP 连接侦听队列的大小。对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。大多数环境这个值建议增加到 1024 或者更多。对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,我们可以看到端口的状态由LISTE原创 2021-02-19 16:15:20 · 347 阅读 · 0 评论 -
Redis哨兵模式原理讲解
1、哨兵机制图解2、哨兵机制的作用监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。1 ) 每个哨兵节点每10秒会向主节点和从节点发送info命令获取最新拓扑结构图,哨兵配置时只要配置对主节点的监控即可,通过向主节点发送info,获取从节点的信息,并当有新的从节点加入时可以马上感知到2 )每个哨兵节点每隔2秒会向redis数据节点的指定频道上发送该哨兵节点对于主节点的判断以及当前哨兵节点的信息,同时每个哨兵节点也会订阅该频道,来了解其原创 2021-02-18 21:46:49 · 402 阅读 · 0 评论 -
redis缓存过期、内存淘汰机制
1、redis缓存过期机制Redis可以通过设置一个过期时间expire来处理缓存,Redis删除过期缓存有两种方法:定期删除:Redis会随机抽查key,如果过期则删除,默认配置为1秒10次,也可以提高频率,但是频率越高,cpu压力越大# 定期删除频率配置,表示1秒10次hz 10惰性删除:表示当用户读取Redis缓存时,会检查key是否过期,如果过期则直接删除,这种方法会消耗大量内存去存已过期的键值对总结:以上两种方法优缺很明显,Redis使用的缓存过期机制是:惰性删除加上定期删除,原创 2021-02-18 08:59:24 · 410 阅读 · 0 评论 -
redis主从复制(读写分离)
1、主从复制服务器架构图2、主从复制的作用数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。高可用基石:主从复制还是原创 2021-02-14 20:14:25 · 461 阅读 · 1 评论 -
reids持久化机制(RDB与AOF)
1、数据持久化过程由上图可知:redis发生故障,只要调用了write系统函数就可以完成数据持久化,因为后两步由操作系统完成;但是操作系统发生故障,则必须以上全部步骤都走完才能算持久化完成。2、RDB机制RDB是把数据以快照的形式保存在磁盘上,既每隔一端时间将redis当前内存的数据备份到dump.rdb文件中,这是的dump.rdb文件就相当于这一时刻的快照。对于这个备份的触发机制有三种:save、bgsave、自动化save触发方式:该命令会阻塞当前Redis服务器,执行save命令期间转载 2021-02-07 12:49:09 · 263 阅读 · 0 评论