NewLife.Redis 6.0.2024.1101-beta1025

This is a prerelease version of NewLife.Redis.
There is a newer version of this package available.
See the version list below for details.
dotnet add package NewLife.Redis --version 6.0.2024.1101-beta1025                
NuGet\Install-Package NewLife.Redis -Version 6.0.2024.1101-beta1025                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NewLife.Redis" Version="6.0.2024.1101-beta1025" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NewLife.Redis --version 6.0.2024.1101-beta1025                
#r "nuget: NewLife.Redis, 6.0.2024.1101-beta1025"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NewLife.Redis as a Cake Addin
#addin nuget:?package=NewLife.Redis&version=6.0.2024.1101-beta1025&prerelease

// Install NewLife.Redis as a Cake Tool
#tool nuget:?package=NewLife.Redis&version=6.0.2024.1101-beta1025&prerelease                

NewLife.Redis - Redis客户端组件

GitHub top language GitHub License Nuget Downloads Nuget Nuget (with prereleases)

[English]

NewLife.Redis 是一个Redis客户端组件,以高性能处理大数据实时计算为目标。
Redis协议基础实现Redis/RedisClient位于X组件,本库为扩展实现,主要增加列表结构、哈希结构、队列等高级功能。

源码: https://github.com/NewLifeX/NewLife.Redis
Nuget:NewLife.Redis
教程:https://newlifex.com/core/redis


特性

  • 2017年在ZTO大数据实时计算广泛应用,200多个Redis实例稳定工作一年多,每天处理近1亿条包裹数据,日均调用量80亿次
  • 低延迟,Get/Set操作平均耗时200~600us(含往返网络通信)
  • 大吞吐,自带连接池,最大支持100000并发
  • 高性能,支持二进制序列化

Redis经验分享

  • 在Linux上多实例部署,实例个数等于处理器个数,各实例最大内存直接为本机物理内存,避免单个实例内存撑爆
  • 把海量数据(10亿+)根据key哈希(Crc16/Crc32)存放在多个实例上,读写性能成倍增长
  • 采用二进制序列化,而非常见Json序列化
  • 合理设计每一对Key的Value大小,包括但不限于使用批量获取,原则是让每次网络包控制在1.4k字节附近,减少通信次数
  • Redis客户端的Get/Set操作平均耗时200~600us(含往返网络通信),以此为参考评估网络环境和Redis客户端组件
  • 使用管道Pipeline合并一批命令
  • Redis的主要性能瓶颈是序列化、网络带宽和内存大小,滥用时处理器也会达到瓶颈
  • 其它可查优化技巧 以上经验,源自于300多个实例4T以上空间一年多稳定工作的经验,并按照重要程度排了先后顺序,可根据场景需要酌情采用!

推荐用法

推荐使用单例模式,Redis内部有连接池并且支持多线程并发访问

public static class RedisHelper
{
    /// <summary>
    /// Redis实例
    /// </summary>
    public static FullRedis redisConnection { get; set; } = new FullRedis("127.0.0.1:6379", "123456", 4);
}

Console.WriteLine(RedisHelper.redisConnection.Keys);

基础 Redis

Redis实现标准协议以及基础字符串操作,完整实现由独立开源项目NewLife.Redis提供。
采取连接池加同步阻塞架构,具有超低延迟(200~600us)以及超高吞吐量的特点。
在物流行业大数据实时计算中广泛应有,经过日均100亿次调用量验证。

// 实例化Redis,默认端口6379可以省略,密码有两种写法
//var rds = new FullRedis("127.0.0.1", null, 7);
var rds = new FullRedis("127.0.0.1:6379", "pass", 7);
//var rds = new FullRedis();
//rds.Init("server=127.0.0.1:6379;password=pass;db=7");
rds.Log = XTrace.Log;

基本操作

在基本操作之前,我们先做一些准备工作:

  • 新建控制台项目,并在入口函数开头加上 XTrace.UseConsole(); ,这是为了方便查看调试日志
  • 具体测试代码之前,需要加上前面MemoryCache或Redis的实例化代码
  • 准备一个模型类User
class User
{
    public String Name { get; set; }
    public DateTime CreateTime { get; set; }
}

添删改查:

