首页 / 面试 / 互联网公司面试必问的Redis题目
互联网公司面试必问的Redis题目
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了互联网公司面试必问的Redis题目,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4125字,纯文字阅读大概需要6分钟。
内容图文
![互联网公司面试必问的Redis题目](/upload/InfoBanner/zyjiaocheng/868/baa8543715054b148dcf627caca5afd4.jpg)
作为一个后端开发人员,在面试的时候,Redis是必问的,那么下面咱们来把Redis一般面试常问问题汇总一下。介绍
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API的非关系型数据库。
A=原子性(Atomicity)
C=一致性(Consistency)
I=隔离性(Isolation)
D=持久性(Durability)
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容忍性) 可靠性(强一致性和弱一致性)
https://github.com/antirez/redishttps://redis.io/
Redis支持的数据类型?
String字符串: set key valueHash(哈希/散列)hmset name key1 value1 key2 value2
List(列表) lpush name valuerpush name valuelrem name index llen name
Set(集合)sadd name value
zset(sorted set:有序集合) zadd name score value
什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?
参考:https://blog.csdn.net/hacfox/article/details/63263506
Redis有哪些架构模式?讲讲各自的特点
单机版模式
特点:简单问题:
内存容量有限
处理能力有限
无法高可用。
主从复制模式
Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。特点:
master/slave 角色
master/slave 数据相同
降低 master 读压力在转交从库
问题:
无法保证高可用
没有解决 master 写的压力
哨兵模式
Redis sentinel 是一个分布式系统中监控 redis 主从服务器,并在主服务器下线时自动进行故障转移。其中三个特性:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作。
特点:
保证高可用
监控各个节点
自动故障迁移
缺点:
主从模式
切换需要时间丢数据
没有解决 master 写的压力
集群(proxy)模式
Twemproxy 是一个 Twitter 开源的一个 redis 和 memcache 快速/轻量级代理服务器; Twemproxy 是一个快速的单线程代理程序,支持 Memcached ASCII 协议和 redis 协议。
特点:
多种 hash 算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkins
支持失败节点自动删除
后端 Sharding 分片逻辑对业务透明,业务方的读写方式和操作单个 Redis 一致
缺点:
增加了新的 proxy,需要维护其高可用。
failover 逻辑需要自己实现,其本身不能支持故障的自动转移可扩展性差,进行扩缩容都需要手动干预
集群(直连型)模式:
从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。
特点:
无中心架构(不存在哪个节点影响性能瓶颈),少了 proxy 层。
数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布。
可扩展性,可线性扩展到 1000 个节点,节点可动态添加或删除。
高可用性,部分节点不可用时,集群仍可用。通过增加 Slave 做备份数据副本
实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave到 Master的角色提升。
缺点:
资源隔离性较差,容易出现相互影响的情况。
数据通过异步复制,不保证数据的强一致性
什么是一致性哈希算法?什么是哈希槽?
这里参考下面两篇文章:
https://www.cnblogs.com/lpfuture/p/5796398.html
https://blog.csdn.net/z15732621582/article/details/79121213
CAP到底是什么东东?能不能说说
参考:
http://www.ruanyifeng.com/blog/2018/07/cap.html
使用Redis怎么实现分布式事务锁?有了解过?
参考:
https://www.cnblogs.com/linjiqin/p/8003838.html
什么是缓存穿透?如何避免? 缓存穿透一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。如何避免?1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。2:对一定不存在的key进行过滤。可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。
什么是缓存雪崩?何如避免?
缓存雪崩如何避免?
1:在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。
Redis为什么采用单线程的?Redis为什么会这么快?
参考:
https://blog.csdn.net/bntX2jSQfEHy7/article/details/79479152
祝君面试成功!
内容总结
以上是互联网集市为您收集整理的互联网公司面试必问的Redis题目全部内容,希望文章能够帮你解决互联网公司面试必问的Redis题目所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。