缓存
Redis最主要的使用场景就是作为缓存
缓存的更新策略:
1.定期生成
2.实时生成
面试重点:
缓存预热(Cache preheating):
缓存穿透(Cache penetration)
缓存雪崩 (Cache avalanche)
缓存击穿 (Cache breakdown)
分布式锁
分布式锁的基本实现:
引入过期时间:
引入校验Id:
引入lua脚本:
引入watch dog(看门狗)
引入Redlock算法:
缓存
核心思路就是把⼀些常见的数据放到触手可及(访问速度更快)的地方, 方便随时读取.
访问速度特别的快,但由于存储空间是有限的,所有我们只能存储“热点数据”(频繁访问的数据)在Redis中
俗称“二八定律”:20%的热点数据,可以应对80%的应用场景,从而整体上的性能得到提升
Redis最主要的使用场景就是作为缓存
对应MySQL这种访问硬盘的数据库,Redis是内存数据库,Redis用做为MySQL的缓存
为什么MySQL性能不高?
1.首先数据存储在硬盘上,硬盘IO需要花费大量时间,尤其是随机访问;
2.如果查询中不能命中索引,那么将需要表的遍历,大大增加硬盘IO的次数
3.对应执行SQL需要一系列的解析,校验等等工作
4.如果是一些复杂查询,例如联合查询,笛卡尔积之类的操作效率会很低…
如果数据库并发量特别高,那么它将会可能出现宕机(出现故障,罢工了,不做了)的情况
如何解决?
1.开源:增加多个设备,部署更多的数据库机器,构成数据库集群
2.节流:引入缓存,访问的时候尽量访问缓存内的数据,从而降低直接访问数据库的请求数量
实际开发中,往往是俩种方法结合起来使用
Redis为什么可以作为MySQL的缓存:
R