Redis相关面试题收集整理

redis的相关基础知识,请看我下面这篇博客的第四模块

【Redis】下载、安装、操作、介绍、作用、可视化工具一站式整理

面试题部分:

声明:大部分内容转自其他博客。我只是整理了一下。知识呢,是用来传播的~

1、使用redis有哪些好处?【基础】

1、数据存储在内存中,读写速度快;
2、支持的数据类型资源丰富;
3、支持事务,操作都是原子性操作;
4、可以设置数据存活的生命周期。
5、Redis 具备一定持久层的功能,也可以作为一种缓存工具。

2、Redis有哪些数据结构? 【基础】

1、String
2、Hash
3、List
4、Set
5、ZSet

底层的数据结构
SDS - simple synamic string - 支持自动动态扩容的字节数组
list - 平平无奇的链表
dict - 使用双哈希表实现的, 支持平滑扩容的字典
zskiplist - 附加了后向指针的跳跃表
intset - 用于存储整数数值集合的自有结构
ziplist - 一种实现上类似于TLV, 但比TLV复杂的, 用于存储任意数据的有序序列的数据结构
quicklist - 一种以ziplist作为结点的双链表结构, 实现的非常苟
zipmap - 一种用于在小规模场合使用的轻量级字典结构

原文链接:点这里

3、如果有大量的key需要设置同一时间过期,一般需要注意什么?【中等】

如果大量的key过期时间设置的过于集中,到过期的那个时间点,
redis可能会出现短暂的卡顿现象。

一般需要在时间上加一个随机值,使得过期时间分散一些。

4、为什么Redis需要把所有数据放到内存中?【中等】

Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式
将数据写入磁盘。所以Redis具有快速和数据持久化的特性。

如果不将数据放到内存中,磁盘的I/O速度会严重影响redis的性能。
在内存越来越便宜的今天,redis将会越来越受欢迎。

如果设置了最大使用的内存,
则数据已有记录数达到内存限值后将不能继续插入新值

5、Redis提供了哪几种持久化方式?【中等】

1、RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
2、AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。
3、Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。
4、你甚至可以关闭持久化功能,让数据只在服务器运行时存在

原文链接:点这里

6、如何选择合适的持久化方式?【中等】

二者选择的标准,就是看系统是愿意牺牲一些性能,
换取更高的缓存一致性(aof),还是愿意写操作频繁的时候,
不启用备份来换取更高的性能,待手动运行save的时候,
再做备份(rdb)。rdb这个就更有些 eventually consistent的意思了。

更多,请看官方文档
在这里插入图片描述

7、redis支持的java客户端你用过哪个?【基础】

Redisson,Jedis,lettuce等等,官方推荐使用Redisson。

8、Redis集群的主从复制模型是怎样的?【困难】

持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障

原文链接:点击查看第二部分

9、Redis集群之间是如何复制的?【中等】

原文:[点击查看](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9qaW5neWFuLmJhaWR1LmNvbS9hcnRpY2xlLzY3NTA4ZWI0NWE0ZjY5OWNjYTFjZTRjNi5odG1s?x-oss-process=image/format,png)
①从数据库向主数据库发送sync(数据同步)命令。

②主数据库接收同步命令后,会保存快照,创建一个RDB文件。

③当主数据库执行完保持快照后,会向从数据库发送RDB文件,而从数据库会接收并载入该文件。

④主数据库将缓冲区的所有写命令发给从服务器执行。

⑤以上处理完之后,之后主数据库每执行一个写命令,都会将被执行的写命令发送给从数据库。

——来自百度经验

10、怎么测试Redis的连通性?【基础】

语法:
$ redis-cli -h host -p port -a password

案例:

127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

原文链接:https://blog.csdn.net/hcksust/article/details/90403417

持续更新…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值