Redis缓存设计
收益如下:
加速读写:因为缓存通常都是全内存的(例如Redis、 Memcache),而
存储层通常读写性能不够强悍(例如MySQL),通过缓存的使用可以有效
地加速读写,优化用户体验。
降低后端负载:帮助后端减少访问量和复杂计算(例如很复杂的SQL
语句),在很大程度降低了后端的负载。
成本如下:
数据不一致性: 缓存层和存储层的数据存在着一定时间窗口的不一致性, 时间窗口跟更新策略有关。
代码维护成本: 加入缓存后, 需要同时处理缓存层和存储层的逻辑,
增大了开发者维护代码的成本。
运维成本: 以Redis Cluster为例, 加入后无形中增加了运维成本。
缓存的使用场景基本包含如下两种:
开销大的复杂计算: 以MySQL为例子, 一些复杂的操作或者计算(例
如大量联表操作、 一些分组计算) , 如果不加缓存, 不但无法满足高并发
量, 同时也会给MySQL带来巨大的负担。
加速请求响应: 即使查询单条后端数据足够快(例如select*from table
where id=) , 那么依然可以使用缓存, 以Redis为例子, 每秒可以完成数万
次读写, 并且提供的批量操作可以优化整个IO链的响应时间。
Last updated