reids面试题

1.redis是什么?

是一个支持nosql,key-value数据类型,内存,可以持久化,缓存,分布式的,非关系型数据库

内存:redis在运行几件,使用的是内存资源作为数据库存储数据,具有内存的致命缺陷(容量上限)
可持久化:存储在redis内存中的数据,可以设置持久化策略,在断电内存数据丢失时,重启redis可以从磁盘文件重新读取数据(这是占据市场的重要技术点)
支持分布式集群,可以使用redis-cluster搭建集群

2.redis与memoryCache的比较

性能:redis是单实例,单线程的技术,使用非阻塞的io多路复用技术,没有cpu对线程切换,线程资源争抢等资源消耗,缺点:海量数据性能比memoryCache差点。memoryCache采用多线程技术,数据量大的时候,性能占优势,但是作为多线程也有缺点,cpu消耗比redis多
数据结构:redis支持多种数据结构 String hash list zset set stream . memoryCache只支持String
持久化:redis支持持久化 memoryCache不支持持久化,很难解决缓存雪崩的情况

3.redis两种持久化策略rdb和aof

rdb:使用dump.rdb问默认的持久化文件,存储的是数据key-value,可以一次性存储多条数据(执行效率高),save时间间隔长,对数据的备份能力要求高,一次性存储数据过大时,哟可能造成阻塞,影响使用。
aof:一种追加模式的日志文件,存储的是命令的日志,默认每秒执行的写命令(执行效率低),备份数据时间比较短,最多在极高的高并发下只会丢失1-2秒的数据,存储数据时细水长流。数据量并发到达一定程度时,aof的性能高于rdb

4.缓存雪崩,缓存穿透

缓存穿透:指查询一个一定不存在的数据,会去数据库查询,并且处于容错考虑,当我们从数据库查不到数据时,则不会写入缓存,导致每次请求都去数据库查询,失去了缓存的意义,当大量并发到来的时候,db可能会挂掉。解决办法:设置布隆过滤器;另一种就是查询返回的数据为空,把这个空结果进行缓存,设置过期时间很短
缓存雪崩:缓存未命中,或者缓存系统宕机,导致大量的访问去访问数据库,导致数据库宕机成为缓存雪崩。解决办法:如果是因为缓存失效,可以设置缓存时间失效分布均匀,如果是系统崩溃的话,可以采用redis主从+哨兵,redis-cluster集群

5.reids的过期策略以及内存淘汰机制

reids采用的是定期删除+惰性删除策略
定期删除,用一个定时器负责监视key,过期自动删除,但是十分消耗内存资源,每100ms随机抽取进行检查,过期则删除,惰性删除,当获取某个key时,redis会检查一下,如果设置时间过期了就会删除
maxmemory-policy volatile-lru 从已经设置过期时间的数据集中挑选最少使用的数据淘汰

6.redis的集群方案

redis主从+哨兵:redis-cluster(Redis3.0)出现之前,绝大部分的redis的使用是围绕哨兵集群展开的;利用单独的进程(特殊redis-server),开启对主从结构的监听;监听主,先从主节点调用命令info replication,拿到主从结构的所有信息,保存在内存中,后续每1秒钟发起一次心跳检测(rpc远程通信协议),一旦发现主节点宕机,哨兵集群发起投票选举,最终过半的票数确定事件的结果;
redis-cluster:集群节点两两互联,底层采用二进制传输协议的,优化传输速度;集群的监控监听机制,交给主机诶单,任意的主节点宕机,之后剩下的主节点满足过半就好;客户端任意一个节点都可以向就请你传递存储数据,获取数据的命令,数据会在集群内部做节点的连接跳转,引用了新的分布式分片计算逻辑,hash槽。

7为什么redis的操作是原子性的,怎么保证原子性的?

对于redis来说,命令的原子性是指:一个操作的不可再分,操作要么执行,要么不执行,Redis的操作之所以是原子性的,是
因为Reids是单线程的,redis本身提供的所有api都是原子操作,redis的事务其实就是要保证操作的原子性。

8.关于redis的hash一致性以及redis-cluster的知识在另一篇文章

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值