Redis相关面试题整理

1、什么是Redis事务?原理是什么?

 Redis中的事务是一组命令,是Redis的最小执行单位,一个事务要么都执行,要么都不执行。Redis事务保证一个事务内的命令依次执行,而不会被其他命令插入。Redis事务的原理是先将属于一个事物的命令发送给Redis,依次执行这些命令。

2、什么是缓存穿透?怎么解决?

穿透是指缓存中查询一个不存在的数据,需要去数据库中获取。如果数据也查询不到结果,将不会同步到缓存,导致这个不存在数据每次请求都要到数据库查询,失去了缓存的意义。
    解决方法有两个:
    ①、布隆过滤:将所有查询的参数都存储到一个bitmap中,在查询之前,先再找个bitmap里面进行验证。如果bitmap中存在,则进行底层缓存的数据查询;如果bitmap中不存在查询参数,则进行拦截,不在进行缓存的数据查询。试用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集。
    ②、缓存空对象如果查询返回的数据为空,仍然把这个空的结果进行缓存。那么在此用相同key获取数据的时候,及时不存在的数据,缓存也可以直接返回空值,避免重复访问DB。
    缓存空对象有两个不足之处:
    缓存层将存储更多的键值对,如果是恶意的随机访问,将造成内存空间的浪费。这个不足之处可以通过将这类数据设置很短的过期时间来控制。DB与缓存数据不一致,这种可以考通过异步消息来进行数据更新的通知,在一定程度上减少这类不一致的时间。

 3 . Redis 常用的命令有哪些?

4、怎么去发现Redis阻塞异常情况?

    ①、通过应用服务监控发现,当Redis阻塞的时候,线上应用服务应该感知发现,比如说发现Redis链接超时等。这种就需要应用服务增加对于异常的统计,并针对Redis相关的异常进行报警。
    ②、通过Redis自身监控系统借助Redis监控系统发现阻塞问题,当监控系统发现各个监控指标存在异常的时候,发送报警。指标有:CPU/内存/磁盘等,慢查询,命令耗时增加等。 

5、Redis持久化机制AOF和RDB有哪些不同之处?

两者的区别:RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘中,实际操作过程是fork一个子进程,先将数据集写入临时文件中,写入成功之后,在替换之前的文件,用二进制压缩存储。

AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作、查询操作不会记录,以文本的形式记录、可以打开文件看到详细的操作记录。

  • 为什么 Redis 需要把所有数据放到内存中?
  • Redis 是单线程的吗?
  • Redis 为什么设计成单线程的?
  • 什么是缓存雪崩? 怎么解决?
  • 缓存的更新策略有几种?分别有什么注意事项?
  • 请介绍几个可能导致 Redis 阻塞的原因
  • Redis 集群架构模式有哪几种?
  • Redis 集群最大节点个数是多少?
  • Redis 集群的主从复制模型是怎样的?
  • 请介绍一下 Redis 集群实现方案
  • Redis 集群会有写操作丢失吗?为什么?
  • Redis 慢查询是什么?通过什么配置?

答案就在这个链接中:https://zhuanlan.zhihu.com/p/101416339 

参考链接:https://www.zhihu.com/topic/19557280/hot

总之总结的挺不错的,收藏一下地址,好记性不如烂笔头。

发布了23 篇原创文章 · 获赞 12 · 访问量 9526

猜你喜欢

转载自blog.csdn.net/geng2568/article/details/103953297