Redis小知识

1.Redis可以用于以下场景:

  1. 缓存: Redis 接受并处理缓存数据请求,将数据存储在内存中,从而提高数据获取速度。

  2. 分布式锁: Redis提供了分布式锁的能力,可以很容易地解决线程安全问题。

  3. 消息队列: Redis提供了消息队列功能,可用于异步处理等场景。

  4. 计数器: Redis可以使用自增、自减操作作为计数器,可以快速实现计数器功能。

  5. 在线应用: Redis的性能出色,可以存储热数据,常用于在线应用中。

2.缓存穿透、缓存击穿和缓存雪崩。

  1. 缓存穿透:指查询一个一定不存在的数据,由于缓存中没有相关的数据,因此每次请求都会访问数据库,造成数据库压力过大。解决方式为在查询请求时添加布隆过滤器,过滤掉不存在的数据。

  2. 缓存击穿:指某个热点数据在高并发情况下失效,导致大量请求访问数据库,加重数据库压力。解决方式为设置短时过期时间、使用分布式锁等。

  3. 缓存雪崩:指缓存中大量的 key 过期同时失效,导致大量请求访问数据库,加重数据库压力。解决方式为设置不同过期时间、数据备份等。

3.缓存一致性问题

  1. 什么是缓存一致性问题

在使用缓存技术时,由于缓存是位于应用程序与数据库之间的中间层,为了提高数据访问效率,缓存中存储的数据可能会与数据库中存储的数据不一致。

例如,当发生数据更新操作时,应该将更新的数据同时更新到缓存中和数据库中,但如果只更新了数据库中的数据,而没有更新缓存中的数据,便会导致缓存中的数据与数据库中的数据不一致,从而引发缓存一致性问题。

  1. 缓存一致性问题的原因

缓存一致性问题主要由以下原因导致:

(1)缓存与数据库同步延迟。

当数据库中的数据更新后,缓存中的数据不立即更新,而是存在一定的同步延迟,这样就会导致缓存中的数据与数据库中的数据不一致。

(2)缓存中的数据被错误更新或删除。

当缓存中的数据被错误地更新或删除时,就会导致缓存中的数据与数据库中的数据不一致。

(3)并发更新导致的数据不一致。

当多个客户端并发更新同一份数据时,由于缓存中的数据可能被多个客户端同时读取和更新,就容易发生数据不一致的问题。

     2.缓存一致性问题的解决方案

为了解决缓存一致性问题,通常采用以下两种解决方案:

(1)使用缓存更新策略。

在使用缓存技术时,需要采用缓存更新策略,及时将更新的数据同步到缓存中,保证缓存中的数据与数据库中的数据一致。

常见的更新策略包括“读写模式”、“写后读模式”、“失效模式”等。

(2)使用缓存锁定机制。

使用缓存锁定机制可以防止并发更新导致的数据不一致问题。当多个客户端并发更新同一份数据时,可以使用缓存锁定机制,将该数据的读写权限锁定,使其它客户端无法同时读写该数据,从而避免数据不一致的问题。

4.持久性策略

  1. 什么是持久性策略

在使用Redis时,需要将数据持久化到磁盘中,以防止数据丢失。Redis提供了两种持久性策略:RDB持久性和AOF持久性。

(1)RDB持久性

RDB持久性是将Redis中的数据在指定的时间间隔内,以快照的方式保存到磁盘中。当需要恢复数据时,可以通过加载RDB文件将数据从磁盘中恢复出来。RDB持久性是一种紧凑、高性能的持久化方式,适用于大量数据更新或定期备份数据的场景。

(2)AOF持久性

AOF持久性是将Redis中的每个写命令都记录在一个日志文件中。当需要恢复数据时,可以通过重新执行日志文件中的命令来重建数据。AOF持久性提供了更精细的数据恢复能力,但是需要记录每个命令的操作,因此相对于RDB持久性,需要更多的磁盘空间和IO操作。

  1. 如何实现持久化

(1)RDB持久化实现

RDB持久化的实现方式是在Redis.conf配置文件中设置save命令。save命令有两个参数,参数一代表时间间隔,单位为秒,参数二代表执行数量,表示在指定时间间隔内执行指定数量的写命令后执行一次持久化操作。

例如,设置save 900 1,表示每900秒内若执行了至少1次写操作,则对数据进行一次持久化操作。

(2)AOF持久化实现

AOF持久化的实现方式是在Redis.conf配置文件中设置appendonly参数为yes。设置之后,每次执行写命令都会追加到AOF文件的末尾。

AOF文件有两种同步方式:每次写操作都同步到磁盘(always)、每秒同步一次到磁盘(everysec)。其中,always同步方式提供了最大的数据安全性,但是会对性能产生影响。因此通常采用everysec方式,在保证一定安全性的同时,尽量减少性能影响。

猜你喜欢

转载自blog.csdn.net/Flying_Fish_roe/article/details/134823138