Redis学习笔记——(17)Redis面试题及答案

Redis面试题

1. 什么是redis?

Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、zset(sorted set --有序集合)和hash。这些数据结构都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

2. Redis的速度为什么这么快?
  • 基于内存;

  • 单线程减少上下文切换,同时保证原子性;

  • IO多路复用;

  • 高级数据结构(如 SDS、Hash以及跳表等)。

3.Redis为什么使用单线程?

因为 Redis 是基于内存的操作,CPU 不会成为 Redis 的瓶颈,而最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且 CPU 不会成为瓶颈,那就顺理成章地采用单线程的方案了。

而实际上, Redis不需要各种锁的消耗及单线程多进程的集群方案才是Redis主要采用单线程的原因,不过Redis在后续版本中也引入了多线程模式。

4.Redis适合什么场景?
  • 缓存
  • 数据分享分布式
  • 分布式锁
  • 计数器(阅读量、微博点赞数等)
  • 限流
  • 位统计
  • 消息队列
  • 秒杀
  • 抽奖
  • 点赞、签到、打卡
  • 商品标签
  • 好友关系、用户关注、推荐模型
  • 排行榜
5.如何保证 Redis 的高并发?

Redis 通过主从加集群架构,实现读写分离,主节点负责写,并将数据同步给其他从节点,从节点负责读,从而实现高并发。

6.Redis 如何保证原子性?
  • 原子特性

    对于Redis而言,命令的原子

你可能感兴趣的:(Redis,redis,学习,数据库)