Commit Graph

45 Commits

Author SHA1 Message Date
智能大石头 40f7560753 [fix] 外部调用者可能需要直接使用内部申请的OwnerPacket,所以这里不释放 2025-03-11 13:22:08 +08:00
大石头 e4705f8685 [fix] 修正Redis响应数据超过8192时,读取出现死循环的问题。close: https://github.com/NewLifeX/NewLife.Redis/issues/149 2025-02-08 23:24:52 +08:00
大石头 5f803cfa50 优化非集群模式时ToDictionary使用,减少GC 2025-02-02 11:52:00 +08:00
大石头 1b16e8369d 优化字符串数组和Object数组使用,减少GC分配 2025-02-02 10:52:23 +08:00
智能大石头 537a982f41 8192 2025-01-14 01:46:10 +08:00
智能大石头 db867557be [feat]实现缓冲读取器BufferedReader,替代BufferedStream。因为BufferedStream内部从堆上分配8192字节内存数组,每一次Redis请求都需要分配一次,带来了大量内存分配和GC成本。 2025-01-14 01:23:56 +08:00
智能大石头 9c55d4e250 使用缓冲流BufferedStream包装网络流,加速响应数据读取分析。压测峰值315万每秒,批删除 2025-01-10 01:33:42 +08:00
智能大石头 3129b84dc6 v6.1 底层RedisClient恢复同步方法。Redis属于低延时高频操作,在使用异步的过程中,因层次较深,加入了很多个await,编译时创建了很多状态机,运行时加重了线程池负担。在吞吐较大应用中,经星尘监控采样发现,应用线程池每分钟完成数十万个任务,偶尔出现挂起任务,即为线程饥渴,导致asp.net接受http请求等任务,偶尔出现异常。 2025-01-10 00:58:04 +08:00
大石头 2b0f3b131b 为了提升性能,在同步调用异步时规避卡UI上下文,所有await状态机都设置ConfigureAwait(false),开启CA2007并视为编译错误。减少不必要的await状态机 2024-11-30 23:18:11 +08:00
大石头 17c82cae2e [fix]修正UI线程卡死问题,在同步调用异步时,取消捕获上下文。同时进行本机压测,并不存在连接数大增的问题。相关讨论:https://github.com/NewLifeX/NewLife.Redis/issues/140https://github.com/NewLifeX/NewLife.Redis/issues/139 以及 https://github.com/NewLifeX/NewLife.Redis/issues/138 2024-11-25 20:21:21 +08:00
大石头 30d611703e v6.0.2024.1006 内存优化,在高并发场合减少内存分配 2024-10-07 00:42:01 +08:00
智能大石头 2921b5aa35 trim Null 2024-09-25 00:53:43 +08:00
智能大石头 eaaaebdcd3 优化ToHex使用和Pool.Return使用 2024-09-24 08:04:47 +08:00
智能大石头 0b805c32c2 ReadLength 2024-09-19 08:48:37 +08:00
大石头 29c4f79584 原始数据直接编码进入SpanWriter,不再中途经过IPacket编码转一道 2024-09-16 22:00:04 +08:00
大石头 f73660a3c4 使用最终版IPacket优化代码,单元测试通过 2024-09-16 19:55:28 +08:00
大石头 1b6bd444c3 Packet数据封包全面替换为IPacket 2024-08-30 15:55:51 +08:00
智能大石头 2d64120f8e 引入MemorySegment,解决同时传递IMemoryOwner和有效长度的问题。普通指令已满足要求,更复杂的指令,需要更改原来使用Packet的解析代码 2024-08-28 08:33:09 +08:00
智能大石头 6497cdf009 使用IMemoryOwner分配内存池,用于解析响应数据,减少内存分配。内存块已通过IMemoryOwner向上传递,上方取用后释放,但是未能把长度向上传递,可能还需要封装一个结构体。 2024-08-28 00:36:19 +08:00
智能大石头 496da09441 减少字典的Resize 2024-08-27 22:16:04 +08:00
大石头 7f7afecbfd 完善SpanWriter 2024-08-27 20:38:18 +08:00
大石头 daab2d61ff 执行命令前,先把参数Encode编码为字符串或字节数组,方便Span写入。其实绝大部分场景都是字符串。Byte[]分配下降到263M。 2024-08-27 13:24:57 +08:00
大石头 fab8aca6ef 限制1M以内数组从缓冲池里面借,更大数组直接分配 2024-08-27 10:35:56 +08:00
智能大石头 ef1ecbecfb 采用Span优化Encode,对于字符串,直接编码转换,避免再次分配字节数组。字节数组分配降到772M,现在的问题是,无法准确估算缓冲区大小,导致借出内存过大,产生LOH分配。 2024-08-27 02:15:00 +08:00
智能大石头 d36e34e11b 使用Span封装请求,借用内存池 2024-08-27 01:51:30 +08:00
智能大石头 503966ba5f 跑Bench压测后分析内存,Byte[]分配2.5G,去掉缓冲流后分配905M;
RedisClient去掉同步方法,主要保留异步方法;
2024-08-26 23:36:33 +08:00
大石头 93cd86e394 消费组不存在时,自动创建消费组。可能是Redis重启或者主从切换等原因,导致消费组丢失 2024-01-31 23:03:16 +08:00
大石头 3c934b03dd TrimNull 2023-11-25 09:46:34 +08:00
大石头 3bc4bc2119 优化二级命令的埋点名称 2023-06-05 12:35:16 +08:00
大石头 6a55a474c2 Merge branch 'master' of https://github.com/NewLifeX/NewLife.Redis 2023-05-12 23:36:06 +08:00
黎更荣 b7c1458c22 修复队列获取不到数据的时候会报错 fix #97 2023-05-12 18:04:03 +08:00
智能大石头 a2abe01114 先填充已有地址,供外部使用 2023-05-12 08:20:36 +08:00
大石头 8bb3cf295f FullRedis为集群和主从节点准备连接池,避免连接池被反复销毁 2023-04-03 20:38:21 +08:00
大石头 291f8ecde2 各个埋点都要捕获异常 2023-04-03 17:39:32 +08:00
大石头 2cd40920cf Redis命令日志独立 2023-04-03 17:03:00 +08:00
大石头 5b762bfd3e 升级核心库 2023-03-27 09:24:53 +08:00
大石头 131f94abc6 fix: 修正频繁Select的问题 2023-03-27 09:22:25 +08:00
大石头 292f60bf30 使用cluster模式时,不执行select 2023-03-07 15:42:59 +08:00
大石头 1fbc419476 Redis支持运行过程中更改db;Info不需要SelectDb;哨兵不支持selectdb; 2023-03-07 15:03:41 +08:00
大石头 a55e56d3c0 支持根据从节点探索主节点,从而得到全部节点。支持连接字符串内配置有无效节点。 2023-03-07 14:37:56 +08:00
大石头 f984048b70 恢复对net45的支持 2023-03-06 09:23:05 +08:00
大石头 8bbe6e33e7 v5.1.2023.0203 2023-02-03 22:47:57 +08:00
大石头 da6013bc31 支持SSL/TLS连接,支持指定证书验证指纹。fix https://github.com/NewLifeX/NewLife.Redis/issues/91 2023-01-06 22:23:14 +08:00
智能大石头 0871d4e10c 恢复net461的支持,增加程序集签名 2022-08-13 22:46:51 +08:00
智能大石头 1c5b740e24 v5.0大版本升级,Redis基础类从NewLife.Core迁移到NewLife.Redis 2022-08-10 00:14:31 +08:00