java 随机取集合中值_从有序集合随机取一个值,应该用什么方案?

今天做了一个小实验,起因如下:

69cdba68187968b7367440c5cba3b35d.png

先在redis里构造了测试数据,如下:

> zadd my_zset_999 1 35570

(integer) 1

> zadd my_zset_999 2 40617

(integer) 1

> zadd my_zset_999 3 40956

(integer) 1

> zadd my_zset_999 4 41151

(integer) 1

>

> zrange my_zset_999 0 -1 WITHSCORES

1) "35570"

2) "1"

3) "40617"

4) "2"

5) "40956"

6) "3"

7) "41151"

8) "4"

>

> zrange my_zset_999 0 -1

1) "35570"

2) "40617"

3) "40956"

4) "41151"

测试方法就是很简单的计算程序运行时间。

$t1 = microtime(true);

// 代码片段

$t2 = microtime(true);

$t = $t2 - $t1;

方法1

zrange key 0 -1 取出所有的值

array_rand() 从数组中随机取出一个值

方法2

zcount key -inf +inf 计算该集合有多少个元素(cnt)

rand(1, cnt) 生成一个随机数(random)

zrangebyscore key random random

方法3:对方法2的改造

zcard key

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值