我发起了一个 .Net Core 平台上的 分布式缓存 开源项目 ShareMemory 用于 取代 Redis

Redis 的 安装 是 复杂 的, 使用 是 复杂 的, 

Redis 的 功能 是 重型 的, 

Redis 本身的 技术实现 是 复杂 的 。

 

Redis 是用 C 写的, C 语言 编写的代码需要直接调用 操作系统 底层 API, 如 系统套接字(Socket), 系统 IO, 这会导致 移植性 兼容性 稳定性 的 问题 。

C 语言 编写的代码是晦涩的,  难以维护的。

 

Redis 是一个 NoSql 数据库, 却被拿来当成 分布式缓存 用,  Redis 里 居然有 “Snapshot”  …… ,  而且 这个 Snapshot 是要写 磁盘 的 。 ……   。

没人知道 Redis 报出的 错误信息 是什么意思,  看到 Redis 的 报错信息,   感觉就像走到了一间 摆满了 老式机器 的 废旧工厂 。

 

所以, 我们应该 把 分布式缓存 和 数据库 这 2 个 职能 从 Redis 里 分解 出来, 用 新的方式 来实现 。

 

1   占用空间小 的 轻量 的 数据 可以存放在 分布式缓存,  轻量 的 数据 比如 用户状态, 业务对象 的 Key(注意只是 Key), 并行计算 的 状态数据, Token 等,

2   占用空间大 的 “资料性质” 的 重量 的 数据 应该存放在 数据库 。

 

我 建议 能够保存在 本地内存 里的 数据(对象) 不要 放到 分布式缓存, 如果 分布式缓存 只要 保存 业务对象 的 Key 就可以, 那么就只 保存 Key, 而不要保存 业务对象 。 比如, 一些 “秒杀” 的 场景,  要 锁定 被秒杀 的 商品,  实际上只需要 对   商品的 ID(Key)  锁定,  这样在 分布式缓存 里 只要 保存 商品 ID (Key) 就可以,  没必要 保存 商品对象 。

 

可以参考我写的一篇文章 《论 业务系统 架构 的 简化 (二) 用 关系数据库 作 缓存》  https://www.cnblogs.com/KSongKing/p/9928412.html

 

分布式缓存 可以作为 服务器集群 的 共享内存, 也只应该作为 共享内存 这个 角色 。

 

可以再参考我写的一篇文章 《.Net Core 应用方向 图谱》  https://www.cnblogs.com/KSongKing/p/10209880.html

里面提到 :

MessageRPC 和 ShareMemory 是 我写的 2 个项目, MessageRPC 是一个简单的 RPC,  ShareMemory 是一个 简单的 分布式缓存 。

我现在写的 ShareMemory 这个项目,  可以看作是一个 开始 或者 尝试 。

 

我们完全 可以 开发 一款 轻量化 的 ,  部署简单 ,  使用简单 , 但是 又能 容易 的 实现 服务器 之间 的 共享数据 的 “共享内存” 的  分布式缓存 。

这款 新的 轻量 的 分布式缓存 ,  由 .Net (.Net Core) C#   开发编写,

代码 和 平台  清晰透明,     容易理解 和 维护 。

 

分布式缓存 会 涉及 Hash 表, 可以参考 《自己写一个 Hash 表》  https://www.cnblogs.com/KSongKing/p/10425152.html  。

 

 

posted on   凯特琳  阅读(723)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示