本地缓存
缺点:
容量有限,多服务器间不能共享
分布式缓存
Memcached,
Nosql-Redis
Nosql,
特点,
基于内存,
没有严格的数据格式, 不是一行数据的列必须一样
丰富的类型
Remote Dictionary Server(Redis)
基于内存管理,实现5种数据库机构(应对各种需求),单线程单进程的程序,
对外提供插入-查询-固化-集群
固化方式,Virtual Memory 存储不经常访问的,可以配置,down会丢失数据
AOF :数据变化记录日志,不常用
Redis 不是数据库,只能用来提升性能,不能作为最终的数据依据
Redis 是单线程模型,整个进程只有一个线程,但是性能不低。
单线程最大的好处就是原子性,要么都成功,要么都失败,不会出现中间状态,
Redis每个命令都是原子性(因为单线程),所有不需要考虑并发。
5大结构
string ,
hash,
set,
zset,
list
string,int, 空间浪费
超卖业务,使用redis, 特点:
(原子性)
保证不会超卖,
没有锁,无效率影响,
限制秒杀的库存放在redis,不是数据库,不会造成数据不一致性
Redis能够拦截无效请求,数据库压力减小。
撤单时候继续秒杀,
hash, 不会空间浪费,因为紧密排列。 节约空间,更新方便,结构灵活。
key对应key,value 集合, 性能较快,含有id才能用,字段可以随意定制。
类似关系表中的一条数据,
序列号反序列化有性能问题,
set, 无序去重(可应用于 取 子集,交集,并集等)
zset (可应用于刷礼物 实时排行榜 展示)
缓存击穿、穿透,缓存down掉,请求全部到数据库
缓存预热功能,启动时初始化缓存。
List, 异步队列,
应用场景,流量削峰,高可用,可扩展(用户交互环节和数据处理环节隔离)
缺点:不能立即处理,事务问题。