doc: 阅读redis sets文档
This commit is contained in:
@@ -56,6 +56,15 @@
|
|||||||
- [Blocking operations on lists](#blocking-operations-on-lists)
|
- [Blocking operations on lists](#blocking-operations-on-lists)
|
||||||
- [BRPOP](#brpop)
|
- [BRPOP](#brpop)
|
||||||
- [Automatic Creation and removal of keys](#automatic-creation-and-removal-of-keys)
|
- [Automatic Creation and removal of keys](#automatic-creation-and-removal-of-keys)
|
||||||
|
- [redis sets](#redis-sets)
|
||||||
|
- [basic commands](#basic-commands)
|
||||||
|
- [SADD](#sadd)
|
||||||
|
- [SMEMBERS](#smembers)
|
||||||
|
- [SDIFF](#sdiff)
|
||||||
|
- [SINTER](#sinter)
|
||||||
|
- [SREM](#srem)
|
||||||
|
- [SPOP](#spop)
|
||||||
|
- [SRANDMEMBER](#srandmember)
|
||||||
|
|
||||||
|
|
||||||
# redis
|
# redis
|
||||||
@@ -851,3 +860,93 @@ client 2> rpush event-queue:2 baka
|
|||||||
> LPOP bikes:repairs
|
> LPOP bikes:repairs
|
||||||
(nil)
|
(nil)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### redis sets
|
||||||
|
redis set是一个unordered collection of unique strings,通过redis sets可以高效进行如下操作:
|
||||||
|
- track unique items
|
||||||
|
- represent relations
|
||||||
|
- perform common set operations such as intersection, unions, and differences
|
||||||
|
|
||||||
|
#### basic commands
|
||||||
|
- `SADD`: 向set中添加new member
|
||||||
|
- `SREM`: 从set中移除指定member
|
||||||
|
- `SISMEMBER`: 检查给定的string是否位于set中
|
||||||
|
- `SINTER`: 返回两个或更多set的交集
|
||||||
|
- `SCARD`: 返回set的大小(cardinality)
|
||||||
|
|
||||||
|
#### SADD
|
||||||
|
`SADD`命令会向set中添加新的元素,示例如下:
|
||||||
|
```redis-cli
|
||||||
|
> SADD bikes:racing:france bike:1 bike:2 bike:3
|
||||||
|
(integer) 3
|
||||||
|
> SMEMBERS bikes:racing:france
|
||||||
|
1) bike:3
|
||||||
|
2) bike:1
|
||||||
|
3) bike:2
|
||||||
|
```
|
||||||
|
#### SMEMBERS
|
||||||
|
在上述示例中,`SMEMBERS`命令会返回set中所有的元素。`redis`并不保证元素的返回顺序,每次调用`SMEMBERS`命令都可能以任何顺序返回set中的元素。
|
||||||
|
|
||||||
|
#### SDIFF
|
||||||
|
可以通过SDIFF来返回两个sets的差异(差集)。例如,可以通过`SDIFF`命令查看有哪些元素位于`set1`中但是不位于`set2`中,示例如下:
|
||||||
|
```redis-cli
|
||||||
|
> SADD bikes:racing:usa bike:1 bike:4
|
||||||
|
(integer) 2
|
||||||
|
> SDIFF bikes:racing:france bikes:racing:usa
|
||||||
|
1) "bike:3"
|
||||||
|
2) "bike:2"
|
||||||
|
```
|
||||||
|
上述示例中,则通过`SDIFF`命令展示了`bikes:racing:france`和`bikes:racing:usa`两个set的差集。
|
||||||
|
|
||||||
|
SDIFF命令在`difference between all sets is empty`时,会返回一个empty array。
|
||||||
|
|
||||||
|
#### SINTER
|
||||||
|
可以通过SINTER命令来取多个sets的交集。
|
||||||
|
|
||||||
|
```redis-cli
|
||||||
|
> SADD bikes:racing:france bike:1 bike:2 bike:3
|
||||||
|
(integer) 3
|
||||||
|
> SADD bikes:racing:usa bike:1 bike:4
|
||||||
|
(integer) 2
|
||||||
|
> SADD bikes:racing:italy bike:1 bike:2 bike:3 bike:4
|
||||||
|
(integer) 4
|
||||||
|
> SINTER bikes:racing:france bikes:racing:usa bikes:racing:italy
|
||||||
|
1) "bike:1"
|
||||||
|
> SUNION bikes:racing:france bikes:racing:usa bikes:racing:italy
|
||||||
|
1) "bike:2"
|
||||||
|
2) "bike:1"
|
||||||
|
3) "bike:4"
|
||||||
|
4) "bike:3"
|
||||||
|
> SDIFF bikes:racing:france bikes:racing:usa bikes:racing:italy
|
||||||
|
(empty array)
|
||||||
|
> SDIFF bikes:racing:france bikes:racing:usa
|
||||||
|
1) "bike:3"
|
||||||
|
2) "bike:2"
|
||||||
|
> SDIFF bikes:racing:usa bikes:racing:france
|
||||||
|
1) "bike:4"
|
||||||
|
```
|
||||||
|
#### SREM
|
||||||
|
可以通过`SREM`命令来移除set中的元素,可以一次性移除一个或多个。
|
||||||
|
|
||||||
|
#### SPOP
|
||||||
|
`SPOP`命令支持随机移除一个element。
|
||||||
|
|
||||||
|
#### SRANDMEMBER
|
||||||
|
`SRANDMEMBER`命令支持随机返回一个set中的元素,但是不对其实际移除
|
||||||
|
|
||||||
|
上述命令的使用示例如下所示:
|
||||||
|
```redis-cli
|
||||||
|
> SADD bikes:racing:france bike:1 bike:2 bike:3 bike:4 bike:5
|
||||||
|
(integer) 5
|
||||||
|
> SREM bikes:racing:france bike:1
|
||||||
|
(integer) 1
|
||||||
|
> SPOP bikes:racing:france
|
||||||
|
"bike:3"
|
||||||
|
> SMEMBERS bikes:racing:france
|
||||||
|
1) "bike:2"
|
||||||
|
2) "bike:4"
|
||||||
|
3) "bike:5"
|
||||||
|
> SRANDMEMBER bikes:racing:france
|
||||||
|
"bike:2"
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user