关于Redis的面试题(一)

一、为什么要使用Redis

  1. 内存数据库,速度很快
  2. 工作单线程worker,串行化,原子操作,IO线程是多线程的。避免上下文切换
  3. 使用 IO模型,天生支撑高并发
  4. kv模型,v具有类型结构
  5. 具有本地方法,计算数据移动
  6. 二进制安全,value值最大为512MB

二、Redis是多线程还是单线程

Redis在6.0版本之前是单线程的,到了6.0版本后,IO流是一个线程池,是多线程的,但工作线程依旧是单线程。

三、Redis持久化方法

有两种方法可以实现:

  1. RDB:存储数据结果,关注点在数据
  2. AOF:存储操作过程,关注点在数据的操作过程

3.1、Redis持久化的两个方法

3.1.1 RDB

在指定的时间间隔内将内存中的数据集中写进磁盘中,也就是快照文件,数据恢复就是将快照文件读到内存中。

RDB的优缺点
缺点:

  1. 快照时间有间隔,不能实时备份,丢失数据可能会很多
  2. 在数据集比较庞大时,开启子线程备份数据,fork()运行会非常耗时,服务器会在一定时间内停止处理客户端。

优点:

  1. 恢复数据的速度快
  2. 备份的文件就是原始文件的内存大小,不会额外占用内存空间

RDB的触发方式

  • 手动触发:通过书写命令触发
  • 自动触发:通过配置参数设置自动触发

3.1.2 AOF

会将客户端的写操作以日志的形式追加到appendonly.aof文件末尾,在Redis服务器重启后,加载aof文件中的所有命令,用来恢复数据。

AOF的优缺点
缺点:

  • 生成的文件体积较大
  • 数据恢复速度较RDB更慢

优点:

  • 数据安全性较高,不容易丢失数据
  • AOF文件有序保存所有写操作,可读性较高

AOF的触发方式

  • 手动触发:通过bgrewriteaof命令:重写AOF持久化生成aof文件
  • 自动触发:redis默认没有开启AOF。需要通过配置文件开启

四、Redis结构体

请添加图片描述

安装docker

docker run -d -p 6379:6379  --name redis01 redis:7.2.4

请添加图片描述以上命令,每次启动新的Redis容器,数据会丢失。

我们需要挂载数据文件,在宿主机上面,这样就可以持久化数据.

docker run -p 6379:6379 -d --name redis01 --restart=always 
-v /opt/redis/redis.conf:/etc/redis.conf 
-v /opt/redis/data:/data 
redis:7.4.0 redis-server /etc/redis.conf

//如果拉不下来请使用m.daocloud.io/docker.io/redis:7.4.0

五、在百万keys的Redis中,如何模糊查询某一个key?

典型回答

查找key有两种方法,第一种是用keys,第二种是scan。keys在数据量比较多的时候,会阻塞服务器,浪费服务器资源,所以通常情况下用scan,scan是一个基于游标的迭代器,它会在用户每次调用时,返回一个包含两个元素的数组,一个是下次迭代的游标,一个是所有迭代的元素,当返回的游标为0时,表示迭代结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值