![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 93
IQ50zzzZ
开心快乐每一天
展开
-
【Redis教程0x0F】Redis实战篇
延迟队列是指把当前要做的事情,往后推迟一段时间再做。在 Redis 可以使用有序集合(ZSet)的方式来实现延迟消息队列的,ZSet 有一个 Score 属性可以用来存储延迟执行的时间。使用命令就可以一直往内存中生产消息。再利用 zrangebysocre 查询符合条件的所有待处理的任务, 通过循环执行队列任务即可。原创 2024-04-05 17:25:47 · 898 阅读 · 0 评论 -
【Redis教程0x0E】详解三种常见的缓存更新策略
本篇博客详解了3种常见的缓存更新策略,这也是面试时比较高频的问题,希望大家都能掌握,尤其是Cache Aside旁路缓存策略。原创 2024-04-04 09:00:00 · 980 阅读 · 0 评论 -
【Redis教程0x0D】详解Redis的线程模型
Redis 单线程指的是**「接收客户端请求->解析请求 ->进行数据读写等操作->发送数据给客户端」**这个过程是由一个线程(主线程)来完成的,这也是我们常说 Redis 是单线程的原因。之所以 Redis 为「关闭文件、AOF 刷盘、释放内存」这些任务创建单独的线程来处理,是因为这些任务的操作都是很耗时的,如果把这些任务都放在主线程来处理,那么 Redis 主线程就很容易发生阻塞,这样就无法处理后续的请求了。原创 2024-04-03 09:00:00 · 1278 阅读 · 0 评论 -
【Redis教程0x0C】数据库与缓存的一致性保证
首先明确一点,在一般业务场景中,最推荐的保证数据库和缓存一致性的方案还是先更新数据库,再删除缓存。并且给缓存设置一个过期时间。当然,上面的方案在每次更新数据的时候,都会删缓存,这势必会影响缓存的命中率。所以如果在对缓存命中率很高的场景下,可以采用更新数据库+更新缓存的方案。当然这个方案会导致在两个线程并发更新时数据不一致的问题,为了避免,可以有以下两种方案:(提高了缓存命中率,但降低了性能)在更新缓存前加个分布式锁,保证同一时间只运行一个请求更新缓存,会对性能造成影响;原创 2024-04-02 09:30:00 · 838 阅读 · 0 评论 -
【Redis教程0x0B】一篇搞懂Redis的缓存雪崩、缓存击穿、缓存穿透
缓存异常会面临的三个问题:缓存雪崩、击穿和穿透。其中,缓存雪崩和缓存击穿主要原因是数据不在缓存中,而导致大量请求访问了数据库,数据库压力骤增,容易引发一系列连锁反应,导致系统奔溃。不过,一旦数据被重新加载回缓存,应用又可以从缓存快速读取数据,不再继续访问数据库,数据库的压力也会瞬间降下来。因此,缓存雪崩和缓存击穿应对的方案比较类似。而缓存穿透主要原因是数据既不在缓存也不在数据库中。因此,缓存穿透与缓存雪崩、击穿应对的方案不太一样。原创 2024-04-01 10:00:00 · 898 阅读 · 0 评论 -
【Redis教程0x0A】详解Redis哨兵机制
Redis 在 2.8 版本以后提供的哨兵(Sentinel)机制,它的作用是实现主从节点故障转移。它会监测主节点是否存活,如果发现主节点挂了,它就会选举一个从节点切换为主节点,并且把新主节点的相关信息通知给从节点和客户端。监控、选主、通知。哨兵节点通过 Redis 的发布者/订阅者机制,哨兵之间可以相互感知,相互连接,然后组成哨兵集群,同时哨兵又通过 INFO 命令,在主节点里获得了所有从节点连接信息,于是就能和从节点建立连接,并进行监控了。1、第一轮投票:判断主节点下线。原创 2024-03-31 12:15:00 · 1039 阅读 · 1 评论 -
【Redis教程0x09】详解Redis主从复制
全量复制基于长连接的命令传播增量复制。主从服务器第一次同步的时候,就是采用全量复制,此时主服务器会两个耗时的地方,分别是生成 RDB 文件和传输 RDB 文件。为了避免过多的从服务器和主服务器进行全量复制,可以把一部分从服务器升级为「经理角色」,让它也有自己的从服务器,通过这样可以分摊主服务器的压力。第一次同步完成后,主从服务器都会维护着一个长连接,主服务器在接收到写操作命令后,就会通过这个连接将写命令传播给从服务器,来保证主从服务器的数据一致性。原创 2024-03-29 11:15:00 · 1257 阅读 · 2 评论 -
【Redis教程0x08】详解Redis过期删除策略&内存淘汰策略
Redis 使用的过期删除策略是「惰性删除+定期删除」,删除的对象是已过期的 key。原创 2024-03-28 12:48:12 · 2502 阅读 · 1 评论 -
【Redis教程0x07】Redis持久化之AOF日志
本篇博客我们详解了Redis持久化策略之AOF,同时也介绍了AOF和RDB混合的策略。原创 2024-03-27 18:44:46 · 1218 阅读 · 1 评论 -
【Redis教程0x06】Redis持久化之RDB快照
Redis 可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis 创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis 主从结构,主要用来提高 Redis 性能),还可以将快照留在原地以便重启服务器的时候使用。#在900秒(15分钟)之后,如果至少有1个key发生变化,Redis就会自动触发bgsave命令创建快照。save 900 1。原创 2024-03-25 15:47:28 · 1057 阅读 · 1 评论 -
【Redis教程0x05】详解Redis的数据结构
本篇博客我们详解了Redis的8种底层数据结构,希望对大家学习Redis有所帮助。原创 2024-03-25 13:30:00 · 710 阅读 · 1 评论 -
【Redis教程0x04】详解Redis的4个高级数据类型
Redis HyperLogLog是Redis 2.8.9新增的数据类型,是一种用于基数统计的数据集合类型,基数统计就是指统计一个集合中不重复的元素个数。但要注意的是,HyperLogLog的统计规则是基于概览完成的,误算率为0.81%。简单来说,HyperLogLog就是提供不精确的去重计数。HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的内存空间总是固定的、并且是很小的。只需要 12k 的空间就能存储接近**2^64**个不同元素。原创 2024-03-24 14:52:52 · 807 阅读 · 1 评论 -
【Redis教程0x03】详解Redis的基本数据类型
字符串String是Redis中最基本也是我们最常用的数据类型,它是基于key-value结构,key是唯一标识,value是具体的值。String是一种二进制安全的数据类型,其value可以用来存储任何类型的数据比如字符串、整数、浮点数、图片(图片的base64编码或者解码或者url)、序列化后的对象。value最多可以容纳的数据长度是512MB。List列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部向List列表添加元素(所以这是个双向链表)。原创 2024-03-24 10:00:00 · 1089 阅读 · 1 评论 -
【Redis教程0x02】入门:Redis的最基本操作&Java中使用Redis
本篇博客为大家简单介绍了Redis的数据类型,以及在Java中如何连接Redis。原创 2024-03-23 13:15:00 · 1120 阅读 · 1 评论 -
【Redis教程0x01】入门:Windows下安装和启动Redis
Redis 是互联网技术领域中使用最广泛的存储中间件,它是motectionaryervice 三个单词中加粗字母的组合。Redis 以超高的性能、完美的文档、简洁的源码著称,国内外很多大型互联网公司都在用。它的版本更新非常的快,功能也越来越强大,最初只是用来作为缓存数据库,现在已经可以用它来实现消息队列了。同时,Redis也是现在后端面试几乎必问的技术栈了。原创 2024-03-22 19:44:49 · 1456 阅读 · 1 评论