缓存使用背景
一说缓存使用,相信大多数缓存使用者脑海中第一印象是redis,redis缓存高性能,提供丰富的数据类型,String,list,set,zset,hash。除了上述优势之外还提供多种集群方式,这是Memcached所不具备。redis提供基于Sentinel 机制主从节点集群方案,还提供客户端集群方式RedisSharding,服务端实现集群Cluster、codis。
Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。本公司基于原子性数据迁移,在不停机情况实现热扩容和非常友好的后台集群管理的界面(提供热扩容、槽分配,数据迁移等操作),选择了codis 。
言归正传目光焦点还是转移到高并发场景下,缓存如何使用。首先分析一下高并发场景,高并发意味找有大量请求进来,进行数据读写。如果大量请求瞬间直接打到DB层,那估计DB凶多吉少了。数据库一宕机,应用服务直接就跪了。有人说数据库得分库分表吧,没有错,有读写压力就得考虑数据库集群。基于成本考虑,数据库节点不能无限制增加。况且高并发场景下,追求是更快响应速度和更高吞吐量。从数据库读取还是不够快。这时你考虑使用缓存了。
大多数