Redis面试题分享二十二:Redis 缓存数据量很大怎么办?

目录

一、解决思路

1. 使用连接池

2. 合理设置内存

3. 使用持久化机制

4. 分布式集群

二、解决方法

1 设置过期时间

2 不存放垃圾到redis中

3 及时清理无用数据

4 尽量对数据进行压缩

5 关注内存增长并定位大容量key

6 pika

三、总结


一、解决思路

1. 使用连接池

在实际应用中,每次请求Redis都需要建立一次连接。如果并发请求过多,就会导致连接数过多,从而影响Redis的性能。因此,使用连接池可以有效地减少连接数,提高Redis的性能。

2. 合理设置内存

Redis是一种基于内存的存储系统,因此合理设置内存大小可以提高Redis的性能。一般来说,可以将Redis的内存设置为物理内存的70%左右。

3. 使用持久化机制

Redis支持两种持久化机制:快照和AOF。快照是将当前内存中的数据保存到磁盘上,而AOF则是将写操作记录下来。使用持久化机制可以保证数据的可靠性,并且在Redis重启后可以快速恢复数据。

4. 分布式集群

当单台Redis无法满足业务需求时,可以使用分布式集群来提高Redis的性能。分布式集群可以将数据分散到多个节点上,从而提高Redis的并发处理能力。

二、解决方法

解决办法当然就是极力减少内存的使用了,一般情况下,我们都是这么做的:

1 设置过期时间

对具有时效性的key设置过期时间,通过redis自身的过期key清理策略来降低过期key对于内存的占用,同时也能够减少业务的麻烦,不需要定期清理了

2 不存放垃圾到redis中

这简直就是废话,但是,有跟我们同病相怜的人么?

3 及时清理无用数据

例如一个redis承载了3个业务的数据,一段时间后有2个业务下线了,那你就把这两个业务的相关数据清理了呗

4 尽量对数据进行压缩

例如一些长文本形式的数据,压缩能够大幅度降低内存占用

5 关注内存增长并定位大容量key

不管是DBA还是开发人员,你用redis,你就必须关注内存,否则,你其实就是不称职的,这里可以分析redis实例中哪些key比较大从而帮助业务快速定位异常key(非预期增长的key,往往是问题之源)

6 pika

如果实在不想搞的那么累,那就把业务迁移到新开源的pika上面,这样就不用太关注内存了,redis内存太大引发的问题,那也都不是问题了。

三、总结

解决这个问题就涉及到缓存系统的一个重要机制,即缓存数据的淘汰机制。简单来说,数据淘汰机制包括两步:第一,根据一定的策略,筛选出对应用访问来说“不重要”的数据;第二,将这些数据从缓存中删除,为新来的数据腾出空间。

通常,我们也把它叫作缓存替换机制,那么如何选择淘汰数据的具体策略。了解了数据淘汰机制和相应策略,我们才可以选择合理的 Redis 配置,提高缓存命中率,提升应用的访问性能。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

之乎者也·

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

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

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

打赏作者

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

抵扣说明:

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

余额充值