使用docker安装redis
搜索redis镜像
$ docker search redis复制代码
拉取最新镜像
$ docker pull redis:latest复制代码
查看本地镜像
$ docker images复制代码
运行redis容器, 默认使用6379端口
$ docker run -itd --name redis-test -p 6379:6379 redis复制代码
查看容器运行消息
$ docker ps复制代码
测试使用redis
$ docker exec -it redis-test /bin/bash $ redis-cli复制代码
设置一个10秒后过期的key
添加安全组并使用AnotherRedisDesktopManager远程访问redis
使用go操作redis
安装go-redis
$ go get -u github.com/go-redis/redis复制代码
建立连接
rdb := redis.NewClient(&redis.Options{ Addr: "server:6379", Password: "", // no password set DB: 0, // use default DB PoolSize: 100, // 连接池大小 }) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() _, err := rdb.Ping(ctx).Result() if err != nil { fmt.Printf("connect err %v \n", err) } else { fmt.Printf("rdb %#v", rdb) // rdb &redis.Client{...} }复制代码
set和get
err = rdb.Set(ctx, "dev_bro_age", "35", 0).Err() if err != nil { panic(nil) } else { val, err := rdb.Get(ctx, "dev_bro_age").Result() if err!= nil { panic(err) } else { fmt.Printf("dev_bro_age: %s \n", val) // dev_bro_age: 35 } }复制代码
zset添加
zsetKey := "age_rank" devbros := []*redis.Z{ &redis.Z{Score: 25, Member: "devbro0"}, &redis.Z{Score: 35, Member: "devbro1"}, &redis.Z{Score: 45, Member: "devbro2"}, } num, err := rdb.ZAdd(ctx, zsetKey, devbros...).Result() if err != nil { panic(err) } else { fmt.Printf("add %d success", num) // add 3 success }复制代码
zset修改
newScore, err := rdb.ZIncrBy(ctx, zsetKey, 10, "devbro0").Result() if err != nil { panic(err) } else { fmt.Printf("devbro0's new age is %v", newScore) // devbro0's new age is 35 }复制代码
zset查询
ret, err := rdb.ZRevRangeWithScores(ctx, zsetKey, 0, 0).Result() // 取age最大的那个if err != nil { fmt.Printf("zrevrange failed, err:%v\n", err) return } else { for _, z := range ret { fmt.Println(z.Member, z.Score) // devbro2 45 } }复制代码
有疑问加站长微信联系(非本文作者)