- 29
- 0
if(redis中是否存在key){
if(get(key)!=''){
返回redis数据
}
} else {
查询数据库 查到了就放到redis去 查不到也写到redis去 key=''
}
这个是我解决 如果一个key不存在的时候 让他不去访问数据库 在高并发的时候不至于挂掉
但是同时也有一个问题了 如果有人恶意请求很多不存在的key 那么我的内存会生成很多key='' key1='' 这样的数据 会占用我内存的空间 针对这个要如何处理呢
- 共 0 条
- 全部回答
-
可口的草莓 普通会员 1楼
缓存穿透(Cache Hole)是一种在缓存技术中常见的问题,它指的是通过缓存系统中的某些失效或者限制条件,使得缓存中存储的数据与用户实际请求的数据产生冲突,从而导致缓存失效、服务中断或数据丢失的情况。以下是缓存穿透问题的几个主要方面:
-
内存泄露:当缓存中的数据引用了从内存中读取的数据时,如果内存泄露导致这部分数据的生命周期耗尽,缓存中的数据将不再有效,从而引发缓存穿透问题。当缓存失效时,用户会看到服务器返回的结果为无效或未命中,这可能由于缓存中未覆盖的数据导致的错误响应。
-
内存扩散:缓存穿透还可能导致数据在内存中分散存储,导致后续查询和更新时无法找到正确的数据。如果缓存中的数据与实际请求的数据冲突,那么在后续的访问中,如果使用了从缓存中获取的数据,那么这些数据可能会被访问到未覆盖的数据部分,从而导致缓存穿透。
-
服务中断:如果缓存穿透严重,可能会导致服务中断,例如用户访问某个服务时,由于缓存中的数据失效或未覆盖,服务无法正常工作,从而引发用户不满或影响业务运营。
-
数据丢失:在缓存穿透的情况下,如果缓存中存储的数据与用户实际请求的数据存在冲突,那么如果缓存失效或未覆盖,用户可能会看到服务器返回的结果为无效或未命中,从而导致数据丢失。这种情况下,用户可能会要求恢复已有的数据,这可能涉及到数据的备份、数据清理和数据恢复等操作,这可能会导致数据的完整性和可靠性受到影响。
为了避免缓存穿透问题,可以采取以下措施:
-
强化缓存管理:在缓存系统的设计中,应尽量减少缓存数据的生命周期依赖,例如,可以采用数据锁或锁机制来保证缓存中的数据在一定时间内有效,从而防止内存泄露。同时,对于数据的生命周期,应尽可能地进行缓存失效后的清理和数据恢复操作,以保证数据的完整性和一致性。
-
设计合理的缓存策略:根据业务需求和缓存策略,合理设计缓存失效的条件和策略,例如,可以设置缓存的过期时间、过期条件和失效策略等,以便在缓存失效后能够及时进行数据清理和数据恢复。
-
使用合适的缓存技术:对于某些需要在内存中长期存储数据的场景,可以考虑使用内存数据库、键值对存储等技术,以提高数据的存取效率和一致性。
-
引入认证机制:在缓存系统中,可以通过认证机制来验证用户请求的数据来源,避免缓存中存储的数据与用户实际请求的数据产生冲突。例如,可以采用JWT等认证机制,验证用户的身份和缓存数据的来源。
-
提供故障恢复机制:在缓存穿透问题发生时,应提供故障恢复机制,例如,可以定期进行数据备份、数据清理和数据恢复操作,以保证用户数据的完整性和可靠性。同时,应定期进行性能监控和故障排查,以便及时发现和解决缓存穿透问题。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

