把好运留给你利用Redis给房间进行随机分组(redis 随机分组房间)
把好运留给你:利用Redis给房间进行随机分组
「把好运留给你!」这个口号表达的最好的就是:给生活中的某些事物获取随机机会,从随机中找到机会!同样的道理,当我们需要对一个房间的人进行随机分组,也可以利用Redis来实现这一目的!
要实现上面的目标,首先我们要准备一些必要的工具:首先是Redis,另外还需要一个[random-set](https://github.com/moshest/random-set)库,它可以让Redis的[SMEMBERS](https://redis.io/commands/smembers)支持随机索引,从而让我们使用Redis来实现随机分组目标!
接下来我们就可以开始编写代码了!我们将房间的信息存储在Redis的一个Name-Set中,比如room1。用一个循环,我们可以从Name-Set中取出所有的名字,然后放进一个Array数组中:
“`javascript
let room = ‘room1’;
let names = [];
client.smembers(room,function(err,value){ // 从room1中获取Name-Set
if(err) throw err;
names = value;
});
接下来我们要使用random-set库来实现随机取值,它支持SMEMBERS指令。因此,我们可以使用random-set函数从Array中取出随机names。
```javascriptlet target_num = names.length / 2; // 随机生成房间分配数量
let random_names = RandomSet.randomSet(names,target_num);
我们可以将random-names取出并且平均随机分配到新的分组中:
“`javascript
let group_num = 2; // 房间分组数量
let group_array = [];
while(random_names.length > 0){
let temp_arr = []
for(let i=0; i
let name = random_names.pop();
temp_arr.push(name);
}
group_array.push(temp_arr);
}
现在,我们已经可以将房间的人进行随机分组,从而获取机会,让更多的朋友把好运留给你!