【运维面试】面试官:你们的redis主要用来做什么?

前言

redis在面试中也是经常被问到的技术点,但运维的面试和开发的不同,运维最多问这几个问题(以三点工作经验的运维为例)

  1. redis你们主要用来做什么?
  2. 你们的redis主要用来存储哪些数据?
  3. redis 持久化怎么做的?
  4. redis的架构怎么做的?

看吧,连redis缓存雪崩,击穿,穿透都不会问,更不用说redis的基础命令了。今天我们主要来讨论前两个,redis主要用来做什么以及主要缓存哪些数据

毕竟redis还是开发用的多,当然作为一个优秀的运维,还是要了解下redis相关的知识,万一开发也不懂,你可以教教他嘛。

redis的使用场景

  • 分布式锁(类似zookeeper,但是又比zookeeper弱)
  • 消息通知 (类似于kafka,但是比kafka弱)
  • 做缓存服务 ,读多写少的场景(类似于memcache,但有持久化)
  • 统计网站访问量,当前在线人数
  • 统计网站所有的独立IP
  • 利用好友交集推荐好友
  • 缓存电商网站初始化页面
  • 热点数据:新闻的实时热点,微博热搜,需要频繁更新的热点数据。

redis有哪些数据类型

  • String
  • Hash (用来存储用户的ID,昵称,头像,积分)
  • List :反向查找和遍历,reids分页
  • set : 当你存储一个列表数据,又不希望出现重复数据,可以使用这个
  • sort set : 按照某个权重进行排序,比如通过点击数做出排行榜的数据应用

游戏服务器用reids缓存哪些数据

  • 玩家等级的排名,金钱的排名,战斗力的排名,排行榜实时刷新
  • 多个服务器之间通过reids来交换数据,发送事件
  • 瞬间变换的数据,比如金钱,经验,以及玩家完成任务的ID集合
  • 玩家的活动数据

电商服务器redis缓存

  • 不需要实时更新但及其消耗数据库的数据,比如网站首页商品的销售量排行榜,热搜商品。
  • 需要实时更新,但数据更新频率不高的数据
  • 每次获取这些数据都需要经过复杂的处理逻辑的数据,比如生成报表

什么是缓存击穿

比如一个游戏服务器,reids缓存了很多玩家的活动数据,这这些玩家很多已经长时间未登陆了,redis有过期删除机制,这些玩家的活跃数据已经过期,所以从redis中删除了。 也就是用户如果又突然登陆了是需要到数据库里读取数据,然后在缓存到redis的。 这一天运营搞了个活动,导致这一批过期用户都回来了,这些用户的活动数据就需要从数据库拉取,因为太多导致数据库超载。 这就是缓存击穿。

解决方案,就是把过期时间设置的更长一点,并且对数据库的操作添加限流。

几个相关的名词

  1. 失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中
  2. 命中:应用程序从cache中取数据,取到后返回。
  3. 更新:先把数据存到数据库中,成功后,再让缓存失效

总结

对于面试来说,这些就足够了,如果要深入了解,建议买一个本书查看,不过作为运维知道怎么维护就可以了,业务逻辑和使用都是开发在做,如果后期有做架构师的打算,那先学编程在学redis.

猜你喜欢

转载自blog.csdn.net/xinshuzhan/article/details/108544680