小E镇选美大赛(yii2-redis有序集合) [基础教程]

作者:上班偷偷打酱油 发布于:2016-08-31 浏览:617次 收藏

故事背景

故事发生在遥远的小E镇,小E镇举行全镇选美大赛,参与选美的分别是lily,Alisa,lucy,Tom,镇长酱油借助上古神器[瑞迪斯]对投票进行了统计

启动神器

$redis = Yii::$app->redis;

第一个礼拜

选美投票如期举行,[瑞迪斯]神器记载如下

$redis->zadd('score','88','lily');
$redis->zadd('score','76','Alisa');
$redis->zadd('score','55','lucy');
$redis->zadd('score','99','Tom');

整理投票信息:

$sort = $redis->zrevrange('score', 0, 10);
print_r($sort);

公布排名:

Array ( [0] => Tom [1] => lily [2] => Alisa [3] => lucy )

头条:第一个礼拜Tom暂时位居美女榜首,后面分别是lily,Alisa,lucy

第二个礼拜

事件:有人举报Tom是个男的,经过组委会核实信息准确,取消Tom的参赛资格

事件:lily被爆整容,人气大跌,投票上浮受影响

[瑞迪斯]神器再次启动

$redis->zrem('score','Tom');      //取消参赛资格
$redis->zadd('score','92','lily');
$redis->zadd('score','136','Alisa');
$redis->zadd('score','122','lucy');

整理投票信息:

$sort = $redis->zrevrange('score', 0, 10);
print_r($sort);

公布排名:

Array ( [0] => Alisa [1] => lucy [2] => lily )

选美结束:

Alisa众望所归为小E镇第一美女,获得镇长颁发的荣誉奖杯,以及高额的奖金...后来..(此处省略一万字)

知识点:

redis有序集合简介:

Redis有序集合类似Redis集合存储在设定值唯一性。不同的是,一个有序集合的每个成员带有分数,用于以便采取有序set命令,从最小的到最大的分数有关。

Redis 有序set添加,删除和测试中的O(1)的存在成员(固定时间,无论里面包含的元素集合的数量)。列表的最大长度为2^32- 1元素(4294967295,超过4十亿每个元素的集合)。


Redis排序命令集

如下表显示与排序集的一些基本命令:

命令& 描述

1:ZADD key score1 member1 [score2 member2] 

添加一个或多个成员到有序集合,或者如果它已经存在更新其分数

2:ZCARD key 

得到的有序集合成员的数量

3:ZCOUNT key min max 

计算一个有序集合成员与给定值范围内的分数

4:ZINCRBY key increment member 

在有序集合增加成员的分数

5:ZINTERSTORE destination numkeys key [key ...] 

多重交叉排序集合,并存储生成一个新的键有序集合。

6:ZLEXCOUNT key min max 

计算一个给定的字典范围之间的有序集合成员的数量

7:ZRANGE key start stop [WITHSCORES] 

由索引返回一个成员范围的有序集合。

8:ZRANGEBYLEX key min max [LIMIT offset count] 

返回一个成员范围的有序集合(由字典范围)

9:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 

按分数返回一个成员范围的有序集合。

10:ZRANK key member 

确定成员的索引中有序集合

11:ZREM key member [member ...] 

从有序集合中删除一个或多个成员

12:ZREMRANGEBYLEX key min max 

删除所有成员在给定的字典范围之间的有序集合

13:ZREMRANGEBYRANK key start stop 

在给定的索引之内删除所有成员的有序集合

14:ZREMRANGEBYSCORE key min max 

在给定的分数之内删除所有成员的有序集合

15:ZREVRANGE key start stop [WITHSCORES] 

返回一个成员范围的有序集合,通过索引,以分数排序,从高分到低分

16:ZREVRANGEBYSCORE key max min [WITHSCORES] 

返回一个成员范围的有序集合,按分数,以分数排序从高分到低分

17:ZREVRANK key member 

确定一个有序集合成员的索引,以分数排序,从高分到低分

18:ZSCORE key member 

获取给定成员相关联的分数在一个有序集合

19:ZUNIONSTORE destination numkeys key [key ...] 

添加多个集排序,所得排序集合存储在一个新的键

20:ZSCAN key cursor [MATCH pattern] [COUNT count] 

增量迭代排序元素集和相关的分数


如果文章对您有所帮助,希望继续支持我们,您的支持是我们最大的动力 ¥打赏
声明:文章内容由作者原创或整理,未经允许,不得转载!
您需要登录后才可以评论。登录 | 立即注册