Redis专题

2020-02-29  本文已影响0人  木叶苍蓝

摘抄至:https://blog.csdn.net/Design407/article/details/103242874?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

1、什么是 Redis?

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的 key-value 数据库。

  1. Redis 与其他 key-value 缓存产品有以下三个特点:
  1. Redis 优势
  1. Redis 与其他 key-value 存储有什么不同?
2、Redis 的数据类型?
  1. Redis 支持5中数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset (有序集合)。
  2. 实际项目中比较常用的就是上面5种。如果你是Redis的高级用户,还需要知道HyperLogLog, Geo,Pub/Sub。
  3. 如果说你还了解 Redis Module,BloomFilter,RedisSearch,Redis-ML 面试官一定很喜欢。
3、使用 Redis 有哪些好处?

速度快,因为数据存在内存中,类似于HashMap,HashMap 的优势就是查找和操作的时间复杂度都O1

4、Redis 相比 Memcached 有哪些优势?
  1. Memcached 所有的值均是简单的字符串,Redis 作为其替代者,支持更为丰富的数据类型。
  2. Redis 的速度比 Memcached 快。
  3. Redis 可以持久化数据。
5、 Memcache 与 Redis 的区别有哪些?
  1. 存储方式:Memcached 把数据全部存在内存之中,断电后就会消失,数据不能超过内存大小。Redis 有部分存在硬盘上,这样能保证数据的持久化。
  2. 数据支持类型:Memcache 对数据类型支持相对简单。Redis 有着复制的数据类型。
  3. 底层模型不同:它们之间底层实现方式以及客户端 之间的通信应用协议不一样。Redis 直接自己构建了 VM 机制,因为一般的系统 调用调用系统函数的话,会浪费一定的时间去移动和请求。
6、 Redis 是单进程单线程?

Redis 是单进程单线程的,Redis 利用队列技术将并发访问变成串行访问。消除了传统数据库串行控制的开销。

7、一个字符串类型的值能存储最大容量是多少?

512M

8、Redis 的持久化机制是什么?

Redis 提供两种持久化机制 RDB 和 AOF 机制。

  1. RDBRedis DataBase 持久化方式:
    是指用数据集快照的方式半持久化模式记录 Redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。
9、Redis 常见性能问题和解决方案?
10、Redis 过期键的删除策略?
11、Redis 的回收策略(淘汰策略)?

注意这里的6种机制,volatile 和 allkeys 规定了是对已设置过期的数据集淘汰数据还是冲全部数据集淘汰数据,后面的 lru,ttl,random 是三种不同的淘汰策略,再加上一种 no-enviction 永不回收的策略。

13、Redis 的同步机制是什么?

Redis 可以使用主从同步,从从同步。第一次同步时,主节点做一次 bgsave,并同时将后续修改操作记录到内存 buffer,待完成后将 rdb 文件全量同步到复制节点,复制节点接受完成后将 rdb 镜像加载到内存。加载完成后,在通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。

14、Pipeline 有什么好处,为什么要用 Pipieline?

可以将多次 I/O 往返的时间缩减为一次,前提是 pipeline 执行的指令之间没有因果相关性。使用 redis-benchmark 进行压测的时候可以发现影响 Redis 的 QPS 峰值的一个重要因素是 pipeline 批次指令的数目。

15、是否使用过 Redis 集群,集群的原理是什么?
16、Redis 集群方案什么情况下会导致整个集群不可用?
17、Redis 支持的 Java 客户端都有哪些?
18、Jedis 与 Redisson 对比有什么优缺点?
  1. Jedis 是 Redis 的 Java 实现的客户端,其 API 提供了比较全面的 Redis 命令的支持;Redisson 实现了分布式可扩展的 Java 数据结构,和 Jedis 相比,功能较为简单,不支持字符串操作,不支持排序,事务,管道,分区等 Redis 特性。
  2. Redisson 的宗旨是督促使用者对 Redis 的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
19、Redis 如何设置密码及验证密码?
20、说说 Redis 哈希槽的概念?
21、Redis 集群的主从复制模型是怎样的?
22、Redis 集群会有写操作丢失吗?为什么?
23、Redis 集群之间是如何复制的?
24、Redis 集群最大节点个数是多少?
25、Redis 集群如何选择数据库?
26、怎么测试 Redis 的连通性?
27、怎么理解 Redis 事务?
28、Redis 事务相关的命令有哪些?
29、Redis key 的过期时间和永久有效分别怎么设置?
30、Redis 如何做内存优化?
31、Redis 回收进程如何工作的?
32、都有哪些方法可以降低 Redis 的内存使用情况?
33、Redis 的内存用完了会发生什么?
34、一个 Redis 实例最多能存放多少个key?List、Set、Sorted Set最多能存放多少个元素?
35、MySQL 里有2000w数据,Redis 中只存20w的数据,如何保证 Redis 中的数据都是热点数据?
36、Redis 最适合的场景?
37、假如 Redis 里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头,如何将它们全部找出来?
38、如果有大量的key需要设置同一时间过期,一般需要注意什么?
39、怎样使用 Redis 做异步队列?
40、使用 Redis 分布式锁是怎么回事?
上一篇 下一篇

猜你喜欢

热点阅读