在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日期时间对象的整数。