如果允许重复中奖,可以使用SRANDMEMBER 命令
//添加抽奖名单 127.0.0.1:6379> SADD lucky:1 Tom (integer) 1 127.0.0.1:6379> SADD lucky:1 Jerry (integer) 1 127.0.0.1:6379> SADD lucky:1 John (integer) 1 127.0.0.1:6379> SADD lucky:1 Marry (integer) 1 127.0.0.1:6379> SADD lucky:1 Sean (integer) 1 127.0.0.1:6379> SADD lucky:1 Lindy (integer) 1 127.0.0.1:6379> SADD lucky:1 Echo (integer) 1 //抽取三等奖3个 127.0.0.1:6379> SRANDMEMBER lucky:1 3 1) "John" 2) "Echo" 3) "Lindy" //抽取二等奖2个 127.0.0.1:6379> SRANDMEMBER lucky:1 2 1) "Sean" 2) "Lindy" //抽取一等奖1个 127.0.0.1:6379> SRANDMEMBER lucky:1 1 1) "Tom"如果不允许重复中奖,可以使用 SPOP 命令
//添加抽奖名单 127.0.0.1:6379> SADD lucky:1 Tom (integer) 1 127.0.0.1:6379> SADD lucky:1 Jerry (integer) 1 127.0.0.1:6379> SADD lucky:1 John (integer) 1 127.0.0.1:6379> SADD lucky:1 Marry (integer) 1 127.0.0.1:6379> SADD lucky:1 Sean (integer) 1 127.0.0.1:6379> SADD lucky:1 Lindy (integer) 1 127.0.0.1:6379> SADD lucky:1 Echo (integer) 1 //抽取三等奖3个 127.0.0.1:6379> SPOP lucky:1 3 1) "John" 2) "Echo" 3) "Lindy" //抽取二等奖2个 127.0.0.1:6379> SPOP lucky:1 2 1) "Sean" 2) "Marry" //抽取一等奖1个 127.0.0.1:6379> SPOP lucky:1 1 1) "Tom"注意:
Redis 2.6版本开始SRANDMEMBER命令支持Count参数。
Redis 3.2版本开始SRANDMEMBER命令支持Count参数。
其余低版本一次只能获取一个随机元素。
小结本篇文章我们总结了Redis 集合对象的内部实现、常用命令以及常用的一些场景,那么大家在项目中对Redis集合对象的使用都有哪些场景呢,欢迎在评论区给我留言和分享,我会第一时间反馈!我们共同学习与进步!
参考《Redis设计与实现》
《Redis开发与运维》
《Redis官方文档》