Redis2

为什么Redis要给缓存数据设置过期时间?

内存是有限的,如果缓存中的所有数据都是一直保存,很容易OOM

Redis如何判断数据是否过期?

通过过期字典来保存数据的过期时间

过期删除策略

Redis采用的是定期删除+惰性删除

Redis内存淘汰机制

1. noeviction(默认):不淘汰任何key,内存满时不写入新的key。
2. volatile-ttl:对设置了TTL的key,比较key的剩余TTL值,值越小越先被淘汰
3. allkeys-random:对所有key进行随机淘汰
4. volatile-random:对设置了TTL的key进行随机淘汰
5. allkeys-lru:对所有key基于LRU算法进行淘汰
6. volatile-lru:对设置了TTL的key基于LRU算法进行淘汰
7. allkeys-lfu:对全体key给予LFRU算法进行淘汰
8. volatile-lfu:对设置了TTL的key基于LFU算法进行淘汰

怎么保证Redis挂掉之后重启数据可以进行恢复?

依赖持久化机制

什么是RDB持久化?

实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形式写到磁盘上,也就是快照。这样一来即使故障宕机,快照文件也不会丢失,数据的可靠性也就得到了保证。这个快照文件就称为RDB文件(dump.rdb)

什么是AOF持久化?

以日志的形式来记录每个写操作,将Redis执行过的所有写命令记录下来,只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据。

Redis4.0对于持久化机制做了什么优化?

支持开启混合方式设置 设置aof-use-rdb-preamble的值为 yes 表示开启,设置为no表示禁用

RDB+AOF的混合方式---------> 结论:RDB镜像做全量持久化,AOF做增量持久化

先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。这样的话,重启服务的时候会从RDB和AOF两部分恢复数据,既保证了数据完整性,又提高了恢复数据的性能。简单来说:混合持久化方式产生的文件一部分是RDB格式,一部分是AOF格式。

如何使用Redis事务?

Redis通过MULTI、EXEC、DISCARD、WATCH等命令来实现事务。

Redis事务支持原子性吗?

Redis的事务不保证原子性,也就是不保证所有指令同时成功或同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力

什么是bigkey?有什么危害?

对于string类型的value,大于等于 10kb 就是bigkey

对于list、hash、set、zset类型,超过5000个属于bigkey

危害:

1.内存不均

2.超时删除

3.网络流量阻塞

如何发现bigkey?

使用--bigkeys参数查找或者分析RDB文件

如何避免大量key集中过期?

1.给key设置随机过期时间

2.开启lazy-free惰性删除

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值