我现在可以将一个资源存储在Redis中,使用哈希表或者RedisJSON。对于我的数据来说,它们是由几个字符串和数字字段组成的临时对象。当用户调用此过程时,会创建如下结构:
{
'item_id': 'k0f8h3n5m6n1w9d0k0k1m1n4b6c8f8r7'
'amount': 3.00042
'timestamp': 1590440708,
'user1_status': 'pending',
'user_2_status': 'completed'
}
这实际上是一个客户端-用户处理队列(排队由单独的Redis流处理),其中每个对象将作为哈希或RedisJSON对象使用,平均使用时间约为1小时。在任何给定时间,队列中会有数万个这些对象。在队列中,对象的字段(例如user1_status和user2_status)将被多次更新。
一旦每个对象完成处理,我可以将其留在Redis中,也可以将每个对象移动到冷存储数据库以进行日志记录,并从Redis中删除。我不确定我应该这样做还是只是将其保留在Redis中。
对于我的任务,Hash或RedisJSON哪种Redis数据类型更合适?在选择这两种类型之间,有哪些常规考虑因素?
注意:我意识到如果我想做这样的事情:
{
'item_id': 'k0f8h3n5m6n1w9d0k0k1m1n4b6c8f8r7'
'amount': 3.00042
'timestamp': 1590440708,
'user1_status': 'pending',
'user_2_status': 'completed'
'parent': {
'item1': 1,
'item2': [1, 2, 3, 4]
'item3': {
'one': 1,
'two': 2
}
}
}
如果你需要将对象存储为哈希表,那么RedisJSON可能是正确的选择,因为你必须在存储之前将任何对象展平。针对这个问题,假设我已经了解了此过程,不需要再次展平。