- 博客(51)
- 收藏
- 关注
原创 redis高级篇之IO多路复用select方法简介 第174节答疑
I/O多路复用机制,如select、poll和epoll,是实现高性能网络服务器的关键技术。在使用这些机制时,事件循环是一个非常重要的模式。通过采用各种优化技巧,如减少集合初始化、使用边缘触发模式、异步通知机制、批量处理事件以及非阻塞I/O,可以大幅提高事件循环的性能和scalability。Redis就是一个成功利用了这些优化技巧的高性能网络服务器。通过深入理解I/O多路复用和事件循环的工作原理,我们可以设计出更加高效和可扩展的网络应用程序。
2024-10-26 22:23:49
1301
原创 redis高级篇之IO多路复用IOMultiplexing从学术到人话版 172节答疑
I/O多路复用是现代网络编程中的一个重要概念,它能够帮助服务器高效地处理大量并发连接。在Linux系统中,epoll是最高效的I/O多路复用机制,它克服了select和poll的局限性,能够轻松应对大规模并发连接的场景。Redis等高性能服务器广泛使用epoll来实现I/O多路复用,这使得它们能够提供快速、稳定的服务。通过理解epoll的工作原理和使用方法,我们可以更好地设计和优化高性能的网络应用程序。I/O多路复用技术是实现高性能网络服务器的关键基础,它为异步I/O编程模型的实现提供了支持。
2024-10-26 22:19:12
985
原创 redis高级篇之IO多路复用要解决那些问题及学术概念 第165节答疑
accept()方法是非阻塞的,如果没有客户端连接,就返回无连接标识read()方法是非阻塞的,如果read()方法读取不到数据就返回空闲中标识,如果读取到数据时只阻塞read()方法读数据的时间。在非阻塞模式下,如果没有客户端连接请求,`accept()` 方法会立即返回,而不是阻塞等待连接。阻塞式 IO 的问题在于,如果一个进程需要处理多个连接上的 IO 事件,那么在处理某个连接时,进程可能会因为等待数据而被阻塞,无法及时处理其他连接上的事件。同步非阻塞的情况是存在的,通常通过轮询机制实现。
2024-10-25 20:02:44
1188
原创 redis高级篇之skiplist跳表 第164节答疑
通过对跳表空间复杂度的深入分析,我们发现跳表的空间复杂度为O(n),无论采用每两个节点抽一个还是每三个节点抽一个的索引构建方式。我们还探讨了一些进一步优化跳表空间占用的方法,如动态调整索引密度。同时,我们也介绍了跳表在实际应用中的一些典型场景,包括数据库索引、内存数据库、游戏排行榜等。可以看到,跳表凭借其高效的查询性能,在很多领域都有着广泛的应用前景。总的来说,跳表是一种非常有趣和实用的数据结构,值得我们深入学习和探讨。它不仅在理论上有着独特的特点,在实际应用中也有着广泛的用途。
2024-10-25 19:56:57
1317
原创 redis高级篇之redis源码分析List类型quicklist底层演变 答疑159节
quicklist是 Redis 中一种高效的数据结构,通过结合双向链表和ziplist的优点,既提高了内存利用率,又保证了操作效率。每个quicklist节点包含一个ziplist,所有节点上的ziplist里面的元素首尾相连,形成整个quicklist的完整数据。这种设计非常适合 Redis 的使用场景,特别是对于需要高效存储和操作大量小数据项的应用。希望这篇详细的分析能帮助你更全面地理解quicklist的工作原理及其在 Redis 中的重要性。如果你还有其他问题或想深入探讨的内容,请随时告诉我!
2024-10-24 20:44:19
1115
原创 Reids源码分析Hash类型listpack取代ziplist 答疑155节
listpack是一种高效的、紧凑的列表数据结构,旨在优化内存使用和访问速度。它的设计灵感来源于ziplist,但在功能和灵活性上进行了扩展。listpack头部信息:包含总字节数和元素数量。元素数据:实际存储的元素,支持多种数据类型。结束标记:使用LP_EOF来标识listpack的结束。listpack的反向遍历特性使其在处理数据时更加灵活和高效。通过合理的设计和实现,listpack能够在多种应用场景中发挥重要作用。未来的扩展和改进将进一步提升其性能和功能,使其在更广泛的领域中应用。
2024-10-24 20:39:53
1601
原创 redis 第155节答疑 源码分析Hash类型ziplist结构和zlentry实体解析
我的理解是一个entry有prevrawlen上一个节点长度 len当前节点长度,遍历很简单,正向,找到第一个节点,向后跳len,找到第二个,再向后跳len,找到第三个,反向:找到倒数第一个节点( ziplist 头部存储的最后一个元素偏移量,存储了吗?xxlen和xxlensize的区别,是不是这样说,len是entry 的长度,lensize表示entry 的长度的整数所需的长度?- **解释**:这个字段可以设置为`ZIP_STR_*`或`ZIP_INT_*`,取决于entry的编码方式。
2024-10-23 19:01:12
1007
原创 redis第152节答疑 redis源码分析String重要总结
Redis 的字符串类型编码机制是其设计中最关键的组成部分之一,通过 INT、EMBSTR 和 RAW 的组合,Redis 能够在性能和内存使用之间找到最佳平衡。无论是在高并发环境下的快速读写,还是在低延迟需求的实时应用中,Redis 都能凭借其灵活而高效的编码机制,提供强大的支持。这种设计不仅使 Redis 成为高性能的键值存储解决方案,也为开发人员提供了丰富的工具和策略,以便于在各种场景中应用 Redis。希望这些补充的信息能够帮助你更全面地理解 Redis 字符串类型编码机制的复杂性与灵活性!
2024-10-23 18:52:14
1045
原创 尚硅谷redis 第150节答疑 String源码sds
Redis 通过使用嵌入式字符串(EMBSTR)和共享对象池的机制,优化了内存管理和性能。这种设计不仅减少了内存的分配和释放开销,还提高了数据访问的效率。通过理解这些内部机制,开发者可以更好地使用 Redis,并在设计应用时考虑内存使用的优化。希望这篇博客能够帮助你深入理解 Redis 中的嵌入式字符串及其内存管理策略。如果你有任何问题或经验分享,欢迎在评论区讨论。Redis 作为一个高性能的内存数据库,凭借其灵活的数据结构和高效的内存管理策略,广泛应用于各种场景。
2024-10-22 20:46:42
935
原创 解决kafka3.0.0在windows下不能启动的问题
我是把旧的kafka-client-3.0.0.jar重命名成kafka-client-3.0.0.jar--- 但是文件还放在libs里面,那我干脆把新的和旧的jar包都删除,看行不行,报错找不到类,那就是旧的jar在作怪,把它放到libs文件夹外面,启动,打印了!运行成功,得到class文件,放到kafka的kafka-client-3.0.0.jar里面相应的位置,启动kafka,什么也没打印,找不到这个打印的路径。ok,现在把修改后的class放到jar包里面,重启kafka,成功!
2024-10-22 15:22:32
2074
原创 尚硅谷redis第147节答疑 源码dictEntry到redisObject
总的来说,dictEntry和dictEntry是 Redis 字典的基本元素,用于存储键值对。是 Redis 中所有对象的基础结构,它通过指针关联到dictEntry中。这种设计使得 Redis 能够灵活地支持多种数据类型,并提供高效的键值对管理。理解dictEntry和之间的关系有助于我们深入理解 Redis 的内部实现,并更好地利用 Redis 提供的功能。
2024-10-21 21:38:04
875
原创 尚硅谷redis第144节 淘汰策略及使用建议 答疑
Redis 的内存管理机制是其核心功能之一,包括惰性删除、定期删除和淘汰策略。这些机制各有优缺点,适用于不同的应用场景。通过合理配置和使用这些机制,我们可以充分利用 Redis 的内存,构建出高性能、高可靠的应用系统。希望本文的分享对你在 Redis 应用开发中的内存管理有所帮助。
2024-10-21 21:24:57
819
原创 尚硅谷redis 第124节 答疑 缓存预热-雪崩-穿透
尽管键 "whitelistcustomer" 存储的是一个字符串,但通过 `setBit` 方法,你可以在这个字符串的特定位上设置一个值,从而实现位图的效果。主缓存A--------------视频里面说的是解决缓存击穿的问题的,但是后面演示 的还是在缓存里面用了两个key 一个jhs:a 一个jhs:b,两个失效时间间隔10s,如果用三台机器做主从的话,是不是应该用同一个key,要怎么做。------------这一段里面的opsforvalue得到的不是一个字符串吗?如何解决的缓存击穿的问题?
2024-10-20 23:41:26
1177
原创 尚硅谷redis 第98-120节答疑 深入理解 Redis 与 MySQL 的连接与性能优化
通过合理配置 Redis 和 MySQL 的连接、序列化方式、内存管理以及使用布隆过滤器等技术手段,可以显著提高应用程序的性能和稳定性。在实际开发中,开发者应根据具体的业务需求灵活调整这些配置,确保系统的高效运行。在现代应用程序架构中,Redis 和 MySQL 的结合为开发者提供了强大的数据存储和访问能力。Redis 作为一个高性能的内存数据结构存储,能够在极短的时间内处理大量的读写请求;而 MySQL 则以其可靠的数据持久性和丰富的查询功能而闻名。
2024-10-20 23:34:12
1427
原创 尚硅谷redis 第97节 redisTmplate下答疑
**值**:`"京东订单123e4567-e89b-12d3-a456-426614174000"` 是 Redis 中存储的值,但被 `GenericJackson2JsonRedisSerializer` 序列化后会被额外的引号包裹。- 例如,`"京东订单123e4567-e89b-12d3-a456-426614174000"` 会被序列化为 `"\"京东订单123e4567-e89b-12d3-a456-426614174000\""`。在这个例子中,会反序列化为原始字符串。
2024-10-17 13:48:07
1094
原创 尚硅谷redis 第96节 redistemplate 答疑
在多线程环境中使用 `ThreadLocalRandom` 而不是 `Random` 可以显著提高性能,避免竞争条件和同步问题。- Lombok 提供了多种日志注解(如 `@Log`, `@Log4j`, `@Log4j2`, `@Slf4j` 等),可以根据项目需求统一使用某种日志框架,提高代码一致性。- Lombok 提供了多种日志注解(如 `@Log`, `@Log4j`, `@Log4j2`, `@Slf4j` 等),可以根据项目需求统一使用某种日志框架,提高代码一致性。
2024-10-17 10:41:13
1031
原创 Redis Geo 数据类型解析:基于 ZSET 的高效地理位置管理0708
Redis 的 Geo 数据类型允许用户存储和查询地理位置数据。通过使用 Geohash 编码和 Sorted Set (ZSET),Redis 提供了高效的地理空间索引和查询功能。Redis 的 Geo 数据类型通过使用 Geohash 和 ZSET 提供了高效的地理位置存储和查询能力。它在位置共享、地理位置服务和物流管理等多个领域有广泛的应用。通过合理使用 Redis Geo,开发者可以构建出高效且功能丰富的地理位置应用。
2024-10-16 20:39:00
1603
原创 Redis 数据结构与操作详解:从基本命令到高效缓存策略mget-0707
Redisson 是一个开源的 Java 语言 Redis 客户端,提供了很多开箱即用的功能,比如多种分布式锁的实现、延时队列。相关命令:SPOP(随机获取集合中的元素并移除,适合不允许重复中奖的场景)、SRANDMEMBER(随机获取集合中的元素,适合允许重复中奖的场景)。具体是这样做的:把所有可能存在的请求的值都存放在布隆过滤器中,当用户请求过来,先判断用户发来的请求的值是否存在于布隆过滤器中。在 Redisson 的延迟队列实现中,每个任务的执行时间被用作其在 SortedSet 中的分数。
2024-10-16 20:22:00
710
原创 尚硅谷rabbitmq2024 第15-18节 springboot整合与可靠性答疑
通过这种嵌套注解的方式,可以在一个地方集中配置所有相关的 RabbitMQ 配置。在 `@RabbitListener` 注解的方法中,可以使用 RabbitMQ 特定的类,例如 `org.springframework.amqp.core.Message` 和 `com.rabbitmq.client.Channel`。在上述例子中,如果使用`@Component`,每次调用`myService()`时都会创建一个新的`MyRepository`实例,而不是使用单例的`MyRepository`实例。
2024-10-15 21:37:01
1131
原创 Vue3嵌套导航相对路径问题
可以参考下面的a标签,也是这样跳转的,个人觉得在当前路径是http://localhost:5173/news的时候,访问相对路径detail,就相当于一个文件夹是http://localhost:5173/,news相当于news.html,而detail和他是同级的,所以相对路径会解析为http://localhost:5173/detail。点击新闻,内容里面嵌套一个左侧和右侧,左侧有4条新闻,点击某一条新闻,右侧显示详情。有如下的页面设计,页面上方第一次导航,两个菜单,首页和新闻。
2024-10-15 12:15:41
1257
原创 尚硅谷rabbitmq2024 工作模式路由篇 第11节 答疑
RabbitMQ 提供了多种类型的交换机(如 `direct`、`fanout`、`topic` 等),每种交换机都有不同的消息路由规则。例如,日志系统中可以用不同的路由键来区分不同级别的日志消息(如 `info`、`warning`、`error`)。----------发布订阅模式的时候绑定队列和交换机没有指定,error warn ifno等等,为什么这里工作队列模式(就是direct交换机)要指定这些,还有direct交换机为什么要绑定队列,不是这个关系应该有路由键决定的吗?
2024-10-14 22:53:14
1030
原创 尚硅谷rabbitmq2024 工作模式发布订阅模式 第10节答疑
如果 `consumer-A` 和 `consumer-B` 都属于 `group-1`,那么 Kafka 会自动将 `partition-0` 分配给 `consumer-A`,将 `partition-1` 分配给 `consumer-B`。假设你有一个Kafka主题 `my-topic`,它有两个分区 `partition-0` 和 `partition-1`,你有两个消费者 `consumer-A` 和 `consumer-B`,它们都属于同一个消费者组 `group-1`。
2024-10-14 11:15:12
1087
原创 尚硅谷rabbitmq2024介绍和工作模式 第4-9节 答疑
如果 `consumer-A` 和 `consumer-B` 都属于 `group-1`,那么 Kafka 会自动将 `partition-0` 分配给 `consumer-A`,将 `partition-1` 分配给 `consumer-B`。假设你有一个Kafka主题 `my-topic`,它有两个分区 `partition-0` 和 `partition-1`,你有两个消费者 `consumer-A` 和 `consumer-B`,它们都属于同一个消费者组 `group-1`。
2024-10-13 13:22:29
1343
原创 尚硅谷rabbitmq 2024 Federation配置 第60节答疑
通过以上步骤,你就可以在 RabbitMQ 中设置联邦队列,实现不同 RabbitMQ 实例之间的消息共享和分布式处理。- 你可以点击 `Create Shovel` 按钮,输入名称 `new_shovel`,配置源和目标 RabbitMQ 服务器、队列或交换机,然后点击 `Save` 创建新的 Shovel。你说得对,`"federation-upstream-set":"all"` 和 `"federation-upstream":"upstream-name"` 是不同的配置方式。
2024-10-13 13:17:31
1215
原创 尚硅谷rabbitmq 2024 Federation创建upstream连接点 第57节答疑
假设你有两个 RabbitMQ 节点:`rabbit1` 和 `rabbit2`,你希望将 `rabbit1` 上的交换机 `source_exchange` 的消息路由到 `rabbit2` 上的交换机 `destination_exchange`。假设你有两个 RabbitMQ 节点:`rabbit1` 和 `rabbit2`,你希望将 `rabbit1` 上的交换机 `source_exchange` 的消息路由到 `rabbit2` 上的交换机 `destination_exchange`。
2024-10-12 20:21:59
1392
原创 尚硅谷rabbitmq 2024 流式队列2024指定偏移量 第55节答疑
你说得对,如果你使用 `.autoTrackingStrategy()`,就不需要再指定 `.offset(OffsetSpecification.first())`。确实,如果你使用 `.autoTrackingStrategy()`,那么你不需要再指定 `.offset(OffsetSpecification.first())`,因为自动跟踪策略会自动从最新的消息开始消费并持续监听新的消息。.offset(OffsetSpecification.offset(offset)) // 从指定偏移量开始。
2024-10-12 20:19:33
1278
原创 尚硅谷rabbitmq2024 集群篇 流式队列 第54节 答疑
为了应对 Log4j 1.x 的一些局限性和安全问题,Apache 推出了 Log4j 2,它是一个全新的、改进的日志框架,提供了更高的性能和更多的功能。在Java项目中,日志记录是非常重要的功能,而`SLF4J`和`Logback`是常用的日志记录工具。你提到的两个依赖项分别是`SLF4J`和`Logback`,它们在日志记录中扮演不同的角色。是的,当启用 RabbitMQ 的 Stream 队列时,通常会新开一个端口用于处理 Stream 协议的通信,而原来的 AMQP 通信端口保持不变。
2024-10-11 13:01:39
1110
原创 尚硅谷rabbitmq2024 集群篇仲裁队列 第52节 答疑
一般haproxy负载均衡到集群中每个节点,比如3个节点 a b c, a b c上都有队列q1,而只有a上有q2,然后我发3个消息到q1,根据负载均衡,不是a b c上各有一个消息,还不同,a上第一个消息,b上第二个消息。那我就先说在没有镜像或者仲裁队列的情况下,集群是什么情况,haproxy负载均衡了之后,发送一个3个消息到某个队列上,是每个节点上都有3个消息,还是每个节点上有一个1个消息?如果管理队列的主节点发生故障,RabbitMQ会自动将队列的管理切换到一个镜像节点,从而确保队列和消息的可用性。
2024-10-11 13:00:23
1332
原创 尚硅谷rabbitmq 2024 第50节 集群负载均衡 核心功能 答疑
虽然普通队列默认情况下是由单一节点管理的,但通过配置镜像队列,可以在多个节点上复制队列和消息,从而提高系统的容错性和可用性。如果管理队列的主节点发生故障,RabbitMQ会自动将队列的管理切换到一个镜像节点,从而确保队列和消息的可用性。- **主队列和镜像队列**:在镜像队列配置中,某个节点会被选为主队列节点,其他节点作为镜像队列节点。- **故障转移**:如果主队列节点发生故障,RabbitMQ会自动将一个镜像队列节点提升为新的主队列节点,继续处理消息发布和消费。搭建了集群,是每个节点上队列都是一样的?
2024-10-10 19:58:35
1453
原创 尚硅谷rabbitmq 2024 集群ui 第49节 答疑三
在HAProxy的配置中,`frontend`和`backend`是两个不同的概念,分别用于处理客户端请求和后端服务器的定义。虽然你在`frontend`部分定义了`default_backend rabbitmq_ui_backend`,但你仍然需要在`backend`部分具体定义这个后端服务器组,以便HAProxy知道如何与这些后端服务器进行通信。`upstream`和`backend`都用于定义后端服务器组,而`server`和`frontend`都用于定义如何处理客户端请求。你的担忧是很合理的。
2024-10-10 19:48:53
1065
原创 尚硅谷rabbitmq 2024 集群ui 第49节 答疑二
在HAProxy的配置中,`frontend`和`backend`是两个不同的概念,分别用于处理客户端请求和后端服务器的定义。虽然你在`frontend`部分定义了`default_backend rabbitmq_ui_backend`,但你仍然需要在`backend`部分具体定义这个后端服务器组,以便HAProxy知道如何与这些后端服务器进行通信。`upstream`和`backend`都用于定义后端服务器组,而`server`和`frontend`都用于定义如何处理客户端请求。你的担忧是很合理的。
2024-10-09 08:17:44
1254
原创 尚硅谷rabbitmq 2024 集群ui 第49节 答疑一
是的,Nginx中的`upstream`和`server`与HAProxy中的`backend`和`frontend`确实有对应的关系。- **配置项**:包括工作模式(`mode`),负载均衡算法(`balance`),健康检查(`option httpchk`),以及具体的服务器定义(`server`)。你提供的配置确实是属于后端配置部分。- **配置项**:包括绑定的IP和端口(`bind`),工作模式(`mode`),以及默认的`backend`(`default_backend`)。
2024-10-09 08:15:26
1195
原创 尚硅谷rabbitmq2024 集群搭建和优先队列答疑 第41-48节
RabbitMQ 和 Kafka 都有各自的集群管理和安全机制,RabbitMQ 依赖于 Erlang 的 cookie 机制,而 Kafka 则使用配置文件和安全协议来确保节点之间的认证和通信。这种方式可以确保消息的可靠性传递和处理。是的,在搭建 RabbitMQ 集群时,每个节点的 `.erlang.cookie` 文件中的值必须相同。需要注意的是,你提供的 IP 地址 192.168.47.288 是无效的,因为在一个标准的 IPv4 地址中,每个八位组(octet)的值范围是 0 到 255。
2024-10-08 12:11:24
1473
原创 尚硅谷rabbitmq 2024 消息可靠性答疑二 第22节
**消息转换器(Message Converter)**:Spring AMQP提供了多种消息转换器(如`SimpleMessageConverter`、`Jackson2JsonMessageConverter`、`Jaxb2Marshaller`等),你可以根据需要选择或自定义消息转换器。- **`confirm`方法**:总是被调用,用于确认消息是否成功到达交换机。- **成功(ack=true)**:当消息成功到达交换机时,会调用`confirm`方法,并且`ack`参数为`true`。
2024-10-08 11:40:08
1313
原创 尚硅谷rabbitmq 2024 第18-21节 消息可靠性答疑一
在Spring的`RabbitTemplate`中,回调机制设计的初衷是为了让用户能够灵活地定义和处理消息确认和返回的逻辑。在上述例子中,如果使用`@Component`,每次调用`myService()`时都会创建一个新的`MyRepository`实例,而不是使用单例的`MyRepository`实例。- 在`RabbitConfig`配置类中,通过`@Autowired`注入回调处理器,并在`initRabbitTemplate`方法中将它们设置为`RabbitTemplate`的回调处理器。
2024-10-07 18:23:43
1133
原创 尚硅谷rabbitmq 2024第30-33节 死信队列 答疑
问题死信队列的路由键只是在绑定死信交换机和指定正常队列的参数用到 ,消息超时或者格式错误的时候服务端没代码,也不会去指定路由键,就自己放到死信队列了,服务端也不能判断格式错误,只能客户端代码自己判断了发nack,这时候也没处指定死信的路由键。通过使用不同的路由键,可以将这些消息分别路由到不同的死信队列,从而进行不同的处理。绑定死信队列到死信交换机指定一个路由键,原队列上设置死信路由键,这两个路由键总是一样的,结果就是正常队列绑定到某个死信队列,是否指定路由键都一样的结果,那指定路由键不是多此一举?
2024-10-07 10:41:13
1512
原创 尚硅谷 rabbitmq 2024 第34-37 延时队列 答疑
**Kafka**:主要使用`@KafkaListener`,也可以通过`KafkaConsumer` API或`ConcurrentMessageListenerContainer`。在RabbitMQ中,`returnedMessage`和`confirm`是两种不同的消息确认机制,它们用于确保消息在生产者和消费者之间可靠传递。- **RabbitMQ**:主要使用`@RabbitListener`,也可以通过`SimpleMessageListenerContainer`或手动拉取消息。
2024-10-06 20:46:09
1226
原创 rabbitmq 2024第38-39 事务消息 尚硅谷答疑
2. **RabbitTemplate**:这个Bean定义了一个RabbitTemplate,并启用了事务支持 (`setChannelTransacted(true)`)。例如,在一个事务性的方法中发送消息,如果事务回滚,则消息不会被发送到RabbitMQ。在这个示例中,如果`sendMessage`方法中的任何操作失败并抛出异常,整个事务将会回滚,包括RabbitMQ消息的发送。3. **提交事务**:生产者提交事务,Kafka会确保所有在该事务内的消息要么全部写入成功,要么全部回滚。
2024-10-06 20:39:51
814
原创 尚硅谷redis第178节总结 抢红包案例 答疑
1. **生成随机数**:`new Random().nextInt(avgMoney - 1)` 会生成一个在 `0` 到 `avgMoney - 2` 之间的随机整数(包括 `0`,但不包括 `avgMoney - 1`)。- `nextInt(bound)` 方法生成一个在 `[0, bound)` 范围内的随机整数,也就是说,它生成的随机数是从 `0` 到 `bound - 1` 之间的整数(包括 `0`,但不包括 `bound`)。` 是用来生成一个随机的红包金额,并将其分配给当前的红包。
2024-10-02 20:42:51
1084
原创 尚硅谷redis147答疑 redis源码redisObject dict
总结:虽然在`redisObject`的结构定义中没有直接看到`dict`,但在实际使用中,对于哈希类型的对象,`redisObject`的`ptr`字段会指向一个`dict`结构。- 当Redis创建一个哈希对象时,它会创建一个`redisObject`,将其`type`设置为哈希类型,然后`ptr`指向一个新创建的`dict`结构。- Redis使用了一种灵活的设计,`redisObject`的`ptr`字段可以指向不同类型的数据结构,包括但不限于`dict`。
2024-09-28 20:29:11
709
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