Redis
文章平均质量分 97
Redis学习笔记
小熊不吃香菜
能做就做,不多说话
展开
-
延时队列的三种实现方案
在分布式系统中,延时队列(Delay Queue)是一个常见的工具,它允许程序能够按照预定时间处理任务(类似于定时任务)。延时队列允许我们将任务延时到指定的时间执行,这样就可以将任务按照优先级和执行时间来处理,从而提高系统的可靠性和性能。延时队列是一种特殊的队列相比于普通队列(先进先出)最大的区别就体现在其延时属性上。在这种队列中,每个元素都有一个预设的延时时间,只有当这个时间到期后,元素才可以被消费。这种机制使得延时队列可以用于实现定时任务、消息重试等功能。原创 2023-05-02 22:08:15 · 6750 阅读 · 1 评论 -
Redis底层数据结构分析(二) —— Hash结构
Redis中的Hash数据结构是一种键值对的集合可以用来存储对象的属性或者其他类型的映射关系。也就是说每个Hash可以存储多个键值对,如图所示为Hash的存储结构:field 和 value 共同组成了 key 所对应的 value。比如当我们要存储用户对象时就可以使用Hash结构,一个用户有多个属性字段,如:姓名,年龄等。所以映射关系为:命令说明返回值用于为哈希表中的单个 field-value 设置值,如果 key 值不存在,会先创建,如果该 field 域已存在,则将覆盖旧值。原创 2023-04-05 13:02:13 · 652 阅读 · 0 评论 -
Redis底层数据结构分析(一) —— SDS动态字符串
Redis官网文档Redis源码仓库Redis是一个基于内存的高性能键值存储系统。Redis支持多种数据类型,包括字符串、哈希、列表、集合、有序集合等。每种数据类型在底层都有对应的数据结构实现。SDS动态字符串双向链表压缩链表ziplist哈希表hashtable跳表skiplist整数数组intset快速列表quicklist紧凑列表listpack💡 Tips:官网说明💡 Tips:对应文件。原创 2023-04-02 21:37:43 · 864 阅读 · 0 评论 -
缓存预热、击穿、雪崩、穿透
Redis作为目前使用较为广泛的缓存,可以有效提高应用程序的性能。但是,缓存也会带来一些挑战,例如缓存预热、缓存雪崩、缓存击穿和缓存穿透等问题。在本篇博客中,我们将深入探讨这些问题,并介绍如何去解决。先介绍一下查询请求的正常执行流程如果Redis中存在数据,则直接返回给用户。否则,去数据库中查找数据,找到后写入Redis缓存并将查询结果返回给用户,没找到就报错。注:这里我写的是先写缓存在返回数据给用户(4和5)。个人理解应该根据不同的应用场景和业务需求进行决定。原创 2023-03-23 09:28:44 · 624 阅读 · 0 评论 -
Redis剖析 — 过期策略和内存淘汰机制
Redis是当前一款较受欢迎的NoSQL数据库,其基于内存运行,性能高效。既然是基于内存运行的,那么它就会有存储上限,最高也就是物理内存的容量。当超出设定的Redis内存时,要么释放内存,那么报OOM(内存溢出)的异常了。那么Redis 是如何处理过期数据的?当内存不够用时 Redis 又是如何处理的?在本篇博客文章中,我将带着这些问题详细的讲解Redis的过期策略和内存淘汰机制。原创 2023-03-27 15:06:58 · 2362 阅读 · 0 评论 -
Redis与MySQL的双写一致性问题
Redis与MySQL的双写一致性问题是指在使用缓存和数据库同时存储数据的场景下,如何保证两者的数据一致性。缓存更新策略:缓存更新策略有三种,分别是先更新缓存再更新数据库先更新数据库再更新缓存先删除缓存再更新数据库和先更新数据库再删除缓存。每种策略都有可能导致数据不一致的情况。数据库主从同步延迟:如果使用了主从复制模式来提高数据库的可用性和读写分离能力,那么就可能存在主从同步延迟的问题。也就是说,在主库上执行了写操作后,并不会立即同步到从库上。原创 2023-03-19 21:42:24 · 5270 阅读 · 4 评论