ZREM && ZREMRANGEBYSCORE && ZREMRANGEBYLEX
1. ZREM
用于移除有序集中的一個或多個成員,不存在的成員將被忽略。
Command
$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ZADD vehicle 1 bmw 2 benz 3 bentley
(integer) 3
127.0.0.1:6379> ZREM vehicle bmw benz
(integer) 2
127.0.0.1:6379> ZREM vehicle fakeMember
(integer) 0
Code
func zrem(c redis.Conn) {
defer c.Do("DEL", "vehicle")
c.Do("ZADD", "vehicle", 1, "bmw", 2, "benz", 3, "bentley")
// 1. Remove members normally, return number of removed members.
remMemberCount, _ := c.Do("ZREM", "vehicle", "bmw", "benz")
fmt.Println("Number of removed member is:", remMemberCount)
// 2. Remove member that doesn't exist, return 0.
remMemberCount, _ = c.Do("ZREM", "vehicle", "fakeMember")
fmt.Println("Number of removed fake member is:", remMemberCount)
}
Output
$ go run main.go
Number of removed member is: 2
Number of removed fake member is: 0
2. ZREMRANGEBYSCORE
用于移除有序集中,指定分數(shù)(score)區(qū)間內(nèi)的所有成員。
Command
$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ZADD vehicle 1 bmw 2 benz 3 bentley
(integer) 3
127.0.0.1:6379> ZREMRANGEBYSCORE vehicle 1 2
(integer) 2
Code
func zremrangebyscore(c redis.Conn) {
defer c.Do("DEL", "vehicle")
c.Do("ZADD", "vehicle", 1, "bmw", 2, "benz", 3, "bentley")
// Return number of removed members.
remMemberCount, _ := c.Do("ZREMRANGEBYSCORE", "vehicle", 1, 2)
fmt.Println("Number of removed member is:", remMemberCount)
}
Output
$ go run main.go
Number of removed member is: 2
3. ZREMRANGEBYLEX
用于移除有序集合中給定的字典區(qū)間的所有成員。其實也就是把對應(yīng)條件下的ZRANGEBYLEX得到的成員刪除。因此,此命令也是針對分數(shù)相同的成員(目前看來適用范圍僅限于一個有序集合里所有成員的分數(shù)全部相同)。因為如果針對分數(shù)不同的成員,ZRANGEBYLEX得到的結(jié)果不是想要的排序出來的結(jié)果。
Command
$ redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ZADD vehicle 0 benz 0 audi 0 chrysler
(integer) 3
127.0.0.1:6379> ZREMRANGEBYLEX vehicle [a [b
(integer) 1
Code
func zremrangebylex(c redis.Conn) {
defer c.Do("DEL", "vehicle")
c.Do("ZADD", "vehicle", 0, "bmw", 0, "audi", 0, "chrysler")
remMemberCount, _ := c.Do("ZREMRANGEBYLEX", "vehicle", "[a", "[b")
fmt.Println("Number of removed member is:", remMemberCount)
}
Output
$ go run main.go
Number of removed member is: 1