美文网首页
redisgo 使用详解

redisgo 使用详解

作者: 剑心zzw | 来源:发表于2020-08-06 23:38 被阅读0次

HASH操作

1. hgetall

func main() {
   conn, err := redis.Dial("tcp", "127.0.0.1:6379")
   if err != nil {
       fmt.Println("Connect to redis error", err)
       return
   } else {
       fmt.Println("Connect to redis ok.")
   }

   // 函数退出时关闭连接
   defer conn.Close()

   personMap := make(map[int]Person)
   conn.Send("MULTI")
   for i := 0; i < 50; i++ {
       key := fmt.Sprintf("test_%d", i)
       conn.Send("HGETALL", key)
   }
   values, err := redis.Values(conn.Do("EXEC"))
   for _, value := range values {
       p_map, _ := redis.StringMap(value, nil)
       for key, v := range p_map {
           var person Person
           json.Unmarshal([]byte(v), &person)
           fmt.Println(key, person)
           id, _ := strconv.Atoi(key)
           personMap[id] = person
       }
   }
}

ZSET 操作

1. ZREVRANK

func main() {
    conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("Connect to redis error", err)
        return
    } else {
        fmt.Println("Connect to redis ok.")
    }

    // 函数退出时关闭连接
    defer conn.Close()
    ids := []int{1, 2, 3, 4}
    key := "test"
    conn.Send("MULTI")
    for _, id := range ids {
        conn.Send("ZREVRANK", key, id)
    }
    values, err := redis.Values(conn.Do("EXEC"))
    if err != nil {
        return
    }
    for i, id := range ids {
        value := values[i*2]
        if value == nil {
            continue
        }
        rank := value.(int64) + 1
        fmt.Println(id, rank)
    }
}

相关文章

网友评论

      本文标题:redisgo 使用详解

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