redis+memoryCache 现实内存缓存解决redis缓存存取大对象较慢的问题

Redis 作为内存数据库,拥有非常高的性能,单个实例的 QPS 能够达到 10W 左右。
Redis 在写入数据时,需要为新的数据分配内存,当从 Redis 中删除数据时,它会释放对应的内存空间。
如果一个 Key 写入的数据非常大,Redis 在分配内存时也会比较耗时。同样的,当删除这个 Key 的数据时,释放内存也会耗时比较久。
你需要检查你的业务代码,是否存在写入大 Key 的情况,需要评估写入数据量的大小,业务层应该避免一个 Key 存入过大的数据量。
那么有没有什么办法可以扫描现在 Redis 中是否存在大 Key 的数据吗?

Redis 也提供了扫描大 Key 的方法:

 
  1. redis-cli -h $host -p $port --bigkeys -i 0.01

项目上遇到过 存了几千条数据(5M以上)到redis 导致 从redis获取就花费了 近两秒

这里主要是针对微服务,因为微服务同一个程序可能有多个实例,此时 通过 redis 同步缓存memoryCache的key,删除了redis里面的key就可以使所有实现的缓存失效,无需同步删除所有实例的缓存(如果担心缓存时间过长,造成内存泄漏可以加一个定时任务 隔一段时间清理下redis上不存在的key)

具体实现如下(java原理一样):

 
  1. using System;
  2. using System.Collections.Concurrent;
  3. using System.Collections.Generic;
  4. <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值