我一直在努力尋找嵌套評論的數據結構(只有1層的嵌套,例如臉書)如何在redis中構建1級嵌套註釋?
爲了實現評論的非嵌套「飼料」我一直在使用有序集跟蹤評論,將評分作爲時間戳和成員用作json編碼的一組屬性,其中包含呈現評論所需的所有信息。
所以添加註釋可能是這樣的:
zadd 'users:1:comments', 123456789, {body : 'hello'}
和檢索它是如此簡單:
zrevrange 'users:1:comments', 0, 20
爲了支持嵌套評論我一直在努力,在這個擴大在某種程度上 我已經頭腦風暴兩種不同的方式,但每個都有問題:
1)
添加到COMMENT_ID屬性的列表,COMMENT_ID指向父評論
zadd 'users:1:comments', 123456789, {id : 1, body : 'hello'}
zadd 'comments:1:comments', 123456789, {id : 2, body : 'nested hello', comment_id : 123 }
應該是這樣的:
-hello
-nested hello
這種方法的問題是,當涉及到分頁。如果評論有20個嵌套評論,而我只顯示前10個評論,則嵌套樹將被截斷(父評論+ 9嵌套評論將被檢索)
2)
把嵌套評論到它自己的飼料:
This is a parent comment
zadd 'users:1:comments', 123456789, {id: 1, body : 'hello'}
this is a nested comment
zadd 'comments:1:comments' 123456789, {id: 2, body : 'nested hello'}
然而,這將導致N + 1個Redis的查詢試圖顯示用戶的飼料時:
zrevrange 'users:1:comments', 0, 20
zrevrange 'comments:1:comments', 0, 20
zrevrange 'comments:2:comments', 0, 20
etc...
...不至 提到嵌套註釋可能不應該用範圍來選擇。
理想情況下,我希望這可以與單個redis查詢一起工作,但我不確定如何構建我的數據以便可能。
想法?
很確定這不能解決我在原帖的#1中描述的分頁問題。 – jsharpe