非零基础快速入门 Go 语言_Go-Redis

这篇博客为非零基础的读者介绍了如何快速上手Go语言中的Go-Redis库,涵盖了String、List、Hash、Set和SortSet等五大数据结构的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非零基础快速入门 Go 语言_Go-Redis

本文针对五大数据结构基本操作 快速上手 go-redis

//连接服务器
redisdb = redis.NewClient(&redis.Options{
    Addr:     "localhost:6379", // use default Addr
    Password: "",               // no password set
    DB:       0,                // use default DB
})

String

//设置并添加过期时间
err := redisdb.Set("key", "value", 1*time.Second).Err()

//获取过期时间
tm, err := redisdb.TTL("key").Result()

//获取结果
val, err := redisdb.Get("key").Result()

//获取结果并判断是否存在
val2, err := redisdb.Get("missing_key").Result()
if err == redis.Nil {
    log.Println("missing_key does not exist")
} else if err != nil {
    log.Println("missing_key", val2, err)
}
//不存在才设置 过期时间 nx ex
value, err := redisdb.SetNX("counter", 0, 1*time.Second).Result()

//自增Incr
result, err := redisdb.Incr("counter").Result()

List

//添加
redisdb.RPush("list_test", "message1").Err()
redisdb.RPush("list_test", "message2").Err()

//设置
log.Println(redisdb.LSet("list_test", 2, "message set").Err())

//remove
ret, err := redisdb.LRem("list_test", 3, "message1").Result()

//list长度
rLen, err := redisdb.LLen("list_test").Result()

//范围遍历
lists, err := redisdb.LRange("list_test", 0, rLen-1).Result()
log.Println("LRange", lists, err)

//pop没有时阻塞
result, err := redisdb.BLPop(1*time.Second, "list_test").Result()

Hash

datas := map[string]interface{}{
    "name": "LI LEI",
    "sex":  1,
    "age":  28,
    "tel":  123445578,
}

//批量添加
if err := redisdb.HMSet("hash_test", datas).Err(); err != nil {
    log.Fatal(err)
}

//获取
rets, err := redisdb.HMGet("hash_test", "name", "sex").Result()

//获取成员完整字段
retAll, err := redisdb.HGetAll("hash_test").Result()

//是否存在
bExist, err := redisdb.HExists("hash_test", "tel").Result()

//设置
bRet, err := redisdb.HSetNX("hash_test", "id", 100).Result()

//删除
redisdb.HDel("hash_test", "age").Result())

Set

//添加
ret, err := redisdb.SAdd("set_test", "11", "22", "33", "44").Result()

//数量
count, err := redisdb.SCard("set_test").Result()

//删除
ret, err = redisdb.SRem("set_test", "11", "22").Result()

//成员
members, err := redisdb.SMembers("set_test").Result()

//是否成员
bret, err := redisdb.SIsMember("set_test", "33").Result()

//差集
diff, err := redisdb.SDiff("set_a", "set_b").Result()

//交集
inter, err := redisdb.SInter("set_a", "set_b").Result()

//并集
union, err := redisdb.SUnion("set_a", "set_b").Result()

SortSet

addArgs := make([]redis.Z, 100)
for i := 1; i < 100; i++ {
    addArgs = append(addArgs, redis.Z{Score: float64(i), Member: fmt.Sprintf("a_%d", i)})
}
//log.Println(addArgs)

Shuffle := func(slice []redis.Z) {
    r := rand.New(rand.NewSource(time.Now().Unix()))
    for len(slice) > 0 {
        n := len(slice)
        randIndex := r.Intn(n)
        slice[n-1], slice[randIndex] = slice[randIndex], slice[n-1]
        slice = slice[:n-1]
    }
}

//随机打乱
Shuffle(addArgs)

//添加
ret, err := redisdb.ZAddNX("sortset_test", addArgs...).Result()
log.Println(ret, err)

//获取指定成员score
score, err := redisdb.ZScore("sortset_test", "a_10").Result()
log.Println(score, err)

//获取制定成员的排序索引
index, err := redisdb.ZRank("sortset_test", "a_50").Result()
log.Println(index, err)

//数量
count, err := redisdb.SCard("sortset_test").Result()

//返回有序集合指定区间内的成员
rets, err := redisdb.ZRange("sortset_test", 10, 20).Result()

//返回有序集合指定区间内的成员分数从高到低
rets, err = redisdb.ZRevRange("sortset_test", 10, 20).Result()

//指定分数区间的成员列表
rets, err = redisdb.ZRangeByScore("sortset_test", redis.ZRangeBy{Min: "(30", Max: "(50", Offset: 1, Count: 10}).Result()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值