写点什么

阿里 P8 十年摸爬滚打,告诉你上古程序猿为何反对使用 Redis?

作者:Java高工P7
  • 2021 年 11 月 12 日
  • 本文字数:984 字

    阅读完需:约 3 分钟



为什么要用 Redis?是不是一定要用 Redis?


项目中使用 Redis,主要考虑性能和并发。其实不是所有的场景都要上 Redis,如果仅仅是分布式锁这些,完全可以用中间件 Zookpeer 等代替。很多业务系统其实用数据库就够了,无脑上缓存/NOSQL 可能会带来更多更严重的问题。


性能:


如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用 Redis 做一个缓冲操作,让请求先访问到 Redis,而不是直接访问数据库。



提个问题:Redis 慢查询操作,该如何优化?


并发:


如下图所示,在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用 Redis 做一个缓冲操作,让请求先访问到 Redis,而不是直接访问数据库。





谨!慎!使!用!缓!存!


**无数大佬都提醒我们:**谨慎使用缓存!


缓存失效是计算机科学两大难题之一(另一大难题是命名),缓存会掩盖掉一些问题,甚至放大问题。


使用 Redis 最常遇到的问题主要就是以下 4 个:


1、缓存和数据库双写一致性问题

2、缓存雪崩问题

3、缓存击穿问题

4、缓存的并发竞争问题


从安全角度来说,缓存也是最容易被攻击的薄弱点(缓存溢出攻击,不是缓存区溢出攻击,用大量无效的数据占满缓存空间使得系统性能断崖式下跌)。


所以通常做压力测试的时候都是要求必须关闭缓存测试。


不单单是缓存,所有的中间件在解决一部分问题的同时也会带来新的挑战。


譬如消息队列对于削峰填谷的功效非常明显,但是如果峰值持续的时间远远的超出了估计呢?而如果这时候消息阻塞的监控还在计划中的话……


比如说分布式计算带来了无限扩容的可能,而一致性问题很多时候会带来非常多的麻烦。


看到这里,你还敢说自己会 redis 吗?关于 Redis 的这 8 个阿里面试题,你能否答得上来?


1.Redis 相比 memcached 有哪些优势?


2.Redis 常见性能问题和解决方案


3.MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据


4.Memcache 与 Redis 的区别都有哪些?


5.Redis 常见的性能问题都有哪些?如何解决?


6.Redis 最适合的场景


7.Redis 的同步机制了解么?


8.是否使用过 Redis 集群,集群的原理是什么?

Redis 面试题

![](https://upload-images.jianshu.io/upload_images/15590149-c73d526428c67354?


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
阿里P8十年摸爬滚打,告诉你上古程序猿为何反对使用Redis?