初识Redis——面试题

1.为什么要使用redis

1.内存数据库,数据库读写速度快。

2. 工作单线程,支持串行化与原子操作。IO是多线程,避免上下文切换

3.IO模型,是支持高并发的

4.kv模型,v是具有类型结构,k可以映射多种不同类型的值

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

6.二进制安全,value值最大为512M

2.Redis是多线程还是单线程

在6.0版本以前,是单线程的

在6.0版本以后,IO是多线程,worker是单线程

3.Redis数据持久化

Redis提供了两种数据持久化机制

        RDB:存储数据结果,关注点在数据(快照)

        AOF:存储操作过程,关注点在数据的操作过程(命令)

3.1  RDB

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

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入一个到一个临时文件(dump.rdb)中,待持久化过程结束后,再用本次的临时文件替换上次持久化后的文件。

fork函数的作用是复制一个与当前进程一样的进程,新进程的所有数据数值都和原进程一致,但是一个全新的进程,并作为原进程的子进程。

1.RDB的触发方式

  • 手动触发:通过命令手动生成快照 (save,bgsave)

  • 自动触发:通过配置参数的设置触发自动生成快照

2.缺点

  1. 快照时间有间隔,不能实时备份,丢失数据可能会比较多

  2. 开启子进程备份数据,在数据集比较庞大时,fork()可能会非常耗时,造成服务器在一定时间内停止处理客户端。

3.优点

1.恢复数据比较快

2.备份的文件就是原始内存数据的大小,不会额外增加数据占用,

3.2 AOF

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

 当有写命令请求时,会追加到AOF缓冲区内,AOF缓冲区根据AOF持久化策略[always,everysec,no]将操作同步到磁盘的AOF文件中,当AOF文件大小超过重写策略或手动重写时,会对AOF文件进行重写来压缩AOF文件容量,redis服务重启时,会重新加载AOF文件中的写操作来进行数据恢复

1.AOF的触发方式

1.手动触发

通过bgrewriteaof命令:重新AOF持久化生成aof文件(触发重写)

2.自动触发

默认情况,redis是没有开启AOF(默认使用RDB持久化),需要通过配置文件开启

2.优点

  • 数据安全性高,不易丢数据

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

3.缺点

  • AOF方式生成文件体积变大

  • 数据恢复速度比RDB慢

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

 应该使用SCAN命令来进行模糊查找。在百万keys进行模糊查找时,使用KEYS是不可取的,因为它可能会阻塞Redis线程,而每次调用SCAN命令都会返回一个新的游标和一批键名,可以分批查找,这样就不会造成Redis线程阻塞,提高了查询效率

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zz愿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值