如何更新Redis列表项?

4

我目前正在研究高可扩展性的网站架构,几乎所有我读过的文章都说Redis是一个非常好的选择用于时间轴(类似Facebook、Twitter)的架构。因此,假设我正在构建一个新的社交网络,并且我想使用Redis保存每个用户最近的500条Feed,那么当用户删除其中一条在最近500条中的Feed时会发生什么呢?我找不到任何有关更新Redis列表项的信息,如果Redis没有这样的功能,为什么它会成为一个很好的选择呢?


我对于"feeds"问题不确定,但是列表非常适合在其末尾添加/删除元素,但不太适合更新其中任意一个元素。 - Itamar Haber
@Ryan 我不确定你是否理解我的意思。 - spartacus
由于我的误解造成的任何困惑,我感到抱歉。 - Ryan Vincent
如果您想让用户'a'拥有一个名为'feed_1'的列表,并让用户'b'拥有一个包含'feed_1'的列表,则@zodvik提供的答案可以实现。请注意,键'feed_1'是唯一的。如果您更新与其关联的值,则新值将在所有地方更改。'list'哈希等保存对键的引用。使用SET feed_1 <new value>更改与键关联的值 - Ryan Vincent
2个回答

2

1

如果您想保持最近的500个动态的顺序,那么使用有序集合会比列表更好。

要添加新条目,可以使用命令ZADD user_id:feeds time_in_epoch feed_id。time_in_epoch将作为排序集的分数,并维护动态的顺序。

要删除用户的动态,请使用ZREM user_id:feeds feed_id


如果不需要排序,可以使用集合而不是有序集合。 - zodvik
7
添加和删除没问题,但如何更新列表中的动态? - spartacus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接