我正在使用 redis 來設計用戶時間線(如在推特中)。我正在使用排序集來存盤帶有時間戳的 json 值作為分數
zrange feed:user:10000001 0 10 WITHSCORES
1) "{\"postId\":10000411,\"userId\":10000001}"
2) "1639073241754"
3) "{\"postId\":10000412,\"userId\":10000002}"
4) "1639073241748"
當用戶 A 取消關注 B 時,如何從用戶 A 的時間軸中洗掉用戶 B 的所有帖子?
由于排序集(和 redis)不支持查詢 json 資料,Oher 上的回應建議將 json 值存盤在哈希中,postId作為子鍵并存盤postId為排序集中的值。但是當我userId根據它洗掉時我在哪里存盤以查找它?如何實作此功能?
uj5u.com熱心網友回復:
我相信您應該完全重構存盤資料的方式。我建議這樣:
- 有一個
feed:user:{userId}只存盤 postId的排序集 。 - 有一組
user:post:{userId}用戶的 postId 存盤集
所以為了“從用戶A的時間軸中洗掉用戶B的所有帖子”,您需要首先執行like查詢redis> SMEMBERS user:post:{userBId}以檢索所有B的postId并將其存盤到變數“ results”中,然后執行此命令ZREM feed:user:{userAId} results
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379344.html
