Redis
文章平均质量分 84
浮生带你学Java
一个工作了14年的Java程序员
展开
-
Redis的持久化机制是怎样的?
在开启混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式化追加的文件的末尾。混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF 的优点,有减低了大量数据丢失的风险。但是,持久化机制也不是绝对可靠的,归根结底Redis还是个缓存,他并不是完全给你做持久化用的,所以还是要有自己的持久化方式,比如双写到数据库。但是他也比RDB要更加靠谱一些。原创 2024-04-20 15:55:29 · 515 阅读 · 0 评论 -
如何用Redis实现乐观锁?
这个命令一旦运行,他会确保只有在 WATCH 监视的键在调用 EXEC 之前没有改变时,后续的事务才会执行。如果自从事务开始以来监视的键被修改过,EXEC 将返回 nil,这表示事务中的命令没有被执行。所谓乐观锁,其实就是基于CAS的机制,CAS的本质是Compare And Swap,就是需要知道一个key在修改前的值,去进行比较。通过这种方式,Redis 保证了只有在监视的数据自事务开始以来没有改变的情况下,事务才会执行,从而实现了乐观锁定。2GET:在事务开始之前,查询你需要的数据。原创 2024-04-09 17:19:19 · 408 阅读 · 0 评论 -
Redis如何实现延迟消息?
当我们要添加一个数据到延迟队列的时候,redission会把数据+超时时间放到zset中,并且起一个延时任务,当任务到期的时候,再去zset中把数据取出来,返回给客户端使用。所以,消息延迟是必然存在的,随着数据量越大延迟越长,延迟个几分钟都是常事儿。而且,在Redis 5.0之前,这个消息是通过PUB/SUB模式发出的,他不会做持久化,至于你有没有接到,有没有消费成功,他不管。基于Redisson的实现方式,是可以解决基于zset方案中的并发重复问题的,而且还能实现方式也比较简单,稳定性、性能都比较高。原创 2024-04-01 13:56:02 · 907 阅读 · 0 评论 -
Redis的持久化机制是怎样的?
一、问题解析典型回答Redis提供了两种持久化的机制,分别是RDB和AOF。RDBRDB是将Redis的内存中的数据定期保存到磁盘上,以防止数据在Redis进程异常退出或服务器断电等情况下丢失。RDB的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复。RDB的缺点是:定期更新可能会丢数据AOFAOF是将Redis的所有写操作追加到AOF文件(Append Only File)的末尾,从而记录了Redis服务器运行期间所有修改操作的详细记录。原创 2024-03-27 17:14:11 · 1121 阅读 · 0 评论 -
介绍一下Redis的集群模式?
当主节点发生故障时,哨兵节点可以自动进行故障转移,选择一个合适的从节点升级为主节点,并通知其他从节点和应用程序进行更新。它会从所有健康的从节点中选举一个新的主节点,并将所有从节点切换到新的主节点,实现自动故障转移。哨兵节点定期向所有主节点和从节点发送PING命令,如果在指定的时间内未收到PONG响应,哨兵节点会将该节点标记为主观下线。当一个节点失去连接或不可达时,Redis Cluster会尝试将该节点标记为不可用,并从可用的从节点中提升一个新的主节点。每个分片都有一个主节点和多个从节点。原创 2024-03-27 17:11:37 · 970 阅读 · 0 评论 -
为什么Redis设计成单线程也能这么快?
Redis的性能很好,除了因为他基于内存、有高效的数据结构等等原因以外,还有一个重要的原因那就是他在单线程中使用多路复用 I/O技术也能提升Redis的I/O利用率。其实,Redis的IO多路复用程序的所有功能都是通过包装操作系统的IO多路复用函数库来实现的。IO多路复用在Linux下包括了三种,select、poll、epoll,抽象来看,他们功能是类似的,但具体细节各有不同。一旦有请求到达,就会交给 Redis 线程处理,这就实现了一个 Redis 线程处理多个 IO 流的效果。原创 2024-03-21 16:19:56 · 402 阅读 · 0 评论 -
Redis 存在线程安全问题吗?为什么?
一个工作了 6 年的粉丝和我说,最近面试的机会确实多了,但是面试难度反而更大了。昨天刚面试的时候被问到:Redis 里面的线程安全性问题 , 没回答上来。如果是急着面试,又没有太多时间去系统性的学习,我建议还是要通过刷一些面试题突击一下。原创 2024-03-06 16:09:48 · 558 阅读 · 0 评论 -
字节一面,Redis 为什么这么快?
在网络层面,Redis 采用多路复用的设计,提升了并发处理的连接数,不过这个阶段,{如图}Server 端的所有 IO 操作,都是由同一个主线程处理的这个时候 IO 的瓶颈就会影响到 Redis 端的整体处理性能。1. 如果采用多线程,对于 Redis 中的数据操作,都需要通过同步的方式来保证线程安全性,这反而会影响到 redis 的性能。不过,具体的数据操作仍然是由主线程来处理的,所以我们可以认为 Redis 对于数据 IO的处理依然是单线程。资料,我根据我从小白到架构师多年的学习经验整理出来了一份。原创 2024-02-29 17:57:56 · 513 阅读 · 0 评论 -
这才是你应该了解的Redis数据结构!
通过这些详细的例子,我们深入了解了Redis的数据结构。当我们在实际项目中选择合适的数据结构时,这些例子将为我们提供有力的指导。希望这篇博文对你加深对Redis数据结构的理解有所帮助。如果你有其他关于Redis的问题,欢迎留言讨论!原创 2024-01-20 10:01:23 · 765 阅读 · 0 评论 -
Redis 存在线程安全问题吗?为什么?
关于线程安全性问题,是一个非常重要,非常重要的知识。虽然我们在实际开发中很少去主动使用线程,但是在项目中线程无处不在,比如Tomcat就是用多线程来处理请求的如果对线程安全不了解,那么很容已出现各种生产事故和莫名其妙的问题。这也是为什么大厂一定会问多线程并发的原因。好的,本期的高手面试系列的文章就到这里结束了。我是 浮生,一个工作了 14 年的 Java 程序员,咱们下期再见。三、粉丝福利最近很多同学问我有没有。原创 2024-01-19 16:46:48 · 1175 阅读 · 0 评论 -
Redis 中的哨兵选举算法是如何实现的?
同时,还会评估实例过往的网络连接情况,如果在一定时间内,Slave 和 Master 经常性断链,而且超出了一定的阈值,也不会考虑。经过筛选后,留下的都是健康的节点了。一旦 Redis 主从集群的某个节点出现故障,而故障节点被其中一个 Sentinel 哨兵节点检测到,但是另外两个节点还没检测到,那三个哨兵节点如何在意见上达成意见上的一致呢?当 Redis 集群中的 Master 节点出现故障,哨兵节点检测到以后,会从 Redis 集群中的其他 Slave 节点选举出一个作为新的 Master。原创 2024-01-13 16:20:30 · 892 阅读 · 0 评论 -
Redis 和 Mysql 如何保证数据一致性
Redis 里面,当数据发生变化的时候,需要同时更新 Redis 和 Mysql,由于更新是有先。如果是先删除缓存,再更新数据库,理想情况是应用下次访问 Redis 的时候,发现 Redis。如果先更新数据库,再更新缓存,如果缓存更新失败,就会导致数据库和 Redis 中的数。里面的数据是空的,就从数据库加载保存到 Redis 里面,那么数据是一致的。先不用慌,技术是为业务服务的,所以不同的业务场景,对于技术的选择和方案的设计。都是不同的,所以这个时候,可以反问面试官,具体的业务场景是什么?原创 2023-12-18 11:45:55 · 817 阅读 · 1 评论