var rds = new FullRedis("127.0.0.1", null, 7);
rds.Log = XTrace.Log;
rds.ClientLog = XTrace.Log; // 调试日志。正式使用时注释
var user = new User { Name = "NewLife", CreateTime = DateTime.Now };
rds.Set("user", user, 3600);
var user2 = rds.Get<User>("user");
XTrace.WriteLine("Json: {0}", user2.ToJson());
XTrace.WriteLine("Json: {0}", rds.Get<String>("user"));
if (rds.ContainsKey("user")) XTrace.WriteLine("存在!");
rds.Remove("user");

执行结果:

14:14:25.990  1 N - SELECT 7
14:14:25.992  1 N - => OK
14:14:26.008  1 N - SETEX user 3600 [53]
14:14:26.021  1 N - => OK
14:14:26.042  1 N - GET user
14:14:26.048  1 N - => [53]
14:14:26.064  1 N - GET user
14:14:26.065  1 N - => [53]
14:14:26.066  1 N - Json: {"Name":"NewLife","CreateTime":"2018-09-25 14:14:25"}
14:14:26.067  1 N - EXISTS user
14:14:26.068  1 N - => 1
14:14:26.068  1 N - 存在!
14:14:26.069  1 N - DEL user
14:14:26.070  1 N - => 1

保存复杂对象时,默认采用Json序列化,所以上面可以按字符串把结果取回来,发现正是Json字符串。
Redis的strings,实质上就是带有长度前缀的二进制数据,[53]表示一段53字节长度的二进制数据。

集合操作

GetAll/SetAll 在Redis上是很常用的批量操作,同时获取或设置多个key,一般有10倍以上吞吐量。

批量操作:

var rds = new FullRedis("127.0.0.1", null, 7);
rds.Log = XTrace.Log;
rds.ClientLog = XTrace.Log; // 调试日志。正式使用时注释
var dic = new Dictionary<String, Object>
{
    ["name"] = "NewLife",
    ["time"] = DateTime.Now,
    ["count"] = 1234
};
rds.SetAll(dic, 120);

var vs = rds.GetAll<String>(dic.Keys);
XTrace.WriteLine(vs.Join(",", e => $"{e.Key}={e.Value}"));

执行结果:

MSET name NewLife time 2018-09-25 15:56:26 count 1234
=> OK
EXPIRE name 120
EXPIRE time 120
EXPIRE count 120
MGET name time count
name=NewLife,time=2018-09-25 15:56:26,count=1234

集合操作里面还有 GetList/GetDictionary/GetQueue/GetSet 四个类型集合,分别代表Redis的列表、哈希、队列、Set集合等。
基础版Redis不支持这四个集合,完整版NewLife.Redis支持,MemoryCache则直接支持。

高级操作

  • Add 添加,当key不存在时添加,已存在时返回false。
  • Replace 替换,替换已有值为新值,返回旧值。
  • Increment 累加,原子操作
  • Decrement 递减,原子操作

高级操作:

var rds = new FullRedis("127.0.0.1", null, 7);
rds.Log = XTrace.Log;
rds.ClientLog = XTrace.Log; // 调试日志。正式使用时注释
var flag = rds.Add("count", 5678);
XTrace.WriteLine(flag ? "Add成功" : "Add失败");
var ori = rds.Replace("count", 777);
var count = rds.Get<Int32>("count");
XTrace.WriteLine("count由{0}替换为{1}", ori, count);

rds.Increment("count", 11);
var count2 = rds.Decrement("count", 10);
XTrace.WriteLine("count={0}", count2);

执行结果:

SETNX count 5678
=> 0
Add失败
GETSET count 777
=> 1234
GET count
=> 777
count由1234替换为777
INCRBY count 11
=> 788
DECRBY count 10
=> 778
count=778

性能测试

Bench 会分根据线程数分多组进行添删改压力测试。
rand 参数,是否随机产生key/value。
batch 批大小,分批执行读写操作,借助GetAll/SetAll进行优化。

Redis默认设置AutoPipeline=100,无分批时打开管道操作,对添删改优化。

Redis的兄弟姐妹

Redis实现ICache接口,它的孪生兄弟MemoryCache,内存缓存,千万级吞吐率。
各应用强烈建议使用ICache接口编码设计,小数据时使用MemoryCache实现;
数据增大(10万)以后,改用Redis实现,不需要修改业务代码。

新生命项目矩阵

