我有一个Node.js应用程序,它通过Websocket连接接收数据并将每个消息推送到Azure Redis缓存。它将一组持久的消息存储在一个变量中以供下游使用,并定期同步该缓存中的数组。位错综复杂,但稍后我想分离出写入缓存的一半应用程序的一半,从中读取它的一半。Azure Redis缓存数据丢失?
在格林威治标准时间02:00左右,基于Azure门户统计数据,我似乎已开始在该同步上发生“缓存未命中”,这种状态持续了几个小时,之后我才在05:00左右再次获得“缓存命中”。
缓存未命中对应于CPU使用率的突然增加,最高时间为05:00左右。当我说高峰时,我的意思是达到81%,而之前的最高达到6%左右。因此,在05:00左右,CPU达到峰值,然后回落到正常状态,“缓存未命中”消失,但查看缓存内存使用情况,我从约37.4mb降至约3.85mb,我怀疑这是“空”状态),并且该应用程序正在使用的列表已被清空。
应用程序针对缓存运行的唯一函数是LPUSH和LRANGE,没有任何能够移除数据的功能,并且如果有人想知道,当CPU增加内存使用量时没有任何东西表明流氓数据的增加出现了。
它只是基本计划,所以我并不期望它是无懈可击的或任何东西,但即使没有标准计划的复制功能,我曾预计它不能完全清除自己的位置 - 我的印象是,Redis定期将自己写入磁盘,并从错误中恢复。
所有这一切,是我问这个问题的办法:
没有任何人有任何想法可能在这里发生了什么?
如果这是一些别人已经能够无意中触发自己,有没有我应该使用所有可能导致它失败这样灾难性同一缓存中查找任何陷阱出来,我可能有其他用途?
我会欢迎大家合唱团的人告诉我标准计划不会遇到这种问题,因为我已经为此付出了代价,并且很高兴认为这是正确的呼叫。
提前很多感谢..
顺便说一句:内存中的东西无论您选择的是基本计划还是标准计划。 – 2014-09-17 20:44:03