Redis
学习
应用场景
- Token令牌的生成
- 短信验证码的code
- 可以实现缓存数据的查询
- 帮助实现计数器
- 分布式锁
- 延迟操作(对key做时间监听,多长时间过期)
- 分布式消息中间件
Redis
数据类型

String类型
Redis
最基本的类型,一个key对应一个value,String类型时二进制安全的。比如jpg图片或者序列化的对象,一个键最大能存储512MB
。
Hash类型
- 可以将
Redis
中的Hash类型看成具有<key,<key1,value>>
,其中同一个key可以有多个不同key值的<key1,value>
,所以该类型非常适合于存储值对象的信息。如Username、Password和Age
等。如果Hash
中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。
List类型
Redis
列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
集合(Set)
有序集合(sorted set)
Redis
有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis
正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。
MySQL
与Redis
一致性问题
- 直接清除
Redis
的缓存,重新读取数据库
- 使用
mq
异步订阅mysql binlog
实现增量同步
- 使用
alibaba
的canal

缓存击穿

热点key过期(或者没有被缓存的)
数据库有 大量的并发redis没有缓存
过缓存穿透
解决方案
- 对服务接口api实现限流、用户授权、黑名单和白名单拦截;
- 从缓存和数据库都查询不到结果的话,一样将数据库空值结果缓存到redis中;
- 设置30s有小气避免使用同一个id对对数据库攻击;
- 布隆过滤器;


缓存雪崩


参考资料:https://mp.weixin.qq.com/s/bjKSM7l8upeFcaxNlYmSyA
原课堂笔记地址:http://file.chenmx.net/s/0wTG
评论区