各项目默认支持net7.0/netstandard2.1/netstandard2.0/net4.61,旧版(2022.1225)支持net4.5/net4.0/net2.0

项目 年份 说明
基础组件 支撑其它中间件以及产品项目
NewLife.Core 2002 核心库,日志、配置、缓存、网络、序列化、APM性能追踪
NewLife.XCode 2005 大数据中间件,单表百亿级,MySql/SQLite/SqlServer/Oracle/TDengine/达梦,自动分表
NewLife.Net 2005 网络库,单机千万级吞吐率(2266万tps),单机百万级连接(400万Tcp)
NewLife.Remoting 2011 RPC通信框架,内网高吞吐或物联网硬件设备场景
NewLife.Cube 2010 魔方快速开发平台,集成了用户权限、SSO登录、OAuth服务端等,单表100亿级项目验证
NewLife.Agent 2008 服务管理组件,把应用安装成为操作系统守护进程,Windows服务、Linux的Systemd
NewLife.Zero 2020 Zero零代脚手架,基于NewLife组件生态的项目模板,Web、WebApi、Service
中间件 对接知名中间件平台
NewLife.Redis 2017 Redis客户端,微秒级延迟,百万级吞吐,丰富的消息队列,百亿级数据量项目验证
NewLife.RocketMQ 2018 RocketMQ纯托管客户端,支持Apache RocketMQ和阿里云消息队列,十亿级项目验
NewLife.MQTT 2019 物联网消息协议,MqttClient/MqttServer,客户端支持阿里云物联网
NewLife.IoT 2022 IoT标准库,定义物联网领域的各种通信协议标准规范
NewLife.Modbus 2022 ModbusTcp/ModbusRTU/ModbusASCII,基于IoT标准库实现,支持IoT平台和IoTEdge
NewLife.Siemens 2022 西门子PLC协议,基于IoT标准库实现,支持IoT平台和IoTEdge
NewLife.Map 2022 地图组件库,封装百度地图、高德地图和腾讯地图
NewLife.IP 2022 IP地址库,IP地址转物理地址
产品平台 产品平台级,编译部署即用,个性化自定义
AntJob 2019 蚂蚁调度,分布式大数据计算平台(实时/离线),蚂蚁搬家分片思想,万亿级数据量项目验证
Stardust 2018 星尘,分布式服务平台,节点管理、APM监控中心、配置中心、注册中心、发布中心
NewLife.ERP 2021 企业ERP,产品管理、客户管理、销售管理、供应商管理
CrazyCoder 2006 码神工具,众多开发者工具,网络、串口、加解密、正则表达式、Modbus
XProxy 2005 产品级反向代理,NAT代理、Http代理
HttpMeter 2022 Http压力测试工具
GitCandy 2015 Git源代码管理系统
SmartOS 2014 嵌入式操作系统,完全独立自主,支持ARM Cortex-M芯片架构
SmartA2 2019 嵌入式工业计算机,物联网边缘网关,高性能.NET6主机,应用于工业、农业、交通、医疗
菲凡物联FIoT 2020 物联网整体解决方案,建筑、环保、农业,软硬件及大数据分析一体化,单机十万级点位项目验证
NewLife.UWB 2020 厘米级(10~20cm)高精度室内定位,软硬件一体化,与其它系统联动,大型展厅项目验证

新生命开发团队

XCode

新生命团队(NewLife)成立于2002年,是新时代物联网行业解决方案提供者,致力于提供软硬件应用方案咨询、系统架构规划与开发服务。
团队主导的开源NewLife系列组件已被广泛应用于各行业,Nuget累计下载量高达60余万次。
团队开发的大数据核心组件NewLife.XCode、蚂蚁调度计算平台AntJob、星尘分布式平台Stardust、缓存队列组件NewLife.Redis以及物联网平台NewLife.IoT,均成功应用于电力、高校、互联网、电信、交通、物流、工控、医疗、文博等行业,为客户提供了大量先进、可靠、安全、高质量、易扩展的产品和系统集成服务。

我们将不断通过服务的持续改进,成为客户长期信赖的合作伙伴,通过不断的创新和发展,成为国内优秀的IT服务供应商。

新生命团队始于2002年,部分开源项目具有20年以上漫长历史,源码库保留有2010年以来所有修改记录
网站:https://newlifex.com
开源:https://github.com/newlifex
QQ群:1600800/1600838
微信公众号:
智能大石头

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 is compatible.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (35)

