采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在缓存失效期间数据最终还没写入数据库怎么办?或者会不会造成数据丢失的情况?
这个问题的场景是什么?是什么写入缓存?
哈哈,也是电商相关。 场景如下: 最初的设想 ------------------------------ 存储订单数据的时候先入了一张队列表,这个队列表有个状态字段,默认是0(未处理)。 然后有个处理数据的 脚本,大概逻辑也很简单,就是每次从数据表中改变了2条数据的状态为2(待处理),处理完一系列后续逻辑后,然后再将状态为2的 改成1(已完成) ,目的是为了先锁表。 最后定时计划,每一分钟执行下这个php脚本,形成了,一分钟到了,从队列表处理2条数据,一分钟到了,从队列表处理两条数据。 问题的设想场景 ------------------------ 现在就是把这张队列表,也就是一开始不入数据库,直接入了缓存,如redis或者memcached,从缓存去定时取来入库,但是有个问题,如果订单量很大,在缓存失效期间没取完怎么办?或者会不会造成数据丢失的情况? 因为了解到Memcached 永久数据被踢现象,我不是太了解redis。 而Memcached 和 redis 的数据都是存储在内存中。
我去,,,这个回复 不能换行。不好意思。为了方便阅读,我用回答回复。
redis足可以永久存储的,也可以把超时时间设置的长一些
最初的设想
存储订单数据的时候先入了一张数据表,这个数据表有个状态字段,默认是0(未处理)。 然后有个处理数据的 脚本,大概逻辑也很简单,就是每次从数据表中改变了2条数据的状态为2(待处理),处理完一系列后续逻辑后,然后再将状态为2的 改成1(已完成) ,目的是为了先锁表。
问题的设想场景
现在就是把这张数据表,也就是一开始不入数据库,直接入了缓存,如redis或者memcached,从缓存去定时取来入库,但是有个问题,如果订单量很大,在缓存失效期间没取完怎么办?或者会不会造成数据丢失的情况? 因为了解到Memcached 永久数据被踢现象,我不是太了解redis。 而Memcached 和 redis 的数据都是存储在内存中。
登录后可查看更多问答,登录/注册
面面俱到讲解影响MySQL性能的各个因素,让MySQL架构了然于胸。
1.7k 35
1.3k 29
1.1k 17
1.0k 15