下面的面试题都来源于网上,当时记笔记的时候忘记记是哪些地址了,实在是不好意思,很感谢大家的分享

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

为什么要用redis(缓存)

1. 性能上:用户访问,如果直接从数据库中查数据,因为是从硬盘上读取,所以比较慢,如果将用户访问的数据放入缓存中,那么因为redis是属于内存数据库,直接操作内存,会快很多。

2. 并发上:缓存能够承受的请求数量远远大于传统数据库的,所以直接访问缓存中的数据可以有效的应对高并发的情形。

如何定期清除redis无用的缓存数据

1. 设置key的时候设为带过期时间的。

2. 第二种就是针对那种需要清除的key提前入库,然后通过定时任务清除。

单线程的redis为什么这么快

1. 纯内存操作。

2. 单线程操作,避免了频繁的山下文切换。

3. 采用了非阻塞I/O多路复用机制。

4. redis利用队列技术将并发访问变成串行访问,消除了传统数据库串行控制的开销。

redis为什么是单线程的

多线程处理会涉及到锁,而且多线程处理会涉及到线程切换而消耗CPU,因为CPU不是redis的瓶颈,redis的瓶颈最有可能是机器内存或者网络带宽。单线程无法发挥多核CPU性能,不过可以通过在单机开多个实例来解决。

对于大量的请求redis是怎样处理的

1. redis是一个单线程程序,也就是说同一时刻它只能处理一个客户端请求。

2. redis是通过IO多路复用来处理多个客户端请求的。

缓存的失效

应用程序先从缓存中取数据,没有取到,那么就去数据库中取,如果成功了,就将它再放入到缓存中。

缓存的命中

应用程序从缓存中取数据,取到后返回。

缓存的更新

先将数据存到库中,成功后,再让缓存失效。

什么是缓存穿透

正常的缓存系统都是先根据key去缓存中查找,查到了就返回,查不到就再去数据库中查,那么一些恶意的请求会故意查询大量的缓存中没有的key,这就会使得这些请求都去访问数据库,请求量越大,后端系统的压力就越大,最后就很有可能导致崩溃,这就叫做缓存穿透。

什么是缓存雪崩

当缓存服务器重启或大量缓存在一个时间段都同时失效,那么请求来的时候在缓存中查不到,会再去数据库中查,请求过多就可能会导致系统崩溃。

什么是缓存击穿

跟缓存雪崩类似,区别在于这里针对某一个key缓存,而雪崩是针对很多key

什么是缓存预热

缓存预热就是系统上线以后,提前将一些缓存数据加载到缓存系统,

redis的持久化方案RDB和AOF

RDB:快照形式,定期把内存中的当前时刻的数据保存到磁盘中,redis默认支持的持久化方案,速度快,但是服务器断电的时候有可能丢失部分数据。

AOF:就是将所有对redis操作的命令,crud的命令,保存到一个文件中,数据库恢复的时候,将所有的命令执行一遍就可以了,速度慢,不过数据比较完整,与RDB同时开启的时候,会使用AOF来恢复数据。建议两个同时使用。

redis和memcached的区别

1. redis支持更丰富的数据类型(String list set zset hash等)memecached只支持string(新版增加二进制类型)。

2. redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用,memecached不支持数据的持久化,是把数据都存在内存中。

3. redis单线程多路IO复用模型,memcached是多线程非阻塞IO复用的网络模型。

redis的优点

1. 读写快(因为数据是在内存中)

2. 数据类型丰富(string hash list set zset)

3. 支持事务,且操作都是原子性(原子性就是事务要么操作成功,要么失败回滚)

4. 可以用于缓存,消息队列,给key设置过期时间,到期自动删除

5. 支持数据持久化(AOF/RDB),防止数据丢失

6. 支持主从复制(master-slave)来实现数据备份,主机会自动将数据同步到从机。

redis的哨兵和复制

如果redis服务器突然挂掉了,那么如何保证备份的机器是原始服务器的完整备份呢,这个时候就需要哨兵和复制。哨兵可以管理多个redis服务器,它提供了监控,提醒以及自动的故障转移的功能,复制则是负责让一个redis服务器可以配备多个备份的服务器。redis也是利用这两个功能来保证redis的高可用性的。

redis支持的java客户端都有哪些,官方推荐哪个

Redisson,Jedis,lettuce等等,推荐redisson

redis有哪些适合的场景

1. session共享(单点登录)

2. 页面缓存

3. 队列

4. 排行榜/计数器

5. 发布/订阅

redis回收进程如何工作的,redis回收使用的什么算法

一个客户端运行了新的命令,添加了新的数据,redis检查内存使用的情况,如果大于maxmemory的限制,则根据设定好的策略进行回收。 LRU算法

 

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