请选择 进入手机版 | 继续访问电脑版

网赚研究院-致富网赚论坛-网赚宝盒-华夏网赚论坛-28网赚-贵族网赚论坛-日付网赚联盟

 找回密码
 立即注册
查看: 83|回复: 0

小乔影院 大男人日记 Redis数据结构:Hashes 和 Set 美人谋妖后无双txt

发表于 2020-1-14 23:31 | 830 显示全部楼层 |阅读模式

[复制链接]

2万

主题

4万

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
86677
发表于 2020-1-14 23:31 | 显示全部楼层 |阅读模式
这是写在帖子头部的内容Redis hashes就是大家都晓得的hash数据结构。
> hmset user:1000 username antirez birthyear 1977 verified 1OK> hget user:1000 username"antirez"> hget user:1000 birthyear"1977"> hgetall user:10001) "username"2) "antirez"3) "birthyear"4) "1977"5) "verified"6) "1" hashes用来描摹工具很方便, 现实上一个hash能放入的字段数目没有限制(除非可用内存全北Ш掴),所以在利用中, 可以用多种差别的方式操纵hash。
HMSET 设备hash的多个值。
HGET 获得单一字段值。
HMGET类似HGET,但返回多个值。:
> hmget user:1000 username birthyear no-such-field1) "antirez"2) "1977"3) (nil)一些命令也能感化于单个字段,对其举行点窜,比如HINCRBY:
> hincrby user:1000 birthyear 10(integer) 1987> hincrby user:1000 birthyear 10(integer) 1997Redis Sets

Redis Sets 是无序的字符串聚集。SADD命令往一个set中增加新的元素。也可以做一些其他操纵,比如,测试一个给定的元素能否存在,取交集,并集等。
> sadd myset 1 2 3(integer) 3> smembers myset1. 32. 13. 2如上,我把三个元素放入myset,而且告诉 Redis 返回全数的元素。 元素是无序的。Redis每次返回Sets的元素的顺序都是大要都是纷歧样的。
Redis可以测试一个元素能否在聚集内,比如:
> sismember myset 3(integer) 1> sismember myset 30(integer) 0"3" 在set中,而 "30" 不在聚集合。
Sets 长于描摹工具之间的关系。.比如,我们可以简单的操纵sets来实现打标签功用。
打点打标签题目标一个简单的方式给每一个要打标的工具都建立一个对应的set。 每个set包含标签ID聚集。
比如,给新文章打标签。假定ID为1000的文章打上了标签 1, 2, 5 和 77,可以用一个set,来表示这些标签ID关联一个文章:


Redis数据结构:Hashes 和  Set  新闻




> sadd news:1000:tags 1 2 5 77(integer) 4我们大要也想要具有反向的关系:给标签关联一个文章


Redis数据结构:Hashes 和  Set  新闻




> sadd tag:1:news 1000(integer) 1> sadd tag:2:news 1000(integer) 1> sadd tag:5:news 1000(integer) 1> sadd tag:77:news 1000(integer) 1要获得指定的文章的全数标签很简单,操纵smember set称号:
> smembers news:1000:tags1. 52. 13. 774. 2留意: 在上例中我们假定你已经有另一个数据结构 , 比如Redis hash, 将标签ID 和 标签 称号做了映照。
正确地操纵Redis命令可以很简单地实现一些复杂的操纵。 比如我们渴望获得全数都被打上1,2,10,和27标签地文章聚集,我们可以操纵SINTER命令,取交集:


Redis数据结构:Hashes 和  Set  新闻




> sinter tag:1:news tag:2:news tag:10:news tag:27:news... results here ...除了取交集,还可以取并集,差集,提取随机地元素等等。
操纵SPOP可以从Set中提取出一个元素,这可以用来模拟一些复杂地场景,比如扑克牌。一副扑克牌有52张牌,我们可以操纵一个set来表示这一副扑克牌,梅花以C开首,方块以D开首,红心以H开首,黑桃以S开首:
>  sadd deck C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 CJ CQ CK   D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 DJ DQ DK H1 H2 H3   H4 H5 H6 H7 H8 H9 H10 HJ HQ HK S1 S2 S3 S4 S5 S6   S7 S8 S9 S10 SJ SQ SK   (integer) 52现在,我们要从牌组中随机抽出5张,操纵SPOP命令可以随机从set中抽取元素,简直完竣。
但是,竣事完一场游戏后,牌组已经不完整了,我们必要地是衣服完整地52张牌组。计谋是建立一个52张牌的聚集,每次游戏起头前都复制一份,然后操纵复制出来的聚集举行抽牌。滑稽的是,这里的复制,操纵SUNIONSTORE命令,这实在是一个取并集的命令,可以将多个聚集取并集:


Redis数据结构:Hashes 和  Set  新闻


> sunionstore game:1:deck deck(integer) 52获得复制的牌组后,可以给第一个游戏加入者发牌了:
> spop game:1:deck"C6"> spop game:1:deck"CQ"> spop game:1:deck"D1"> spop game:1:deck"CJ"> spop game:1:deck"SJ"已经发出5张牌了,那末此时牌组里还剩下几张牌?可以操纵SCARD命令。CARD是cardinality的缩写,指的是聚集的元素数目。
> scard game:1:deck(integer) 47算术: 52 - 5 = 47.
当你只想要从牌组种随机抽取一张牌,看一眼,然后再放回去,可以操纵SRANDMEMBER命令。

免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!
感激您的阅读
回复

使用道具 举报

0条回复
跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2015 忽悠兄 X3.2 © 2001-2013 Comsenz Inc.

Archiver|手机版|小黑屋| Comsenz Inc.  |网站地图

快速回复 返回顶部 返回列表