.net环境下跨进程、高频率读写数据
一、需求背景 1、最近项目要求高频次地读写数据,数据量也不是很大,多表总共加起来在百万条上下。 单表最大的也在25万左右,历史数据表因为不涉及所以不用考虑, 难点在于这个规模的热点数据,变化非常频繁。 数据来源于一些检测设备的采集数据,一些大表,有可能在极短时间内(如几秒钟)可能大部分都会变化, 而且主程序也有一些后台服务需要不断轮询、读写某种类型的设备,所以要求信息交互时间尽可能短。 2、之前的解决方案是把所有热点数据,统一加载到共享内存里边,到也能够支撑的住( 毫秒级的 ),但是由于系统架构升级,之前的程序(20年前的)不能兼容。 只能重新写一个,最先想到的是用redis,当时把所有API重写完成后,测试发现效率不行, 是的,你没有看错,redis也是有使用范围的。 3、 redis读写非常快,但是对于大批量读写操作我觉得支持不够, 虽然redis支持批量读写,但是效率还是不够快, 对于字符串(string)类型的批量读写,我测试过; 效率比较好的在每批次200 至 250条之间,处理20万条数据耗时5秒左右, (PC机,8G,4核) 而对于有序集合(sorted set)类型,批量写的操作用起来非常别扭, 而且没有修改API(如有其他方式请指教) ,我测试过,效率没string类型那么高 其他类型不适合我的业务场景,就没考虑使用了 4、所以项目组最后决定还是用回共享内存