前言
redis在面试中也是经常被问到的技术点,但运维的面试和开发的不同,运维最多问这几个问题(以三点工作经验的运维为例)
redis你们主要用来做什么?
你们的redis主要用来存储哪些数据?
redis 持久化怎么做的?
redis的架构怎么做的?
看吧,连redis缓存雪崩,击穿,穿透都不会问,更不用说redis的基础命令了。今天我们主要来讨论前两个,redis主要用来做什么以及主要缓存哪些数据
毕竟redis还是开发用的多,当然作为一个优秀的运维,还是要了解下redis相关的知识,万一开发也不懂,你可以教教他嘛。
redis的使用场景
分布式锁(类似zookeeper,但是又比zookeeper弱)
消息通知 (类似于kafka,但是比kafka弱)
做缓存服务 ,读多写少的场景(类似于memcache,但有持久化)
统计网站访问量,当前在线人数
统计网站所有的独立IP
利用好友交集推荐好友
缓存电商网站初始化页面
热点数据:新闻的实时热点,微博热搜,需要频繁更新的热点数据。
redis有哪些数据类型
String
Hash (用来存储用户的ID,昵称,头像,积分)
List :反向查找和遍历,reids分页
set :当你存储一个列表数据,又不希望出现重复数据,可以使用这个
sort set : 按照某个权重进行排序,比如通过点击数做出排行榜的数据应用
游戏服务器用reids缓存哪些数据
电商服务器redis缓存
什么是缓存击穿
比如一个游戏服务器,reids缓存了很多玩家的活动数据,这这些玩家很多已经长时间未登陆了,redis有过期删除机制,这些玩家的活跃数据已经过期,所以从redis中删除了。也就是用户如果又突然登陆了是需要到数据库里读取数据,然后在缓存到redis的。这一天运营搞了个活动,导致这一批过期用户都回来了,这些用户的活动数据就需要从数据库拉取,因为太多导致数据库超载。这就是缓存击穿。
解决方案,就是把过期时间设置的更长一点,并且对数据库的操作添加限流。
几个相关的名词
失效:应用程序先从cache取数据,没有得到,则从数据库中取数据,成功后,放到缓存中
命中:应用程序从cache中取数据,取到后返回。
更新:先把数据存到数据库中,成功后,再让缓存失效
总结
对于面试来说,这些就足够了,如果要深入了解,建议买一个本书查看,不过作为运维知道怎么维护就可以了,业务逻辑和使用都是开发在做,如果后期有做架构师的打算,那先学编程在学redis.
相关资源