ZREM && ZREMRANGEBYSCORE && ZREMRANGEBYLEX

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容