我发起了一个 .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 。
我发起了一个 .Net Core 平台上的 分布式缓存 开源项目 ShareMemory 用于 取代 Redis的更多相关文章
- 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新
大家好, 我发起了一个 .Net Core 平台上的 开源项目 ShadowDomain 用于 热更新 . 简单的说, 原理就是 类似 Asp.net 那样 让 当前 WebApp 运行在一个 A ...
- 我发起了一个用 .Net 编写的 源代码管理工具 开源项目 SourceKit
发起这个 项目 的 起因 是 GitHub . Github 的 使用技能 俨然已经成了 一项新技术 , 这不是 工具 的 本意 . 我用过的 源代码 管理工具 不多, SVN 我觉得不错 . 常用 ...
- 我发起了一个 操作系统 GUI 和 Tcp / IP 包 的 开源项目 DeviceOS
操作系统 如果 不需要 处理 复杂多样 的 硬件 兼容性, 其实 并不算 大项目, 可以算 毕业设计 . 但是, GUI 和 Tcp / IP 这两个 部分 的 实现逻辑 很多 很复杂, 这 2 ...
- 我发起了一个 支持 PostgreSql 的 外围设施 的 .Net 开源项目
目标 : 让 PostgreSql 成为 通用的 跨平台 的 数据库 , 成为 开发者 喜爱 的 利器 . 要做的事 , 当然 , PostgreSql 本身现在不用我们去做什么 . 一个 数据库 ...
- GitHub上不错的Android开源项目(三)
收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) GitHub上不错的Android开源项目(一):http://ww ...
- GitHub上不错的Android开源项目(二)
收集相关系列资料,自己用作参考,练习和实践.小伙伴们,总有一天,你也能写出 Niubility 的 Android App :-) 系列文章如下: GitHub上不错的Android开源项目(一):h ...
- [转]GitHub上优秀的Go开源项目
转载于GitHub上优秀的Go开源项目 正文 近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用.技巧 ...
- 如何在 Github 上发现优秀的开源项目?
之前发过一系列有关 GitHub 的文章,有同学问了,GitHub 我大概了解了,Git 也差不多会使用了,但是还是搞不清 GitHub 如何帮助我的工作,怎么提升我的工作效率? 问到点子上了,Git ...
- SNF快速开发平台MVC-集成了百度开源项目echars
百度开源项目echars图表样式非常丰富,而且开源免费.非常好.所以在我们框架当中也进行了集成echars完成图表任务. 我们进行了两次封装,利于我们开发使用.我也看到过有些架构师 按echars里的 ...
随机推荐
- Iscloc用法笔记
一. Iscloc的安装(使用Docker CE) 1.install Docker CE: https://www.digitalocean.com/community/tutorials/how- ...
- 四则运算 来源:一位热心的网友 http://www.tqcto.com/article/software/336297.html
功能:实现真分数的四则运算 语言:Java 平台:JDK下的eclipse github地址:https://github.com/yeershao/hello-world/commit/9920a ...
- Vuejs2.0学习(Render函数,createElement,vm.$slots)
直接来到进阶部分, Render函数 直接来到Render,本来也想跳过,发现后面的路由貌似跟它还有点关联.先来看看Render 1.1 官网一开始就看的挺懵的,不知道讲的是啥,动手试了一下,一开头讲 ...
- leetcode第15题:三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三元组. ...
- python day10 参数,命名空间
一.函数的参数--动态传参 1.动态接收位置参数 1.1在参数位置编写*表示接收任意多个内容 def chi(*food): print("我要吃", food) chi(&quo ...
- FZU 1759-Super A^B mod C
传送门:http://acm.fzu.edu.cn/problem.php?pid=1759 Accept: 1161 Submit: 3892Time Limit: 1000 mSec ...
- saliency 2015-2016的论文、代码
https://github.com/ArcherFMY/Paper_Reading_List 另外2013年之前的见chengmingming的benchmark主页.
- 豆瓣电影 Top 250
import refrom urllib.request import urlopen def getPage(url): # 获取网页的字符串 response = urlopen(url) ret ...
- 20155208 2016-2017-2 《Java程序设计》课程总结
20155208 2016-2017-2 <Java程序设计>课程总结 一.每周作业及实验报告链接汇总 一路无悔 感恩有你(预备作业一):浅谈师生关系及对java学习的期望. 精益求精,从 ...
- FZU软工第六次作业-团队选题报告
作业链接 队长博客:陈晓彬 团队选题报告 选题报告PPT 原型展示 前言 经过团队的讨论,我们对自己的选题进行了项目立意的进一步确定,后面有项目来源.同时,我们将自己的APP的名字改成了"一 ...