Redis 问题自答

0、在集群模式下,Redis 的 Key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 Hash 算法吗?

1hash算法 2一致性hash算法3slot hash算法

1、使用Redis有哪些好处?

性能高 单机服务可支持100万tps

原生支持集群部署和主从模式,保证服务高可用

支持rdb和aof的备份模式,保证数据安全

支持多种数据格式

2、Redis相比Memcached有哪些优势?

redis支持多种格式,原生支持集群部署,redis是单线程模式,在操作小于100kb的数据上用性能优势

3、Redis常见性能问题和解决方案

1 master rdn 备份生成快照是,如果文件过大会导致服务不可用

2 master aof 备份时产生文件过大,导致重启时间过长,应使用一台slave进行同步

3 master slave 应处于同一局域网

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

redis淘汰策略

5、Memcache与Redis的区别都有哪些?

redis使用单线程 mc使用多线程

redis支持多种数据结构,mc 只能使用string

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

7、在什么样的场景下可以充分的利用Redis的特性,大大提高Redis的效率?

8、Redis的缓存雪崩、穿透、击穿了解么?有什么异同点?分别怎么解决?

雪崩指的是同一时间缓存全部失效,大量请求直接达到db层,再设置失效时间是增加一个随机数,确保不要同时失效

缓存穿透只请求的数据是一个不存在的数据,导致直接查询db层,查询空数据也进行缓存,使用bloomfilter过滤非法请求

缓存击穿指针对同一个key发送大量请求,但改请求失效的时候,大部分请求会直达db层,对一些热点数据设置缓存用不超时

9、Redis的基本类型有哪些?他们的使用场景了解么?比较高级的用法你使用过么?

string hash sort sortset list

使用string 来进行接口幂等控制,做session共享

使用sortset 进行热点数据的排序

bitmap hypedlog bloomfilter

10、Redis主从怎么同步数据的?集群的高可用怎么保证?持久化机制了解么?

slave启动后 向master 发送psync 命令 ,master 将rdn数据传输给slave 并将aof 数据同时发送给slave

使用哨兵保证高可用,一般至少使用三个节点,保证master 挂了两个节点能选举出新的节点作为master

rdn快照 ,周期性备份数据

aof,使用append only的模式,记录数据的写操作,一秒同步一次

11、为什么 redis 单线程却能支撑高并发?

redis使用file event handle 文件处理器 ,这个文件处理器是单线程

file event handle(PS 与nio 类似架构)

  1. 多socket

  2. IO多路复用程序

  3. 文件时间分派器

  4. 事件处理器(连接应答,命令请求,命令回复 )

性能高的原因

纯内纯操作,存取效率高

非阻塞的io多路复用

使用C语言开发,相对编译效率高

使用单线程,避免频繁上下文切换

12、如何保证缓存和数据库数据的一致性?

1 一般允许缓存在与数据差异

2缓存策略,如果缓存中无数据,查询数据并存入缓存

如果数据修改,删除缓存

13、项目中是怎么用缓存的,用了缓存之后会带来什么问题?

posted @ 2020-08-10 15:45  cheakceep  阅读(166)  评论(0编辑  收藏  举报