Redis基本用法(二)
接上篇,继续介绍数据类型
其他数据类型
集合Set
集合包含一堆不重复的字符串,内部实现采用哈希表,增删改查的时间复杂度都是O(1)
SADD key value...
- 向一个集合中添加一个或多个元素,如果集合key不存在,则新建一个集合,如果集合中已经存在指定的值,这个值则会被忽略,返回成功插入集合元素的个数,如果key已经存在但是不是集合类型,则会返回一个错误WRONGTYPESCARD key
- 返回集合中元素的个数SMEMBERS key
- 返回集合中的所有元素SDIFF key1 [key2...]
- 返回集合key1与key2的差集,key2可以有多个SINTER key1 [key2..]
- 和上面一条类似,返回所有参数集合的交集SUNION key [key2...]
- 同上,返回所有参数集合的并集,另外,这三个命令还有对应的一组,即SDIFFSTORE dest key1 [key2...]
,以此类推,在命令后面加STORE。此时参数也要增加一个dest到第一个参数的位置,作用为把后面若干个集合key1…的差集/交集/并集储存到第一个参数指定的集合dest中,并返回dest中的元素个数SREM key value1...
- 移除集合中一个或多个元素,不存在的元素会被忽略,最后返回成功移除的元素的个数
有序集合Sorted Set
有序集合和普通集合类似,同样是用来存储一系列不重复的字符串的,区别是有序集合中的每个元素会关联一个score(double类型,可重复)用来排序
ZADD key score member
- 向一个有序集合中添加一个元素member,指定分数为score,也可以添加多个score和member的组合ZREM key member
- 从一个有序集合中移除一个元素,也可以是多个ZCARD key
- 统计有序集合中元素个数ZCOUNT key min max
- 统计有序集合中分数处于min和max之间的元素个数ZRANGEBYSCORE key min max
- 返回分数处于min和max之间的所有元素
发布订阅
Redis中的发布和订阅是一种消息通讯的模式,订阅者可以接收到发布者发布的消息。消息通过频道channel传递,互相之间都是多对多的关系,当新消息被某个发布者通过某个channel发布时,订阅了这个channel的所有订阅者都会接收到这条信息
我们开启两个redis-cli
客户端,其中一个作为订阅者:
1 | redis 127.0.0.1:6379> SUBSCRIBE testChannel |
这样一来就订阅了频道testChannel,然后另一个客户端作为发布者,向频道testChannel发送消息:
1 | redis 127.0.0.1:6379> PUBLISH testChannel "This is a message." |
此时第一个客户端(订阅者)将会收到以下信息:
1 | 1) "message" |
3条一组,分别为固定字符串"message"
,频道名"testChannel"
,以及发布者发布的消息