Redis面试题

为什么要使用Redis

  1. 内存数据库 数据读写很快
  2. 工作单线程执行,原子操作,(IO线程是多线程)- 避免上下文切换
  3. IO模型(epoll), 支撑高并发.
  4. K-V模型,V具有类型结构
  5. 具有本地方法,计算向数据移动。(a,b) => 交集
  6. 单线程原子操作,二进制安全Value值最大为512MB

Redis是单线程还是多线程

6.0之前是单线程
6.0之后工作是单线程
IO是多线程

Redis数据持久化

  1. ROB(Redis DataBase)

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

    RDB的触发方式:
    手动触发:通过命令手动生成快照 (save,bgsave)
    自动触发:通过配置参数的设置触发自动生成快照

    缺点
    快照时间有间隔,不能实时备份,丢失数据可能会比较多
    开启子进程备份数据,在数据集比较庞大时,fork()可能会非常耗时,造成服务器在一定时间内停止处理客户端。
    优点
    1.恢复数据比较快
    2.备份的文件就是原始内存数据的大小,不会额外增加数据占用,

  2. AOF(Append Only File)

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

    AOF的触发方式
    1.手动触发
    通过bgrewriteaof命令:重新AOF持久化生成aof文件(触发重写)
    2.自动触发
    默认情况,redis是没有开启AOF(默认使用RDB持久化),需要通过配置文件开启
    AOF的优缺点
    优点:
    数据安全性高,不易丢数据
    AOF文件有序保存了所有写操作,可读性强
    缺点:
    AOF方式生成文件体积变大
    数据恢复速度比RDB慢

在百万keys的Redis里面,如何模糊查找某个key.

用scan 命令进行模糊查询,因为使用keys进行模糊查询时,当数据过多时他会阻塞Redis线程,而SCAN命令则基于游标迭代,每次只返回一部分结果,不会一次性加载所有数据,因此更适合大数据量的处理。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值