Showing the top 5 NuGet packages that depend on NewLife.Redis:

Package Downloads
Wangcaisoft.DotNet.Util.Cache

A set of .NET 8/7/6/5/Standard 2.1/Standard 2.0 Memory/Redis Cache utilities(support .net framework 4.52/4.6/4.7/4.8). Please visit https://github.com/cuiwenyuan/DotNet.Util for more information

NewLife.Extensions.Caching.Redis

Redis缓存扩展库,便于注入Redis

YellowJHelp

通用解决方案: 3.0.0版本后方法基本改成异步。 2.2.0版本:自动依赖注入功能转移至:YellowJAutoInjection (Redis更换NewLife-日均百亿次项目验证)缓存,MD5加密,字段截取,集合类型差集计算 Kafka使用 webapi调用 Redis使用

Helpers.CacheHelper

用于缓存,封装了csredis,easycaching

NewLife.Redis.Core

NewLife.Redis的扩展封装,依赖于NewLife.Redis 仅仅是另一种使用风格!,支持.NETCore3/.NET5/6/7/8 教程:https://www.cnblogs.com/huguodong/p/16498154.html

GitHub repositories (5)

Showing the top 5 popular GitHub repositories that depend on NewLife.Redis:

Repository Stars
NewLifeX/X
Core basic components: log (file / network), configuration (XML / JSON / HTTP), cache (memory / redis), network (TCP / UDP / HTTP), RPC framework, serialization (binary / XML / JSON), APM performance tracking. 核心基础组件,日志(文件/网络)、配置(XML/Json/Http)、缓存(内存/Redis)、网络(Tcp/Udp/Http)、RPC框架、序列化(Binary/XML/Json)、APM性能追踪。
NewLifeX/AntJob
分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累!面向中小企业大数据分析场景。
NewLifeX/Stardust
星尘,轻量级分布式服务框架。配置中心、集群管理、远程自动发布、服务治理。服务自动注册和发现,负载均衡,动态伸缩,故障转移,性能监控。
NewLifeX/XCoder
新生命码神工具,代码生成、网络工具、API工具、串口工具、正则工具、图标工具、加解密工具、地图接口。
beetlex-io/BeetleX.Redis
A high-performance async/non-blocking redis client components for dotnet core,default data formater json protobuf and messagepack,support ssl
Version Downloads Last updated
6.0.2024.1116-beta0353 74 11/16/2024
6.0.2024.1113-beta0607 68 11/13/2024
6.0.2024.1101 2,096 11/1/2024
6.0.2024.1101-beta1025 90 11/1/2024
6.0.2024.1031-beta0120 105 10/31/2024
6.0.2024.1030-beta0959 88 10/30/2024
6.0.2024.1022-beta1409 102 10/22/2024
6.0.2024.1017-beta0335 87 10/17/2024
6.0.2024.1015-beta1005 80 10/15/2024
6.0.2024.1014-beta0223 129 10/14/2024
6.0.2024.1009-beta0730 152 10/9/2024
6.0.2024.1007-beta0814 91 10/7/2024
6.0.2024.1006 3,303 10/6/2024
6.0.2024.1006-beta1712 88 10/6/2024
6.0.2024.925-beta1105 136 9/25/2024
6.0.2024.921-beta0817 123 9/21/2024
6.0.2024.919-beta0039 112 9/19/2024
6.0.2024.917-beta0105 183 9/17/2024
6.0.2024.829-beta1442 101 8/29/2024
6.0.2024.829-beta0325 120 8/29/2024
6.0.2024.827-beta0103 103 8/27/2024
5.7.2024.830-beta2338 118 8/30/2024
5.7.2024.801 8,169 8/1/2024
5.7.2024.709 5,693 7/9/2024
5.7.2024.602 5,764 6/2/2024
5.7.2024.602-beta0456 132 6/2/2024
5.6.2024.526-beta1546 140 5/26/2024
5.6.2024.522-beta0209 119 5/22/2024
5.6.2024.508 6,546 5/8/2024
5.6.2024.508-beta1249 130 5/8/2024
5.6.2024.420-beta0005 1,479 4/20/2024
5.6.2024.419-beta0858 126 4/19/2024
5.6.2024.411-beta0755 342 4/11/2024
5.6.2024.409-beta0751 148 4/9/2024
5.6.2024.409-beta0725 92 4/9/2024
5.6.2024.403-beta0631 127 4/3/2024
5.6.2024.402 5,599 4/2/2024
5.6.2024.402-beta1733 121 4/2/2024
5.6.2024.319-beta0028 216 3/19/2024
5.6.2024.317-beta2316 152 3/17/2024
5.6.2024.307-beta0845 118 3/7/2024
5.6.2024.304 6,408 3/4/2024
5.6.2024.304-beta1306 169 3/4/2024
5.6.2024.223-beta1349 210 2/23/2024
5.6.2024.203 5,074 2/3/2024
5.6.2024.131-beta1503 104 1/31/2024
5.6.2024.123-beta0118 122 1/23/2024
5.6.2024.105 5,089 1/5/2024
5.5.2023.1213-beta0813 190 12/13/2023
5.5.2023.1213-beta0308 119 12/13/2023
5.5.2023.1201 8,352 12/1/2023
5.5.2023.1201-beta0625 155 12/1/2023
5.5.2023.1129-beta1059 158 11/29/2023
5.5.2023.1129-beta1042 149 11/29/2023
5.5.2023.1129-beta0951 123 11/29/2023
5.5.2023.1129-beta0929 141 11/29/2023
5.5.2023.1128-beta0013 118 11/28/2023
5.5.2023.1116-beta0006 155 11/16/2023
5.5.2023.1109-beta0627 163 11/9/2023
5.5.2023.1103-beta1404 175 11/3/2023
5.5.2023.1102 9,637 11/2/2023
5.5.2023.1101-beta1333 133 11/1/2023
5.5.2023.1031-beta0703 135 10/31/2023
5.5.2023.1010-beta0839 203 10/10/2023
5.5.2023.1008-beta0421 132 10/8/2023
5.5.2023.1001 26,209 10/1/2023
5.5.2023.928-beta0019 163 9/28/2023
5.5.2023.915-beta0733 223 9/15/2023
5.5.2023.828-beta1607 266 8/28/2023
5.5.2023.803 12,915 8/3/2023
5.5.2023.803-beta0326 141 8/3/2023
5.4.2023.722-beta1145 187 7/22/2023
5.4.2023.707-beta0321 238 7/7/2023
5.4.2023.624-beta0342 493 6/24/2023
5.4.2023.606-beta1138 294 6/6/2023
5.4.2023.604-beta1121 175 6/4/2023
5.4.2023.601 13,101 6/1/2023
5.4.2023.601-beta1704 149 6/1/2023
5.3.2023.520-beta0150 630 5/20/2023
5.3.2023.520-beta0002 201 5/20/2023
5.3.2023.512 6,664 5/12/2023
5.3.2023.512-beta1540 155 5/12/2023
5.3.2023.512-beta1004 178 5/12/2023
5.3.2023.511-beta0332 140 5/11/2023
5.3.2023.504-beta0359 168 5/4/2023
5.3.2023.421-beta0320 181 4/21/2023
5.3.2023.416-beta1213 265 4/16/2023
5.3.2023.408-beta0106 179 4/8/2023
5.3.2023.405-beta0134 229 4/5/2023
5.3.2023.401-beta1729 182 4/1/2023
5.2.2023.328-beta1250 274 3/28/2023
5.2.2023.318-beta1402 231 3/18/2023
5.2.2023.318-beta0211 175 3/18/2023
5.2.2023.313-beta1534 159 3/13/2023
5.2.2023.312-beta1044 176 3/12/2023
5.2.2023.311-beta1023 199 3/11/2023
5.2.2023.307-beta1030 188 3/7/2023
5.2.2023.307-beta0136 170 3/7/2023
5.2.2023.307-beta0130 149 3/7/2023
5.2.2023.304-beta0111 167 3/4/2023
5.2.2023.301 11,165 3/1/2023
5.2.2023.301-beta0441 161 3/1/2023
5.2.2023.301-beta0436 168 3/1/2023
5.1.2023.225-beta0127 258 2/25/2023
5.1.2023.214-beta0217 816 2/14/2023
5.1.2023.214-beta0205 159 2/14/2023
5.1.2023.207-beta0755 953 2/7/2023
5.1.2023.204-beta1040 153 2/4/2023
5.1.2023.203 9,005 2/3/2023
5.1.2023.203-beta1448 161 2/3/2023
5.1.2023.106-beta1424 1,830 1/6/2023
5.1.2023.101 2,977 1/1/2023
5.1.2023.101-beta0245 179 1/1/2023
5.0.2022.1201 17,133 12/1/2022
5.0.2022.1201-beta1317 172 12/1/2022
5.0.2022.1201-beta1250 165 12/1/2022
5.0.2022.1101 5,165 11/1/2022
5.0.2022.1101-beta0802 170 11/1/2022
5.0.2022.1017-beta1058 258 10/17/2022
5.0.2022.1016-beta0306 180 10/16/2022
5.0.2022.1014-beta0959 226 10/14/2022
5.0.2022.901 5,114 9/1/2022
5.0.2022.901-beta0617 167 9/1/2022
5.0.2022.813-beta1456 308 8/13/2022
5.0.2022.810-beta0542 205 8/10/2022
4.1.2022.809-beta0003 193 8/9/2022
4.1.2022.801 1,900 8/1/2022
4.1.2022.801-beta0124 193 8/1/2022
4.1.2022.704-beta0836 1,302 7/4/2022
4.1.2022.701 3,832 7/1/2022
4.1.2022.701-beta1330 198 7/1/2022
4.1.2022.609-beta1431 266 6/9/2022
4.1.2022.603 3,950 6/3/2022
4.1.2022.603-beta1006 182 6/3/2022
4.1.2022.501 12,432 5/1/2022
4.1.2022.501-beta0221 197 5/1/2022
4.0.2022.415-beta0501 264 4/15/2022
4.0.2022.401 7,636 4/1/2022
4.0.2022.320-beta0642 173 3/20/2022
4.0.2022.203 1,472 2/3/2022
3.9.2021.1216-beta1 332 12/16/2021
3.9.2021.1204 5,795 12/4/2021
3.9.2021.1001 10,060 10/1/2021
3.9.2021.709 6,928 7/8/2021
3.9.2021.629-beta1 233 6/29/2021
3.9.2021.505 2,183 5/5/2021
3.9.2021.427-beta2 241 4/27/2021
3.9.2021.407 7,888 4/7/2021
3.8.2021.303 1,699 3/3/2021
3.8.2021.202 1,773 2/2/2021
3.8.2021.115-beta1 537 1/15/2021
3.8.2021.101 3,825 1/1/2021
3.8.2020.1223-beta1 369 12/23/2020
3.8.2020.1201 1,437 12/1/2020
3.8.2020.1101 3,569 11/1/2020
3.8.2020.1023-beta3 397 10/23/2020
3.8.2020.1021-beta2 434 10/21/2020
3.8.2020.1018-beta 468 10/18/2020
3.8.2020.1002 6,355 10/2/2020
3.8.2020.930-rc4 339 9/30/2020
3.8.2020.930-rc3 349 9/29/2020
3.8.2020.927-rc2 382 9/27/2020
3.8.2020.918-beta3 431 9/18/2020
3.8.2020.914-beta 354 9/14/2020
3.8.2020.904-beta 494 9/4/2020
3.8.2020.901 971 9/1/2020
3.7.2020.822-beta4 446 8/22/2020
3.7.2020.819-beta3 383 8/19/2020
3.7.2020.809-beta2 447 8/9/2020
3.7.2020.806-beta 420 8/6/2020
3.7.2020.717-beta 407 7/17/2020
3.7.2020.701 1,317 7/2/2020
3.6.2020.601 2,542 5/31/2020
3.6.2020.308 3,448 3/8/2020
3.5.2020.209 948 2/9/2020
3.4.2020.101 1,172 1/1/2020
3.3.2019.1117 1,031 11/17/2019
3.3.2019.707 4,822 7/7/2019
3.2.2019.618 865 6/23/2019
3.2.2019.602 962 6/2/2019
3.1.2019.513 888 5/13/2019
3.0.2019.320 2,614 3/20/2019
3.0.2019.310 879 3/10/2019
2.1.6951.393 1,734 1/11/2019
2.1.6871.1098 3,101 10/23/2018
2.1.6839.36539 954 9/22/2018
2.0.6816.1474 3,974 8/29/2018
1.0.6441.4282 1,246 8/19/2017

内存优化,在高并发场合减少内存分配