把好运留给你利用Redis给房间进行随机分组(redis 随机分组房间)

2023-05-16 14:58:36 随机 分组 房间

把好运留给你:利用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。

```javascript
let 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);

}


现在,我们已经可以将房间的人进行随机分组,从而获取机会,让更多的朋友把好运留给你!

相关文章