1.string类型 key value
2.hash类型 key field value field value
3.list类型 key value value value
4.集合类型 key {member,member,member}
5.有序集合
1.集合类型
#对比集合的数据时,拿前者与后者对比,取出前者有而后者没有的,不管后者由而前者没有的
127.0.0.1:6379> SMEMBERS set3
1) "0"
2) "1"
3) "5"
4) "8"
5) "9"
127.0.0.1:6379> SMEMBERS set2
1) "1"
2) "3"
3) "4"
4) "6"
5) "8"
127.0.0.1:6379> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "5"
5) "7"
#对比
127.0.0.1:6379> SDIFF set1 set2
1) "2"
2) "5"
3) "7"
#三者对比
127.0.0.1:6379> SDIFF set1 set2 set3
1) "2"
2) "7"
2.有序集合 sorted-set
应用场景:
排行榜应用,取TOP N操作
这个需求与上面需求的不同之处在于,前面操作以时间为权重,这个是以某个条件为权重,比如按顶的次数排序,这时候就需要我们的sorted set出马了,将你要排序的值设置成sorted set的score,将具体的数据设置成相应的value,每次只需要执行一条ZADD命令即可。
1)添加数据
#添加一个数据
127.0.0.1:6379> ZADD linux9 90 banzhang 80 shengwei 50 jiwei 20 tiwei 100 xuewei
(integer) 5
2)查看数据
#查看排序后数据
127.0.0.1:6379> ZRANGE linux9 0 -1
1) "tiwei"
2) "jiwei"
3) "shengwei"
4) "banzhang"
5) "xuewei"
#查看排序及排序依据
127.0.0.1:6379> ZRANGE linux9 0 -1 WITHSCORES
1) "tiwei"
2) "20"
3) "jiwei"
4) "50"
5) "shengwei"
6) "80"
7) "banzhang"
8) "90"
9) "xuewei"
10) "100"
#查看排序及排序依据(倒叙)
127.0.0.1:6379> ZREVRANGE linux9 0 -1 WITHSCORES
1) "xuewei"
2) "100"
3) "banzhang"
4) "90"
5) "shengwei"
6) "80"
7) "jiwei"
8) "50"
9) "tiwei"
10) "20"
#查看指定成员的分数
127.0.0.1:6379> ZSCORE linux9 xuewei
"100"
#查看成员的数量
127.0.0.1:6379> ZCARD linux9
(integer) 5
#查看符合条件范围的成员
127.0.0.1:6379> ZCOUNT linux9 50 100
(integer) 4
127.0.0.1:6379> ZRANGEBYSCORE linux9 50 100
1) "jiwei"
2) "shengwei"
3) "banzhang"
4) "xuewei"
127.0.0.1:6379> ZRANGEBYSCORE linux9 50 100 WITHSCORES
1) "jiwei"
2) "50"
3) "shengwei"
4) "80"
5) "banzhang"
6) "90"
7) "xuewei"
8) "100"
3)修改数据
#修改数据的值,排行榜顺序也会改变
127.0.0.1:6379> ZINCRBY linux9 100 tiwei
"120"
127.0.0.1:6379> ZREVRANGE linux9 0 -1 WITHSCORES
1) "tiwei"
2) "120"
3) "xuewei"
4) "100"
5) "banzhang"
6) "90"
7) "shengwei"
8) "80"
9) "jiwei"
10) "50"
4)删除数据
#删除集合中指定成员
127.0.0.1:6379> zrem linux9 shengwei
(integer) 1
127.0.0.1:6379> ZREVRANGE linux9 0 -1 WITHSCORES
1) "tiwei"
2) "120"
3) "xuewei"
4) "100"
5) "banzhang"
6) "90"
7) "jiwei"
8) "50"
#删除整个key
127.0.0.1:6379> del linux9
(integer) 1