1、基础内容

厨子大约 3 分钟数据库原创面试题Redis程序厨

1.基础知识

1.0 什么是 Redis?

Redis提供了多种数据类型来支持不同的业务场景。Redis 支持事务持久化、LUA脚本、LRU驱动事件、多种集群方案

redis 是一个 key-value 数据库,定期通过异步操作将数据库数据 flush 到硬盘上保存。因为是纯内存操作,所以Redis 的性能非常出色,是已知性能最快的 key-value 数据库。Redis 支持多种数据结构,然后单个Value 的最大限制为 1GB。所以Redis可以用来实现很多有用的功能。

Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。

推荐阅读:https://www.runoob.com/redis/redis-tutorial.htmlopen in new window

1.1 Redis 和 memcached 相比有什么优势?

Redis拥有更为丰富的数据类型。

Redis 的速度更快,另外Redis 可以持久化数据。

Redis 的value的最大限制更大。

1.2 Redis官方为什么不开发windows版本

现在linux 版本已经足够稳定,且用户量很大,无需添加windows版本,反而会带来兼容性问题

1.3 一个字符串类型能存储最大容量是多少?

512M,其键也是 512 M

1.4 Redis 的读和写的速度?

读 110000 写 81000

1.5 Redis 为什么将所有数据都放到内存中?

因为Redis 为了达到更快的读写速度,Redis 会通过异步的方式将数据写入磁盘,所以Redis具有快速和持久化的特征。如果不放到内存中,磁盘I/O会严重影响Redis性能。如果设置了最大使用内存,则数据已有记录到达内存限制后则不能继续插入新值。

1.6 使用 Redis 的优点

  • 访问速度快:因为都在内存中

  • 支持事务

  • 数据类型丰富:支持五种数据存储形式

  • 特性丰富:Redis可用于缓存,消息,按key设置过期时间,过期后将会自动删除。

1.7 Redis 中的字符串和C语言中的有什么不同

SDS可以直接获取到字符串的长度,时间复杂度为O(1)

会有空间预分配,这样可以减少分配空间的次数,然后长度减少时,不会改变数据结构的内存,会将减少部位标志为可用。

C语言是以 /0结尾,Redis 以长度进行结尾,避免存储字符串出现问题

可以保存文本和二进制数据

推荐阅读:https://blog.csdn.net/cjqh_hao/article/details/89741720open in new window

1.8 Redis线程模型

Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以 Redis 才叫单线程模型

推荐阅读:https://blog.csdn.net/m0_37524661/article/details/87086267open in new window

推荐阅读:https://blog.csdn.net/qq_14855971/article/details/118918980?spm=1001.2014.3001.5501open in new window