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)
}
 
        
评论