go 使用redis

安装redis

安装镜像
docker pull redis:6.0

运行容器
docker run -itd --name myredis -p 6379:6379 redis:6.0
或
docker run -itd --privileged=true --restart=always --name myredis -p 6379:6379 redis:6.0

TestRedisString

新建测试文件redis_test.go

package test
import (
	"testing"
	"github.com/go-redis/redis"
	"time"
)
var redisdb *redis.Client
func redis_init(t *testing.T){
	//连接服务器
	redisdb = redis.NewClient(&redis.Options{
		Addr:     "192.168.16.113:6379", // 填写自己redis服务器地址
		Password: "",               // no password set
		DB:       0,                // use default DB
	})

	//检查是否成功连接到了 redis 服务器
	_, err := redisdb.Ping().Result()
	if err != nil {
		t.Fatal(err)
	}
}

func TestRedisString(t *testing.T){
	redis_init(t)

	//设置key的值,如果已存在则覆盖
	err := redisdb.Set("key", "value", 1*time.Second).Err()
	if err != nil {
		t.Fatal(err)
	}

	//获取过期时间
	tm, err := redisdb.TTL("key").Result()
	if err != nil {
		t.Fatal(err)
	}
	t.Log("kv time",tm)

	//获取key的值
	val, err := redisdb.Get("key").Result()
	t.Log("key value",val,err)

	val2, err := redisdb.Get("missing_key").Result()
	if err == redis.Nil {
		t.Log("missing_key does not exist")
	} else if err != nil {
		t.Log("missing_key", val2, err)
	}

	//只有key不存在的时候才能设置若给定的 key 已经存在,则 SETNX 不做任何动作
	//不存在才设置 过期时间 nx ex
	value, err := redisdb.SetNX("counter", 0, 1*time.Second).Result()
	t.Log("setnx", value, err)

	//IncrRedis Incr 命令将 key 中储存的数字值增1,如果 key 不存在,
	// 那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
	result, err := redisdb.Incr("counter").Result()
	t.Log("Incr", result, err)
}

测试

root@ubuntu:/home/xzw/demo# go test -v -run=TestRedisString redis_test.go 
=== RUN   TestRedisString
    redis_test.go:37: kv time 1s
    redis_test.go:41: key value value <nil>
    redis_test.go:45: missing_key does not exist
    redis_test.go:53: setnx true <nil>
    redis_test.go:58: Incr 1 <nil>
--- PASS: TestRedisString (0.02s)
PASS
ok      command-line-arguments  0.024s

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×