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

发布于 2021-11-24 13:15 ,所属分类:2021面试经验技巧分享

前言

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.


相关资源