Golang]使用Redis

package main

import (
	"context"
	"fmt"

	"github.com/go-redis/redis/v8"
)

var ctx = context.Background()

func main() {
	rdb := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})

	_, err := rdb.Ping(ctx).Result()
	if err != nil {
		fmt.Println("redis ping => ", err)
		return
	}

	// testString(rdb)
	testZSet(rdb)

}

// redis string
func testString(rdb *redis.Client) {
	err := rdb.Set(ctx, "key", "value", 0).Err()
	if err != nil {
		panic(err)
	}

	val, err := rdb.Get(ctx, "key").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("key", val)

	val2, err := rdb.Get(ctx, "key2").Result()
	if err == redis.Nil {
		fmt.Println("key2 does not exist")
	} else if err != nil {
		panic(err)
	} else {
		fmt.Println("key2", val2)
	}
}

func testZSet(rdb *redis.Client) {
	key := "rank"

	// add 10 elem
	var elems []redis.Z
	for i := 10; i >= 0; i-- {
		uid := fmt.Sprintf("uid:%d", i+1)
		elem := &redis.Z{
			Score:  float64(i) + 10,
			Member: uid,
		}

		rdb.ZAdd(ctx, key, elem)
		elems = append(elems, *elem)
	}

	fmt.Printf("before sort => %v\n", elems)

	sortElems, err := rdb.ZRangeWithScores(ctx, key, 0, 10).Result()

	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Printf("sort rank => %v\n", sortElems)
}


评论