usercount

Redis命令拾遗四——集合类型(命令补充)

补充下上篇文章集合的命令。 上篇地址 博客园蜗牛 http://www.cnblogs.com/tdws/p/5785939.html 

SCARD Key获得执行集合中元素的数量。

SDIFFSTORE 目标键 keys ...  将集合做DIFF差集操作,并存储在目标键中。

另外同样有SINTERSTORE,SUNIONSTORE.对于集合还不了解的童鞋,请看上篇文章。

最后一个要介绍的命令就是SRANDMEMBER Key。从目标键中取随机一个元素。他是很有趣的。

目前SetA中有十个元素,当你指定的返回数量为正数,返回相应数量的随机数,如果大于集合数量,那么将集合全部元素返回。

但是如果你指定为负数,则会返回|负数|个,也就是说你指定-100,那么即使你只有十个元素,也会给你取出一百个元素。

另外我们可以看到上三张结果图,实际上,有时候也并不是那么随机,第一张和第三张图9的次数明显多,第二张图1的次数明显多。这是由于集合的存储结构——散列表造成的。其散列函数为了实现O(1)复杂度,会将元素映射到不同的“桶”当中,比如元素9被存到第一个桶当中,那么下一次进行随机数选择时,Redis先选择桶,那么自然第一个桶中数据少的话,被取出来的几率也就大大增加。

有关散列函数,拉链法解决冲突请看百度百科链接

 

posted @ 2016-08-19 23:53  坦荡  阅读(531)  评论(0编辑  收藏  举报