通过python脚本从Aerospike迁移到Redis后无法验证到期时间

时间:2018-07-20 11:36:42

标签: python redis database-migration ttl

在Aerospike中,我们有一个expiresIn字段,其时间以毫秒为单位,示例-

1535873246092 

如果在不同时间查询,则记录中的该值保持不变。

当我们将数据迁移到Redis缓存时,我们将密钥的ttl设置为等于上述时间。

我们正在尝试从当前时间起以秒为单位设置密钥的expire(),以使当前纪元时间加上此时间等于Aerospike中存储的时间。

迁移逻辑

我计算了剩余的秒数,并尝试将其设置为expire()-

expiresInEpochSeconds=(expiresIn/1000)
currentTime=int(round(time.time()))
remainingSecondsToExpiry=(expiresInEpochSeconds-currentTime)
conn.expire(pk,remainingSecondsToExpiry)

但是,这与我的计算不符。根据商店的redis密钥,我得到ttl = 3787603898,并且针对一个密钥。对于Aerospike中的相同密钥,expiresIn为1535873246092。

运行健全性检查脚本的瞬时时间(以毫秒为单位)是- 1532085614576

因此,将它与来自redis的ttl相加-

(1532085614576+3787603898) = 1535873218474, 

与1535873246092不匹配。

我尝试使用expireat()在设置Redis密钥到期时直接设置纪元时间,但不确定需要什么。文档说-指示Unix时间或Python日期时间对象的整数。

0 个答案:

没有答案