Redis数据库(set类型和zset类型)

2015-01-21 12:14:28 · 作者: · 浏览: 2

一.set类型


set是一个集合,它是string类型的无序集合,set是通过hash table实现的,添加,删除,查找的时间复杂度都是O(1),对于集合我们可以取并集,交集,差集。通过这些操作我们可以实现SNS中好友推荐和Blog的tag功能。


set常见操作:


(1)sadd


向一个集合中添加一个元素。例如:sadd set1 Hello


(2)smembers


查看集合中的所有元素。例如:smembers set1


(3)srem


删除集合中一个指定的元素。例如:srem set1 Hello


(4)spop


随机弹出set集合中德一个元素。例如:spop set1


(5)sdiff


求两个集合的差集,比如sdiff set1 set2,表示保留set1中与set2不同的所有元素。


(6)sdiffstore


将返回的差集存进一个集合。例如:sdiffstore set3 set1 set2,表示把set1与set2的差集存进


集合set3。


(7)sinter


返回给定两个集合的交集。例如:sinter set1 set2,表示返回set1和set2的交集。


(8)sinterstore


将两个集合的交集存进一个集合。例如:sinterstore set3 set1 set2,表示把set1和set2的交集


存进集合set3。


(9)sunion


返回给定两个集合的并集。例如:sunion set1 set2,表示返回set1和set2的并集。


(10)sunionstore


将两个集合的并集存进一个集合。例如:sunionstore set3 set1 set2,表示把set1和set2的并集


存进集合set3


(11)smove


从第一个key对应的set中移除member并添加到第二个对应的集合中。


例如:smove set1 set2 Hello,表示把set1中的Hello元素移动到set2中。


(12)scard


返回key对应集合的元素的个数。例如:scard set1。


(13)sismember


判断某一个元素是否为集合的元素。比如:sismember set1 Hello,表示判断Hello是否为set1的中


的元素。


(14)srandmember


随机返回名称为key的set的一个元素。例如:srandmember set1。


二.zset类型


zset是在set的基础上增加了顺序,形成一个有序的集合。


zset的常见操作:


(1)zadd


向有序集合zset中增加一个元素。例如:zadd zset 1 Hello


(2)zrange


输出zset中指定范围内的的所有元素,按照score从小到大的顺序。


例如:zrange zset 0 -1 withscores,表示输出有序集合zset中所有的元素,并且输出顺序号。


(3)zrem


删除名称为key的zset集合中的元素member。例如:zrem set1 Hello。


(4)zincrby


把有序集合zset中的指定元素的序列号加上指定的值。例如:zincrby zset 4 Hello


(5)zrank


返回名称为key的zset集合中元素的排名,按照下标从小到大的排名。例如:zrank zset Hello。


(6)zrevrank


返回名称为key的zset集合中元素的排名,按照下表从大到小的排名。例如:zrevrank zset Hello。


(7)zrevrange


按照score从大到小的顺序输出集合中所有元素。例如:zrevrange zset 0 -1 withscores。


(8)zrangebyscore


返回集合中给定区间的元素。例如:zrangebyscore zset 2 3 withscores


(9)zcount


返回集合中score在给定区间的数量。zcount zset 2 3


(10)zcard


返回集合中元素的个数。


(11)zremrangebyrank


按照索引来删除给定区间的元素。例如:zremrangebyrank zset 1 2


(12)zremrangebyscore


删除score在指定范围内的元素。例如:zremrangebyscore zset 1 2