福哥答案2020-07-20:
1.由于 Redis 是内存数据库,短时间内大量增加数据,可能导致内存不够用。
2.redis是单线程的,单台服务器无法充分利用多核服务器的CPU。
3.遇到大量查询时容易阻塞。
4.缓存和数据库双写一致性问题。
5.缓存雪崩问题。
6.缓存击穿问题。
7.缓存的并发竞争问题。
8.内存碎片问题。
9.Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
10.redis的主从复制采用全量复制,复制过程中主机会fork出一个子进程对内存做一份快照,并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运营造成了不小的麻烦。
11.Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。
需要改进的地方是分布式,存储海量数据。