Redis——缓存穿透、击穿、雪崩、双写一致性、持久化、数据淘汰策略、数据删除、分布式锁

Redis

1. 谈谈对Redis的认识

        Redis(Remote Dictionary Server)是一个使用C语言编写的高性能的内存数据库,基于Key/Value结构存储数据,支持多种数据结构,一般用来做缓存、消息队列、分布式锁,同时还支持事务、持久化、主从和集群架构等。

  • 内存数据库:Redis主要将数据存储在内存中,这使得它具有非常高的读写性能。也意味着Redis适合用作需要快速访问的数据存储,尤其是对于那些对延迟要求严格的应用。

  • 支持多种数据结构:包括字符串、哈希、列表、集合、有序集合等。这些数据结构使得Redis不仅可以用作简单的键值存储,还可以用于更复杂的数据处理场景、

  • 持久化:除了将数据存储在内存中,Redis还提供了持久化功能,可以将数据保存到磁盘上,以防止数据丢失。Redis支持两种持久化方式:RDB(Redis DataBase)和AOF(Append Only File)。

  • 分布式:Redis可以通过主从复制(Master-Slave Replication)和分片(Sharding)来扩展性能和提高可用性。这使得Redis可以处理大规模的数据和高并发请求

  • 事务支持:Redis通过MULTI、EXEC、DISCARD和WATCH等命令,可以将多个命令打包成一个事务执行,保证这些命令的原子性。

  • 发布订阅:Redis可以用于构架消息队列、实时通讯等场景。发布者将消息发布到指定的频道,订阅者则可以订阅这些频道以接收消息。

  • 应用场景广泛:由于Redis具有高性能、灵活的数据结构和丰富的功能,因此被广泛应用于缓存、会话存储、实时统计、消息队列等各种场景中。

2. Redis的基础数据类型有哪些

  • String:以字符串形式存储数据,经常用于记录用户的访问次数、文章访问量等

  • hash:以对象形式存储数据,比较方便的就是操作对象中的某个字段

  • list:以列表形式存储数据,可记录添加顺序,允许元素重复

  • set:以集合形式存储数据,不记录添加顺序,元素不能重复,也不能保证存储顺序

  • zset:有序集合,可对数据基于某个权重进行排序。可做排行榜,取TOP N操作

3. Redis的全局指令

  • keys:查看所有键

  • dbsize:键总数

  • exists key:检查键是否存在

  • del key [key …]:删除键

  • expire key seconds:键过期

  • ttl key :观察键的剩余过期时间

  • type key:键的数据结构类型

4. 什么是缓存穿透,怎么解决

  • 缓存穿透是指查询一个一定不存在的数据,如果从数据库中查不到数据则不写入缓存,导致这个不存在的数据每次请求都要到数据库中去查询,就像缓存不存在一样穿透过去,可能导致数据库挂掉。这种情况大概率是遭受到了攻击。

  • 解决方案:接口校验,缓存空数据,布隆过滤器

    • 接口校验:正常用户操作虽然可能会发生缓存穿透,但是数量较少,出现大量穿透现象时一般就是遭到攻击。可以在最外先设置一层校验,如设置用户鉴权、数据合法性校验等

    • 缓存空数据:查询返回的数据为空,但是扔把这个空结果存储在缓存中

      • 优点:简单
      • 缺点:消耗内存,可能会发生不一致的问题
    • 布隆过滤器:主要是用于检索一个元素是否在一个集合中,可以使用redisson实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

墨尘儿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值