侧边栏壁纸
博主头像
晓果冻博主等级

一个热爱生活的95后精神小伙

  • 累计撰写 131 篇文章
  • 累计创建 15 个标签
  • 累计收到 67 条评论

目 录CONTENT

文章目录

Redis学习

晓果冻
2022-05-22 / 0 评论 / 3 点赞 / 454 阅读 / 667 字
温馨提示:
本文最后更新于 2022-05-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Redis学习

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

Redis数据类型

image-20220418102737541

String类型
  • Redis最基本的类型,一个key对应一个value,String类型时二进制安全的。比如jpg图片或者序列化的对象,一个键最大能存储512MB
Hash类型
  • 可以将Redis中的Hash类型看成具有<key,<key1,value>>,其中同一个key可以有多个不同key值的<key1,value>,所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。
List类型
  • Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
集合(Set)
  • Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

    Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

有序集合(sorted set)
  • Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。
MySQLRedis一致性问题
  • 直接清除Redis的缓存,重新读取数据库
  • 使用mq异步订阅mysql binlog实现增量同步
  • 使用alibabacanal

image-20220418104435827

缓存击穿

image-20220418165135348

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

image-20220418172816759

缓存雪崩

image-20220418172718707

image-20220418164841772

参考资料:https://mp.weixin.qq.com/s/bjKSM7l8upeFcaxNlYmSyA

原课堂笔记地址:http://file.chenmx.net/s/0wTG

3

评论区