一般, 分佈式緩存 是 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 , 數據 , 代碼 , 咖啡 , 陽光 , 豈不甚好 ?