美文网首页
SRANDMEMBER

SRANDMEMBER

作者: NotFoundW | 来源:发表于2020-04-16 12:43 被阅读0次

    SRANDMEMBER

    1. 不指定count时,默认随机返回一个成员
    2. 指定count时,如果count小于集合成员数,则返回一个包含count个随机元素的List。
    3. 指定count时,如果count大于等于集合成员数,则以List形式返回整个集合
    4. 如果count为负数,且count的绝对值小于集合成员数,则返回一个包含count个随机元素的List,但是元素可能会重复出现多次
    5. 如果count为负数,且count的绝对值等于或者大于集合成员数,则返回一个包含count个随即元素的List,元素同样可能会重复多次。但是,即使count绝对值大于集合成员数,但是也不一定会返回所有集合成员
    6. 如果指定count为0,则返回一个空列表

    Command

    $ redis-cli.exe -h 127.0.0.1 -p 6379
    127.0.0.1:6379> sadd boa 1 2 3 4
    (integer) 4
    127.0.0.1:6379> srandmember boa
    "4"
    127.0.0.1:6379> srandmember boa 2
    1) "3"
    2) "1"
    127.0.0.1:6379> srandmember boa 5
    1) "1"
    2) "2"
    3) "3"
    4) "4"
    127.0.0.1:6379> srandmember boa -3
    1) "3"
    2) "3"
    3) "4"
    127.0.0.1:6379> srandmember boa -4
    1) "3"
    2) "2"
    3) "1"
    4) "3"
    127.0.0.1:6379> srandmember boa -5
    1) "1"
    2) "3"
    3) "4"
    4) "4"
    5) "1"
    127.0.0.1:6379> srandmember boa 0
    (empty list or set)
    

    Code

    func srandmember(c redis.Conn) {
        defer c.Do("DEL", "boa")
        c.Do("SADD", "boa", 1, 2, 3, 4)
        //  1. If you don't specify count, will return a rand member as default.
        randMember, err := redis.Int(c.Do("SRANDMEMBER", "boa"))
        if err != nil {
            colorlog.Error(err.Error())
            return
        }
        fmt.Println("If you don't specify a number, will return a rand member as default:", randMember)
        //  2. If specified count is less than the number of members of set,
        //  will return a list containing count random members.
        randMembers, err := redis.Ints(c.Do("SRANDMEMBER", "boa", 2))
        if err != nil {
            colorlog.Error(err.Error())
            return
        }
        fmt.Println("If specified count is less than the number of members of set,")
        fmt.Println("will return a list containing count random members:", randMembers)
        //  3. If specified count is greater than or equal with the number of members of set,
        //  will return a list containing all the members.
        randMembers, err = redis.Ints(c.Do("SRANDMEMBER", "boa", 5))
        if err != nil {
            colorlog.Error(err.Error())
            return
        }
        fmt.Println("If specified count is greater than or equal with the number of members of set,")
        fmt.Println("will return a list containing all the members:", randMembers)
        //  4. If specified count is a negative number and count's absolute value is less than the number of members of set
        //  will return a list containing count random members.
        //  But some elements may be repeated many times.
        randMembers, err = redis.Ints(c.Do("SRANDMEMBER", "boa", -3))
        if err != nil {
            colorlog.Error(err.Error())
            return
        }
        fmt.Println("If specified count is a negative number, " +
            "and count's absolute value is less than the number of members of set")
        fmt.Println("will return a list containing count random members.")
        fmt.Println("But some elements may be repeated many times:", randMembers)
        //  5. If specified count is a negative number and count's absolute value is greater than or equal with
        //  the number of members of set, will return a list containing count random members.
        //  But some elements may be repeated many times.
        randMembers, err = redis.Ints(c.Do("SRANDMEMBER", "boa", -4))
        if err != nil {
            colorlog.Error(err.Error())
            return
        }
        fmt.Println("If specified count is a negative number " +
            "and count's absolute value is greater than or equal with the number of members of set,")
        fmt.Println("will return a list containing count random members.")
        fmt.Println("But some elements may be repeated many times:", randMembers)
        randMembers, err = redis.Ints(c.Do("SRANDMEMBER", "boa", -5))
        if err != nil {
            colorlog.Error(err.Error())
            return
        }
        fmt.Println("But some elements may be repeated many times:", randMembers)
        //  6. If count is 0, will return an empty list.
        nilRandMember, err := redis.Ints(c.Do("SRANDMEMBER", "boa", 0))
        if err != nil {
            colorlog.Error(err.Error())
            return
        }
        if len(nilRandMember) == 0 {
            fmt.Println("If count is 0, will return an empty list.")
        }
    }
    

    Output

    $ go run main.go 
    If you don't specify a number, will return a rand member as default: 4
    If specified count is less than the number of members of set,
    will return a list containing count random members: [3 1]
    If specified count is greater than or equal with the number of members of set,
    will return a list containing all the members: [1 2 3 4]
    If specified count is a negative number, and count's absolute value is less than the number of members of set
    will return a list containing count random members.
    But some elements may be repeated many times: [1 3 3]
    If specified count is a negative number and count's absolute value is greater than or equal with the number of members of set,
    will return a list containing count random members.But some elements may be repeated many times: [4 4 1 3]
    But some elements may be repeated many times: [3 1 3 3 1]
    If count is 0, will return an empty list.
    

    相关文章

      网友评论

          本文标题:SRANDMEMBER

          本文链接:https://www.haomeiwen.com/subject/mjlrvhtx.html