请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

写入内存会不会造成数据丢失?

在缓存失效期间数据最终还没写入数据库怎么办?或者会不会造成数据丢失的情况?

正在回答

2回答

这个问题的场景是什么?是什么写入缓存?

0 回复 有任何疑惑可以回复我~
  • 提问者 就我皮 #1
    哈哈,也是电商相关。
    场景如下:
    
    最初的设想
    ------------------------------
    存储订单数据的时候先入了一张队列表,这个队列表有个状态字段,默认是0(未处理)。
    
    然后有个处理数据的 脚本,大概逻辑也很简单,就是每次从数据表中改变了2条数据的状态为2(待处理),处理完一系列后续逻辑后,然后再将状态为2的 改成1(已完成) ,目的是为了先锁表。
    
    
    最后定时计划,每一分钟执行下这个php脚本,形成了,一分钟到了,从队列表处理2条数据,一分钟到了,从队列表处理两条数据。
    
    
    问题的设想场景
    ------------------------
    现在就是把这张队列表,也就是一开始不入数据库,直接入了缓存,如redis或者memcached,从缓存去定时取来入库,但是有个问题,如果订单量很大,在缓存失效期间没取完怎么办?或者会不会造成数据丢失的情况?
    
    因为了解到Memcached 永久数据被踢现象,我不是太了解redis。
    
    而Memcached 和 redis 的数据都是存储在内存中。
    回复 有任何疑惑可以回复我~ 2018-09-03 10:43:23
  • 提问者 就我皮 #2
    我去,,,这个回复 不能换行。不好意思。为了方便阅读,我用回答回复。
    回复 有任何疑惑可以回复我~ 2018-09-03 10:44:13
  • sqlercn 回复 提问者 就我皮 #3
    redis足可以永久存储的,也可以把超时时间设置的长一些
    回复 有任何疑惑可以回复我~ 2018-09-03 10:56:18
提问者 就我皮 2018-09-03 10:45:13

最初的设想



存储订单数据的时候先入了一张数据表,这个数据表有个状态字段,默认是0(未处理)。 然后有个处理数据的 脚本,大概逻辑也很简单,就是每次从数据表中改变了2条数据的状态为2(待处理),处理完一系列后续逻辑后,然后再将状态为2的 改成1(已完成) ,目的是为了先锁表。


问题的设想场景

 


现在就是把这张数据表,也就是一开始不入数据库,直接入了缓存,如redis或者memcached,从缓存去定时取来入库,但是有个问题,如果订单量很大,在缓存失效期间没取完怎么办?或者会不会造成数据丢失的情况? 因为了解到Memcached 永久数据被踢现象,我不是太了解redis。 而Memcached 和 redis 的数据都是存储在内存中。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信