Redis相关知识总结

本文详细介绍了Redis的关键数据类型及其应用场景,探讨了缓存问题如穿透、击穿和雪崩的解决方案,以及过期策略、内存淘汰和持久化(RDB与AOF)的区别。此外,还讲解了如何使用Redis实现分布式锁,包括基本的SETNX方法和Redisson库的高级功能。
摘要由CSDN通过智能技术生成
Redis主要数据类型有哪些?雪崩、击穿、穿透?
1、数据类型
  1. String:⽤于缓存、计数器、分布式锁等场景。

  2. Hash:⽤于存储对象,例如⽤户信息、商品信息等。

  3. List:可以进⾏队列和栈的操作常⽤于消息队列、任务队列等场景。

  4. Set:可以进⾏集合运算,例如并集、交集、差集等操作常⽤于标签、好友列表等场景

  5. ZSet:可以按照分数排序,也可以进⾏范围查询。常⽤于排⾏榜、计分系统等场景。

2、缓存问题
  1. 缓存穿透:当⼀个查询的数据在缓存中不存在,但在数据库中也不存在时,这个查询会穿透到数据库,导致数据库负载过⾼ 解决⽅法使⽤布隆过滤器,将不存在于数据库的数据进⾏过滤;对于查询结果为空的 key,设置空值缓存,有效时间设置短⼀些。
  2. 缓存击穿:当⼀个热点数据过期时,⼤量的请求会同时访问数据库,导致数据库负载过⾼。解决⽅法有:设置热点数据永不过期,定期更新缓存。
  3. 缓存雪崩:当⼤量的缓存数据同时过期时,⼤量的请求会同时访问数据库,导致数据库负载过⾼ 解决⽅法:给缓存的key设置随机过期时间,防⽌⼤量的缓存数据同时过期。
Redis key过期策略?内存淘汰机制?
1、过期策略

基于惰性删除的策略:当访问⼀个已经过期的key时,Redis会⽴即将它删除。

基于定期删除的策略:Redis会定期地检查所有key是否过期,将过期的key删除。

基于内存淘汰的策略:当Redis的内存达到⼀定限制时,Redis会通过⼀些算法,将⼀些冷⻔的、不常使⽤的key删除,腾出空间。

2、简单记忆
  1. 最近最少使⽤(LRU)算法:淘汰最近最少使⽤的key。

  2. 最不经常使⽤(LFU)算法:淘汰最近使⽤次数最少的key。

  3. 随机淘汰算法:随机选择⼀个key进⾏淘汰。

  4. 根据ttl:⽣存时间

  5. 默认是不进⾏淘汰,直接返回异常

Redis持久化策略?RDB与AOF区别?底层原理?
  1. RDB: 是⼀种快照式持久化⽅式,当触发某些特定的事件时,Redis会将内存中的数据保存到磁盘上⼀个指定的⽂件中,⽂件后缀⼀般为rdb 。RDB持久化的优点是备份⽂件⼩、加载速度快,适合⽤于⼤规模数据恢复。缺点是数据可能会丢失,因为数据并不是实时保存的。
  2. AOF: 则是将所有写操作追加到⼀个⽇志⽂件中,即追加式持久化⽅式。在AOF模式下,每个写操作都会以⽂本的形式记录在⼀个追加⽂件中,从⽽记录了所有数据的历史操作 OF持久化的优点是数据不会丢失,因为每个写操作都会记录在追加⽂件中,可以避免因为某个事件没有触发⽽导致数据丢失。缺点是备份⽂件⼤、加载速度相对RDB慢,适合⽤于⼩规模数据恢复。
如何实现分布式锁?
  1. 基于 Redis 实现分布式锁:Redis 的 SETNX 命令可以⽤来实现分布式锁。当需要获得锁时,调⽤ SETNX 命令尝试将⼀个字符串作为 key 插⼊到 Redis 中,如果插⼊成功则表示获得了锁,否则表示锁已被其他线程占⽤。释放锁时,删除该 key 即可。为避免死锁,需要为锁设置⼀个过期时间。
  2. 使⽤ Redisson 实现分布式锁:Redisson 是⼀个基于 Redis 的分布式 Java 对象框架,提供了分布式锁的实现。通过 Redisson 的 getLock ⽅法可以获得⼀个锁对象,调⽤锁对象的lock 和 unlock ⽅法即可获得和释放锁。Redisson ⽀持多种锁模式,包括可重⼊锁、公平锁、联锁等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值