一般, 分布式缓存 是 NoSql 数据库, 好比 Redis 。数据库
但 实际上 咱们 能够用 关系数据库 来 做 缓存 。缓存
好比 经常使用的 商品列表 等, 能够用 关系数据库 来做 缓存, 查询 排序 维护 都很方便 。架构
这种状况 其实 就是 在 主数据库 外 再建一个 数据库 用于 查询, 分布式
经过 Job 定时 同步 主数据库 的 资料 到 这个 “缓存”数据库 就能够 。spa
根据须要, 咱们能够在 主数据库 外 创建 多个 “缓存”数据库, 也能够 称为 外围数据库, 周围数据库, 卫星数据库 。.net
经过 Job 定时 同步数据 到 这些 卫星数据库 。线程
这样的架构, 井井有理 。对象
在 大环境 上, 硬件技术 和 关系数据库技术 在 近几年 取得了 长足 的 进步, 而且这一趋势在将来还将延续 。blog
能够看看这篇文章 《CAP, BASE, 最终一致性和五分钟原则》 https://blog.csdn.net/u013613428/article/details/55259924排序
里面提到 “内存是硬盘, 硬盘是磁带” 。
分布式缓存 , 好比 Redis , 能够做为 集群 的 共享内存, Server 们 经过 Redis 来 共享数据, 通讯, 同步协做 。
Redis 提供的一些数据类型仍是 颇具价值 的, 好比 队列 Queue, 以及 Block Pop 等 Block 操做 。
能够用于 Server 间 共享数据, 通讯, 同步协做 。
Server 间 的 共享数据, 通讯, 同步协做 和 线程间 的 共享数据, 通讯, 同步协做 是 相似的 ,
线程间 经过 内存 来 共享数据, 经过 Lock 来 同步协做,
Server 间 则 利用 Redis 这样的 分布式缓存 做为 共享内存, 利用 Redis 提供的 Lock , 或者 Block 操做 来 同步协做 。
用 关系数据库 做为 缓存 的好处是, 访问 缓存 和 访问 数据库 的 代码 是同样的, 处理数据 的 方式 也是同样的,
访问 和 处理 数据 的 思惟 是同样的 。
只须要 工厂方法 返回 适当的 链接对象(Connection) 便可 。
这样好像 回到了 十多年前 甚至 更早, 好像 回到了 远古 的 草原 和 森林, 啊, 呼吸着新鲜的空气 。
又好像回到了 大学 的 某个 早晨, Sql 代码,再加一杯 咖啡, 再来一抹阳光, So Fresh ~~ 。
我不同意 把 关系数据 变成 Key-Value 数据, 再在 应用程序 里用复杂的 对象关系 把 Key-Value 数据 包起来 。
Sql , 数据 , 代码 , 咖啡 , 阳光 , 岂不甚好 ?