04Redis数据类型之Set类型及Zset 类型
来源:互联网 发布:网络教育小学教育专业 编辑:程序博客网 时间:2024/05/16 07:57
1、简介:
Set是集合,它是string类型的无序集合。set是通过hashtable实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog中的tag功能。
2、Set类型的基本方法:
2.1、sadd方法:向名称为key的set中添加元素。
redis 127.0.0.1:6379>sadd myset “hello”
(integer)1
redis 127.0.0.1:6379>sadd myset “world”
(integer)1
redis 127.0.0.1:6379>sadd myset “hello”
(integer)0
redis 127.0.0.1:6379>smembers myset
“hello”
“world”
2.2、srem方法:删除名称为key的set中的元素
redis 127.0.0.1:6379>sadd myset1 “hello”
redis 127.0.0.1:6379>sadd myset1 “world”
redis 127.0.0.1:6379>srem myset1 “hello”
redis 127.0.0.1:6379>smembers myset1
“world”
2.3、spop方法:随机返回并删除名称为key的set中的一个元素。
2.4、sdiff方法:返回所有给定key与第一个key的差集
eg:redis 127.0.0.1:6379>rpush myset2 “hello”
redis 127.0.0.1:6379>rpush myset2“world”
redis 127.0.0.1:6379>rpush myset3“hello”
redis 127.0.0.1:6379>rupsh myset3“bitty”
redis 127.0.0.1:6379>sdiff myset2 myset3
“world”
注意:返回的是前面key的差集,所以只返回world,而没有bitty。
2.5、sdiffstore方法:返回所有给定key与第一个key的差集,并将结果保存为另一个key。
eg: redis 127.0.0.1:6379>rpush myset4“hello”
redis 127.0.0.1:6379>rpush myset4“world”
redis 127.0.0.1:6379>lpush myset5“hello”
redis 127.0.0.1:6379>lpush myset5“putyy”
redis 127.0.0.1:6379>sdiffstore myset6myset4 myset5
redis 127.0.0.1:6379>smembers myset6
“world”
2.6、sinter方法:返回所有给定key的交集。
eg:redis 127.0.0.1:6379>rpushmyset7 “one”
redis 127.0.0.1:6379>rpush myset7 “two”
redis 127.0.0.1:6379>rpush myset8 “one”
redis 127.0.0.1:6379>rpush myset8“three”
redis 127.0.0.1:6379>sinter myset7myset8
“one”
2.7、sinterstore方法:返回所有给定key的交集,并将结果存为另一个key。
eg: redis 127.0.0.1:6379>rpush myset9 “one”
redis 127.0.0.1:6379>rpush myset9 “two”
redis 127.0.0.1:6379>rpush myset10 “one”
redis 127.0.0.1:6379>rpush myset10“three”
redis 127.0.0.1:6379>sinterstroemyset11 myset9 myset10
redis 127.0.0.1:6379>smembers myset11
“one”
2.8、sunion方法:返回所有给定key的并集。
eg: redis 127.0.0.1:6379>smembersmyset12
“one”
“two”
redis 127.0.0.1:6379>smembers myset13
“one”
“three”
redis 127.0.0.1:6379>sunion myset2myset3
“three”
“one”
“two”
2.9、sunionstore方法:
使用方法类似sdiffstroe方法,不再举例。
2.10、smove方法:从第一个key对应的set中移除member并添加到第二个对应的set中。
eg: redis 127.0.0.1:6379>smembersmyset11
“one”
“two”
redis 127.0.0.1:6379>smebers myset12
“one”
“three”
redis 127.0.0.1:6379>smove myset11myset12 two
redis 127.0.0.1:6379>smembers myset12
“one”
“three”
“two”
2.11scard方法:返回名称为key的set的元素个数
eg:redis 127.0.0.1:6379>scardmyset2
(integer)1
2.12、sismember方法:测试member是否是名称为key的set的元素。
eg: redis 127.0.0.1:6379>smembers myset1
“two”
redis 127.0.0.1:6379>sismember myset1two
(integer)1
redis 127.0.0.1:6379>sismember myset1one
(integer)0
2.13、srandmember方法:随机返回名称为key的set的一个元素,但不删除元素。
eg: redis 127.0.0.1:6379>sembers myset3
“one”
“two”
redis 127.0.0.1:6379>srandmember myset3
“two”
3、Zset类型的操作方法:
3.1定性:
是set的一个升级版,它在set的基础上,增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按照新的值调整顺序。可以理解为有两列的mysql表,一列存储value,一列存储顺序。操作中key理解为zset的名字。
3.2方操作法:
3.2.1、zadd方法:向名称为key的zset中添加元素member,score用于排序。如果该元素存在,则更新其顺序。
eg:redis 127.0.0.1:6379>zadd myzset 1 “one”
redis 127.0.0.1:6379>zadd myzset1 2 “two”
redis 127.0.0.1:6379>zadd myzset1 3 “one”
redis 127.0.0.1:6379>zrange myzset1 0 -1 withscores
“two”
“2”
“ one”
“3”
3.2.2、zrem方法:删除名称为key的zset中的元素member。
eg : redis 127.0.0.1:6379>zrange myset10 -1 withscores
“one”
“1”
“two”
“3”
redis 127.0.0.1:6379>zrem myset1 one
redis 127.0.0.1:6379>zrange myset1 0 -1withscores
“two”
“3”
3.2.3、zincrby方法:如果在名称为key的zset中已经存在元素member,则该元素的score增加increment,否则向该集合中添加该元素,其score的值为increment。
eg: redis 127.0.0.1:6379>zadd myset1 1“one”
redis 127.0.0.1:6379>zincrby myset1 2“one”
redis 127.0.0.1:6379>zrange myset1 0 -1withscores
“one”
“3”
注意:可见,incr增加的内容是对排序的score进行增加。
3.2.4、zrank方法:返回名称为key的zset中member元素的排名(按score从小到大排序)即下标。
eg: redis 127.0.0.1:6379>zrange myset1 0-1 withscores
“one”
“1“
“two”
“2”
“three”
“4”
redis 127.0.0.1:6379>zrank myset1 two
(integer)1 //在myset1中按照score升序排序为one,two,three。显然two的下标索引为1,给(integer)1就是给出的索引值。
3.2.5、zrerank:返回名称为key的zset中member元素的排序(按score从大到小排序),即下标。
例子就不写了,和zrank不一样地方就是score排序方式不同。
3.2.6、zrevrange方法:返回名称为key的zset(按score从大到小排序)中index从start到end的所有元素。
3.2.7、zrangebyscore方法:返回score在给定区间的元素(包含边界)
eg:redis 127.0.0.1:6379>zrangemyset01 0 -1 withscores
“one”
“1”
“two”
“2”
“three”
“3”
“four”
“4”
redis 127.0.0.1:6379>zrangebyscoremyset01 2 4 withscores
“two”
“2”
“three”
“3”
“four”
“4”
3.2.8、zcount方法:返回集合中score在给定区间的数量。
eg:redis 127.0.0.1:6379>zrangemyset01 0 -1 withscores
“one”
“1”
“two”
“2”
“three”
“3”
“four”
“4”
eg:redis 127.0.0.1:6379>zcountmyset01 2 4
(integer)3
3.2.9、zcard:返回集合里面所有元素的个数。
eg:redis 127.0.0.1:6379>zcardmyset01
(integer)4
3.2.10、zremrangebyrank:按照score升序排序后,删除索引为指定区间的元素。
eg:redis 127.0.0.1:6379>zrangemyset01 0 -1 withscores
“one”
“1”
“two”
“2”
“three”
“3”
redis 127.0.0.1:6379>zremrangebyrankmyset01 1 1
redis 127.0.0.1:6379>zrange myset01 0 -1withscores
“one”
“1”
“three”
“3”
3.2.11、
- 04Redis数据类型之Set类型及Zset 类型
- Redis系列-set类型和zset类型
- redis set类型和zset类型
- 04_NoSQL数据库之Redis数据库:set类型和zset类型
- Redis数据类型之SET类型
- NoSQL数据库之Redis数据库管理四(set类型和zset类型)
- Redis数据库(set类型和zset类型)
- Redis数据库(set类型和zset类型)
- redis数据类型 - set类型
- Redis教程(六) 有序集合(soted set / zset)类型
- Redis教程(六) 有序集合(soted set / zset)类型
- redis渐入佳境(05) zset类型
- redis-zset类型简单操作
- redis 之set类型
- 07. redis 数据类型之Zset
- Redis的数据类型及操作(三):set类型
- Redis学习手册(Set和Zset数据类型)
- Nosql之Redis: zset(有序集)数据类型及操作命令
- Python根据输入生成二维码(V3.6.3)
- 学习OpenGL ES之教你制作迷雾
- Factorization Machines 学习笔记(四)学习算法(转)
- hdoj 6208 The Dominator of Strings
- STL vector
- 04Redis数据类型之Set类型及Zset 类型
- uboot更换串口
- 首次用construct 2做游戏的感悟
- Postgresql备份与还原命令pg_dump
- 在ubuntu系统下用vim编写C程序
- 生产者和消费者之BlockingQueue(阻塞队列)详解
- CodeForce 124B Permutations(水题)
- Leetcode479. 找到两个位数相同的数相乘的最大回文积
- flume之source,channel,sink