redis的一些面试题

 一、redis特性(为什么那么快)

1、内存数据库 内存的读取是磁盘的1000倍

        基于内存存储实现

2、工作线程(worker)是单线程,串行化执行,原子操作-避免了线程上下文的切换,IO线程是多线程的

3、网络IO模型(epoll),天生支持高并发

4、kv模型,v 具有数据结构 多种数据结构类型

5、具有本地方法,计算向数据移动

6、二进制安全(value最大512M)

二、redis是单线程还是多线程?

redis6.0之前不论是IO线程还是工作线程都是是单线程

之后是IO线程是多线程 但是工作线程还是单线程

redis使用多线程并非是完全摒弃单线程,redis还是使用单线程模型来处理客户端的请求,只是使用多线程来处理数据的读写和协议解析,执行命令还是使用单线程。

这样做的目的是因为redis的性能瓶颈在于网络IO而非CPU,使用多线程能提升IO读写的效率,从而整体提高redis的性能。

三、redis数据持久化

第一种方式RDB(redis database):存储数据结果 关注点在数据(快照)

指定的时间间隔内将内存的数据存储到磁盘里,恢复的时候将文件直接读到内存里

优缺点:

优点:数据恢复的比较快

           备份的文件是源文件的大小,不会增加数据占用

缺点:备份时间存在间隔,不能实时备份,会存在数据的丢失

           一般开启子进程进行数据备份,数据集非常庞大的时候,服务器可能在一定时间内停止处理客户端 

第二种方式AOF(append only file):存储操作过程 关注点在数据的操作过程(命令)

将客户端的每一个写操作命令以日志的形式记录下来,追加到appendonly.aof的文件末尾,在恢复数据的时候,会加载aof中所有的命令,将数据进行恢复

优缺点:

优点:数据安全性高,不易丢失数据

           AOF文件有序的保存了所有写操作,可读性高

缺点:AOF方式生成文件体积变大(里面存放了一些命令)

           数据恢复速度比RBD慢

四、如何在百万级keys的Redis里面,如何模糊查找某个(某几个)key.

        在 Redis 中,直接进行模糊匹配查找 key 的操作并不高效,因为 Redis 并没有为 keys 命令提供模糊匹配功能,而使用 KEYS pattern 命令在大数据量下会导致阻塞,影响 Redis 的性能,

        使用scan命令可以避免一次加载所有 keys 到内存中,从而减少阻塞风险。SCAN 命令允许你迭代 Redis 数据库中的 key,但是它不支持模糊匹配。你可以结合 SCAN 和 MATCH 参数来实现模糊查找,但是效率仍然受限于模式匹配的复杂度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值