首页 > 代码库 > redis sets类型及操作
redis sets类型及操作
sets类型及操作
set是集合,它是string类型的无序集合。通过hash table实现,添加、删除、查找的复杂度都是0(1)。对集合我们可以实现取交际、差集并集。通过这些操作我们可以实现SNS中的好友推荐和blog的tag(标签)功能
sadd
向集合中添加元素,成功返回1,失败返回0,重复值添加为失败
例如:
sadd myset1 hello
smembers
查看集合中的元素
例如:
smembers myset1
scard
查看集合中的元素个数
例如:
scard myset1
sismember
测试元素在不在集合中,存在返回1,不存在返回0
例如:
sismember myset1 two
srem
删除集合中的元素,成功返回1,失败返回0
例如:
srem myset1 hello
spop
随机从集合中弹出一个元素,并删除,返回弹出元素的值
例如:
spop myset1
sdiff
返回第一个集合在第二个集合中的差集部分
例如:
myset1 中有 three two
myset2 中有 two one
sdiff myset1 myset2 //不会返回 three one 只会返回 three
sdiffstore
返回第一个集合在第二个集合中的差集部分,并将结果保存到另一个集合中
例如:
sdiffstore myset4 myset2 myset3 //把myset2在myset3中的差集保存在myset4中
sinter
返回所有集合的交集
例如:
sinter myset1 myset2
sinterstore
返回所有集合的交集,并保存,用法同sdiffstore
sunion
返回所有集合的并集
例如:
sunion myset1 myset2
sunionstore
返回所有集合的并集,并保存,用法同sdiffstore
smove
把第一个集合中的指定元素,移动到第二个集合
例如:
smove myset2 myset1 three
srandmember
随机返回集合中的一个元素,不删除元素
sorted sets
是对set的一个升级版本,它在set的基础上增加了一个顺序属性,这个属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。
zadd
向集合中添加元素,member,score用于排序,如果该元素存在,则更新其顺序
例如:
zadd myzset1 1 one
zrange
查看zset集合中的元素
例如:
zrange myzset1 0 -1 withscores //withscores 输出顺序号,不是必须
zrem
删除值为指定的元素
例如:
zrem myset1 two
zincrby
向集合中添加元素,如果元素已经存在,则该元素的score增加increment的值,否则向该集合中添加该元素,其score的值为increment
例如:
zincrby myzset1 2 four
zrank
返回集合中元素的排名,按score从小到大的顺序,即下标,和数组一样从0开始
例如:
zrank myzset1 four
zrevrank
和zrank一样,不同是从大到小排序
zrevrange
返回集合中的结果,降序排序
例如:
zrevrange myzset1 0 -1 withscores
zrangebyscore
返回指定返回的元素
例如
zrangebyscore myzset1 2 3 withscores
zcount
返回集合中score在给定区间的元素的数量
例如:
zcount myzset1 2 4
zremrangebyrank
删除集合中指定索引范围内的元素
例如:
zremrangebyrank myzset1 1 3
zremrangebyscore
删除集合中指定score范围内的元素
例如:
zremrangebyscore myzset1 1 2
redis sets类型及操作