我需要在Redis中存储以下对象。
case class Session(id: String, deviceId: String)
id
字段-是一些UUID。
deviceId
是三个值之一,例如:
deviceId = [D1|D2|D3]
我使用HMSET
命令在Redis中将Sessions
作为HashMaps存储。
将使用两种操作:
通过sessions
删除所有deviceId
。此操作引发 issue 1
通过session
删除id
。此操作引发 issue 2
因此,我遇到了以下问题:
问题1 。如果我想用sessions
删除deviceId
,则应该使用这样的索引:
index:sessionByDeviceId:<deviceId_value>=Set(<sesssionIds_values>)
例如:
index:sessionByDeviceId:D1=Set(id1, id2, ..., idN)
上面通过sessionByDeviceId
索引获取的会话ID列表可能会很长(例如,约100万)。
如何为此操作创建有效的Redis命令(按deviceId删除会话)?
问题2 。如果我想按ID删除会话,那么我也必须为此会话删除sessionByDeviceId
索引。
如何为此操作创建有效的Redis命令?
对于redis客户端,我使用the following library:
也许我使用错误的数据结构存储任务的索引? 也许有更有效的方法来解决此任务?