Redis系列-set类型和zset类型

set类型 

Set是集合,它是string类型的无序集合。

set是通过hash table 实现的,添加、删除和查找的复杂度都是0(1)。

对集合我们可以取并集、交集、差集。

sadd 向名称为key的set中添加元素

sadd myset "hello"

smembers  查看集合

smembers myset

srem 删除元素

srem myset "one" 返回1 删除成功 返回0 删除失败

Redis系列-set类型和zset类型_第1张图片


spop 随机返回并删除名称为key的set中的一个元素 

spop myset


sdiff 返回所有给定key与第一个key的差集 

sdiff myset1 myset2 (以前面一个为标准)

Redis系列-set类型和zset类型_第2张图片


sdiffstore 返回所有给定key与第一个key的差集,并将结果存为另外一个key. 

sdiffstore myset3 myset1 myset2   # 将 myset1 myset2 的差集存到myset3里面(以myset1为基准)

Redis系列-set类型和zset类型_第3张图片


sinter 返回给定key的交集 

sinter myset4 myset5

Redis系列-set类型和zset类型_第4张图片


sinterstore 将交集存储到另外一个集合 sinterstore myset6 myset1 myset2  (与sdiffstore类似)


sunion 并集 

sunion myset1 myset2 

sunionstore 取并集存到新的set 

sunionstore myset7 myset1 myset2 #返回插入的元素个数

Redis系列-set类型和zset类型_第5张图片


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

smove myset2 myset7 three #成功返回1 失败返回0

Redis系列-set类型和zset类型_第6张图片


scard 查看集合的个数 scard myset2


sismember 测试member是否是名称为key的set的元素 

sismember myset2 two 是返回1 不是返回0


srandmember 随机返回 (因为set无序)

srandmember myset7


sorted sets 类型 

sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,

每次指定后,zset会自动重新按新的值调整顺序,可以理解为由两列的mysql,一列存value,一列存顺序。

其中key理解为zset的名字.

zadd 添加元素 

zadd myzset 1 "one" 

zadd myzset 2 "two" 

zadd myzset 3 "three" 

zrange myzset 0 -1 withscores 

这里的0和-1代表的是索引 withscores 输出顺序号

Redis系列-set类型和zset类型_第7张图片


zrem 删除名称为key的zset中的元素 

zrem myzset two


zincrby 以指定值来增加(减少)顺序 对数序号进行加减 

如果在名称为key的zset中,已经存在元素member,则该元素的sroce增加increment,

否则向该集合添加元素,其score的值为incrnment

zincrby myzset 2 one 

Redis系列-set类型和zset类型_第8张图片

再比如 four这个元素是不存在的

Redis系列-set类型和zset类型_第9张图片


zrank 返回名称为key的zset中的member元素的排名 (按score从小到大排序) 即下标 

zrank myzset two

Redis系列-set类型和zset类型_第10张图片


zrevrank 反转 按照score从大到小排名 zrevrank myzset two


zrevrange 逆序 降序排序 

zrevrange myzset 0 -1 withscores

Redis系列-set类型和zset类型_第11张图片


zrangebyscore 返回下标在给定区间的元素 

zrangebyscore myzset 2 3 withscore


zcount 返回集合中score在给定区间中的数量 

zcount myzset 2 3


zcard 返回集合中所有元素的个数 

zcard myzset


zremrangebyrank删除集合中在给定区间的元素 按照下标删除 

zremrangebyrank myzset 1 2

zremrangebyscore删除集合中给定区间的元素 按照顺序删除 

zremrangebyscore myzset 1 2

你可能感兴趣的:(nosql,redis)