2012-09-15 212 views
0

我想在Redis中实现以下系统,但我不确定如何去做,因为我需要某种排队系统。这是我的想法是:redis中的fifo

用户A,B和C以下用户X,因此对于用户X检查他的追随者,我想用列表如下:

X [A, B, C] 

待办事项你认为这将是一个可行的解决方案?

如果这会是这样,我仍然有“排队”问题,说一个人只能跟着一个,如果用户A选择跟随用户Y,则该项目“A”应该从列表X.被删除

这听起来可能令人困惑:我不能很好地解释,因为我不是本地人。同样重要的是要注意,这些操作的负载每秒都会发生,因此,Redis可以成为这种操作的最佳选择吗?

在此先感谢。

回答

1

我不明白你需要排队吗?你可以用以下结构:

X:追随者 - 是一套containig追随者标识

X:如下 - 是用户该用户如下

当X位于Y之后的字符串containig ID你只是这样做:

srem $(X:follows) X 
sadd Y:followers X 
set X:follows Y 
+0

我需要队列,以便某个用户不能超过,比如说5个人。当用户跟随​​其他人时,跟随的第一个人得不到遵守。 –

+0

好的,那么当然你可以使用带* rpush *的列表作为尾部的推送项目,* lpop *从头部移除一个项目,* llen *获取列表长度,或者使用jusr * ltrim *将修剪列表修改为需要的长度。 – atomAltera

+0

是的,我在想的问题是关于性能。因为通过这种方式,每次我跟随其他人时,我都需要去另一个列表并从那里移除自己,这是否会导致速度缓慢? –