redis的常见面试题

#1 Redis到底是单线程还是多线程?

Redis6.0版本之前的单线程指的是 网络I/O和键值对读写是由一个线程完成的。

Redis6.0引入的多线程指的是网络请求过程采用了多线程;而键值对读写命令仍然是单线程处理的,Redis依然是并发安全的。

即数据操作模块是单线程的,其它持久化、集群数据同步等,是由额外线程执行的。

#2 Redis中常用的数据类型有哪些?

  1. String(字符串):最基本的数据类型,可以存储字符串、整数或浮点数。
  2. Hash(哈希):存储键值对的无序散列表,适合存储对象。
  3. List(列表):按照插入顺序存储的字符串集合,可以进行插入、删除操作,支持从两端进行操作。
  4. Set(集合):无序且唯一的字符串集合,可以进行添加、删除、求交集、求并集等操作。
  5. Sorted Set(有序集合):与集合类似,但每个元素都有一个分数,按照分数排序,支持根据分数范围获取元素。
  6. Bitmaps(位图):用于存储二进制位的数据结构,支持对位的操作,如设置、获取、计数等。
  7. HyperLogLog(基数估算):用于进行非精确的基数计数,适用于统计客户端数量、页面访问量等。
  8. Geospatial(地理位置):支持存储地理位置信息,并进行地理位置相关的查询。

#3 Redis的持久化机制?

  1. RDB(Redis Database)持久化:RDB持久化是将Redis的数据以快照的形式保存到磁盘上,主要通过fork()系统调用来生成子进程进行持久化操作。RDB持久化机制可以手动触发,也可以通过配置自动触发。在发生宕机或服务器重启时,可以通过加载RDB文件来恢复数据。

  2. AOF(Append-Only File)持久化:AOF持久化是将Redis的操作命令追加到AOF文件的末尾,以文本格式保存在磁盘上。每当有写操作命令时,Redis会将命令以协议格式追加到AOF文件末尾。AOF文件记录了Redis服务器的完整操作日志,可以通过重新执行AOF文件中的命令来恢复数据。AOF持久化机制可以根据配置的策略选择刷新频率,如每个写操作、每秒刷新等。

#4 Redis的高可用有哪些?

  1. Redis主从复制:通过配置Redis的主服务器和从服务器,将主服务器上的数据同步到从服务器,从服务器可以接收读取请求,提供读取负载均衡和故障转移的能力。如果主服务器发生故障,可以通过手动或自动将一个从服务器晋升为主服务器,保证系统的可用性。

  2. Redis Sentinel(哨兵):Redis Sentinel是一组监控Redis服务器的独立进程,可以实现自动故障检测、故障切换和故障恢复。哨兵通过互相通信和监控来保证Redis的高可用性。当主服务器不可用时,哨兵会协调将一个从服务器晋升为新的主服务器,然后通知其他从服务器更新配置,从而实现故障转移和自动恢复。

  3. Redis Cluster(集群):Redis Cluster将数据分片到多个主服务器上,每个主服务器负责一部分数据。通过分片和数据复制,实现数据的高可用和负载均衡。Redis Cluster可以自动将不可用的主服务器的槽迁移到其他可用的主服务器上,实现故障转移和自动恢复。

  4. Redis持久化和数据备份:使用Redis的RDB持久化或者AOF持久化,将数据保存到磁盘上,以防止数据丢失。此外,还可以定期备份Redis数据文件,以确保数据的可靠性和安全性。

#5 Redis的底层数据额结构有哪些?

  1. 字符串(String):Redis的底层数据结构中最基本的类型是字符串。它被用于存储字符串、整数或浮点数。

  2. 字典(Dictionary):Redis使用字典作为哈希表的底层实现。字典在Redis中被广泛用于存储键值对,例如存储哈希(Hash)类型。

  3. 跳跃表(Skip List):Redis中的有序集合(Sorted Set)数据类型的底层实现是跳跃表。跳跃表是一种有序、可高效查找的数据结构。

  4. 链表(Linked List):Redis使用链表作为列表(List)数据类型的底层实现。链表在插入和删除元素时具有良好的性能。

  5. 整数数组(Intset):Redis使用整数数组作为无重复元素的集合(Set)的底层实现。整数数组对于存储较小范围的整数集合非常高效。

  6. 压缩列表(Ziplist):Redis使用压缩列表作为列表和哈希类型的底层实现,当元素数量较少或者元素较小时,压缩列表的空间效率更高。

  7. 跳跃表和字典的联合(Redis Cluster使用):Redis Cluster使用了一种特殊的数据结构,将跳跃表和字典进行联合,实现对大规模数据的分布式存储和索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值