我有用户存储在Redis中,并希望能够只从一个集合中调用某些子集,如果我没有得到正确的用户,我想把它放回到集合中,然后再试一次,直到我得到一个所需用户
@redis = Redis.new
@randUser = @redis.spop("users")
if @randUser.include?(["user_4", "user_5", "user_6"])
@redis.sadd("users", @randUser)
# Run @randUser = @redis.spop("users") again
else
$user_username = @redis.hget(@randUser, "username")
$user_password = @redis.hget(@randUser, "password")
end
我无法理解我的想法,我还能如何处理这个问题?
答案 0 :(得分:2)
将if
更改为while
:
while ["user_4", "user_5"].include?(@randUser = @redis.spop("users")) do
@redis.sadd("users", @randUser)
end
$user_username = @redis.hget(@randUser, "username")
$user_password = @redis.hget(@randUser, "password")
请注意,您实际上混淆了Array#include?