首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
学习
09cakg86qfjwymvm8cd3h1dew
创建于2023-01-06
订阅专栏
记录学习过程中的笔记
等 4 人订阅
共253篇文章
创建于2023-01-06
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
LFU算法和其他算法相比有优势吗
# LFU 算法的基本原理 因为 LFU 算法是根据数据访问的频率来选择被淘汰数据的,所以 LFU 算法会记录每个数据的访问次数。当一个数据被再次访问时,就会增加该数据的访问次数。 访问频率是指在
为什么LRU算法原理和代码实现不一样?
LRU 算法会使用一个链表来维护缓存中每一个数据的访问情况,并根据数据的实时访问,调整数据在链表中的位置,然后通过数据在链表中的位置,来表示数据是最近刚访问的,还是已经有一段时间没有访问了。 LR
从代码实现看分布式锁的原子性保证
# 一条命令的处理过程 对于整个命令处理的过程来说,主要可以分成四个阶段,它们分别对应了 Redis 源码中的不同函数: - 命令读取,对应 readQueryFromClient 函数; -
Redis 6.0多IO线程的效率提高了吗
# 多 IO 线程的初始化 在InitServerLast 函数后,新增了initThreadedIO 函数。 initThreadedIO 函数的主要执行流程: - 首先,initThre
Redis真的是单线程吗
在 main 函数完成参数解析后,会根据两个配置参数 daemonize 和 supervised,来设置变量 background 的值。它们的含义分别是: - 参数 daemonize 表示
Redis事件驱动框架(下):Redis有哪些事件
# aeEventLoop 结构体与初始化 这个结构体是在事件驱动框架代码ae.h中定义的,记录了框架循环运行过程中的信息,其中,就包含了记录两类事件的变量,分别是: - aeFileEven
Redis事件驱动框架(中):Redis实现了Reactor模型吗?
Reactor 模型就是网络服务器端用来处理高并发网络 IO 请求的一种编程模型。包含: * 三类处理事件,即连接事件、写事件、读事件; * 三个关键角色,即 reactor、acceptor、han
Redis事件驱动框架(上):何时使用select、poll、epoll?
# select select 机制中的一个重要函数就是 select 函数。对于 select 函数来说,它的参数包括监听的文件描述符数量__nfds、被监听描述符的三个集合*__readfds、
Redis server启动后会做哪些操作
启动在server.c文件中的main函数。 对于 Redis 的 main 函数来说,它的执行工作分成了五个阶段。 阶段一:基本初始化。在这个阶段,main 函数主要是完成一些基本的初始化工作,
为什么Stream使用了Radix Tree
Redis 从 5.0 版本开始支持提供 Stream 数据类型,它可以用来保存消息数据,进而能帮助我们实现一个带有消息读写基本功能的消息队列,并用于日常的分布式程序通信当中。 为了节省内存空间,在
从ziplist到quicklist,再到listpack的启发
# ziplist 的不足 ziplist 面临着两个不足:查找复杂度高和潜在的连锁更新风险。 ![image.png](https://p9-juejin.byteimg.com/tos-cn-
有序集合为何能同时支持点查询和范围查询
Sorted Set 的实现代码在t_zset.c文件中,包括 Sorted Set 的各种操作实现,同时 Sorted Set 相关的结构定义在server.h文件中。 Sorted Set 结构
内存友好的数据结构该如何细化设计
# SDS 的内存友好设计 SDS 设计了不同类型的结构头,包括 sdshdr8、sdshdr16、sdshdr32 和 sdshdr64。这些不同类型的结构头可以适配不同大小的字符串,从而避免了内
如何实现一个性能优异的Hash表
在实际应用 Hash 表时,当数据量不断增加,它的性能就经常会受到哈希冲突和 rehash 开销的影响。 针对哈希冲突,Redis 采用了链式哈希,在不扩容哈希表的前提下,将具有相同哈希值的数据链接
键值对中字符串的实现,用char*还是结构体
# SDS结构设计 ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/74935e535cad4f01b7e75dd31
带你快速攻略Redis源码的整体架构
我们究竟该如何学习 Redis 的代码架构呢?我的建议是要掌握以下两方面内容: * 代码的目录结构和作用划分,目的是理解 Redis 代码的整体架构,以及所包含的代码功能类别; * 系统功能模块与对应
调用第三方:下游的接口不稳定性能又差怎么办?
# 基础 对于自己系统内这样一个第三方模块或者第三方服务来说,它要解决的问题也很直观。 1. 提供一个一致性抽象,屏蔽不同第三方平台 API 之间的差异。 1. 提供客户端治理,即提供调用第三
超时控制:怎么保证用户一定能在1s内拿到响应?
# 基础 超时控制是一个非常简单的东西,它是指在规定的时间内完成操作,如果不能完成,那么就返回一个超时响应。 ## 超时控制目标 一是确保客户端能在预期的时间内拿到响应。 二是及时释放资源。这
隔离:怎么保证尊贵的VIP用户体验不受损
# 基础 隔离是通过资源划分,在不同服务之间建立边界,防止相互影响的一种治理措施。 一般来说,使用隔离策略主要是为了达到 3 个目的。 - 提升可用性,也就是说防止被影响或防止影响别人。这部
限流:别说算法了,就问你“阈值”怎么算?
# 基础 限流是通过限制住流量大小来保护系统,它尤其能够解决异常突发流量打崩系统的问题。 ## 算法 限流算法也可以像负载均衡算法那样,划分成静态算法和动态算法两类。 - 静态算法包含令牌
下一页