我正在尝试拉出一堆存储在redis队列中的记录,并将它们以1000的批次写入数据库。
这个想法是将redis事务包装在数据库事务中,这样,如果db提交失败,redis事务也会爆炸,因此我HTML
所需要的元素也不会消失,这是一个简单的例子,其中有10个记录:
lpop
该示例使用 REDIS.with do |redis|
redis.multi do |multi|
MyRailsModel.transaction do
10.times do
attrs = JSON.parse(multi.lpop("foo"))
MyRailsModel.create(attrs)
end
end
end
end
约定,但可用于任何设置。
我得到的问题是,activeRecord
并没有真正返回值,而是一个multi.lpop("foo")
-如果我尝试简单地放入Redis::Future
,则会出现一个SON.parse(multi.lpop("foo").value)
错误。
我开始从Redis api中感觉到我正在尝试做的事可能是不可行的,但是我发现很难相信像Redis交易这样的基本事情(例如获得价值)是不可能的,所以我希望有人知道我想念的东西