golang的redis操作

Tony哥
2022-07-12 / 0 评论 / 200 阅读 / 正在检测是否收录...

安装go-redis v8版本

go get github.com/go-redis/redis/v8

初始化链接

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

设置过期时间

设置了时间,并且还没有过期的使用TTL命令可以看见还有多长时间过期。过期的会显示-2ns,没有设置过期时间的会显示-1ns

通用

  • 判断key是存在

    fmt.Println(cnt.Exists(ctx, "mykey3").Result())//返回key的数量。不存在就是0
  • 模糊遍历Scan

    iter := cnt.Scan(ctx, 0, "prefix:*", 0).Iterator()
    for iter.Next(ctx) {
     fmt.Println("keys", iter.Val())
    }
    if err := iter.Err(); err != nil {
     panic(err)
    }
  • 模糊查询key

    fmt.Println(cnt.Keys(ctx,"t*").Result())
  • Hash 批量写(多个field写入同一个key下)

    count,err:=cnt.HMSet(ctx,"mykey1",map[string]string{"name3":"达芬奇","name4":"kobe"}).Result()
    count,err=cnt.HMSet(ctx,"mykey1",[]string{"name5","达芬奇2","name6","kobe2"}).Result()
    count,err=cnt.HMSet(ctx,"mykey1","name7","达芬奇3","name8","kobe4").Result()
  • 批量读(读取同一个key的下的多个field)

    r,err:=cnt.HMGet(ctx,"mykey1","name","name2","name3").Result() //读取同一个key的下的多个field
     if err !=nil {
         fmt.Println(err)
     }
     fmt.Println(r) //r是一个[]interface类型的
  • 删除

    cnt.HDel(ctx,"mykey1","name").Result()//会返回删除的字段的数量
  • 判断是否存在key或者对应key的field

    fmt.Println(cnt.HExists(ctx,"mykey1","name2").Result())
  • 获取一个key下的所有field

    fmt.Println(cnt.HGetAll(ctx,"mykey1").Result()) //返回map[string]string
  • 给某个field增加值

    //要被增加的field的value必须是对应的数值类型才可以
    fmt.Println(cnt.HIncrBy(ctx,"mykey1","name1",2).Result()) //第四个参数是指要加多少,返回被修改后的field的value的值
    fmt.Println(cnt.HIncrByFloat(ctx,"mykey1","name9",1.0000).Result())
  • 获取指定key的所有field

    fmt.Println(cnt.HKeys(ctx,"mykey1").Result())//返回string数组
  • 模糊查询指定key的field

    //HScan(ctx,"mykey1",游标-从哪开始,要匹配的字符,返回几个数据)
    fmt.Println(cnt.HScan(ctx,"mykey1",0,"s*",10).Result())//返回规定数量的匹配的field的数组和游标值
  • 没有就创建,有了就不动

    fmt.Println(cnt.HSetNX(ctx,"mykey2","age2","2").Result())//返回是否有新的创建成功
  • 获取指定key的所有field的value

    fmt.Println(cnt.HVals(ctx, "mykey1").Result())//返回value的数组
0

评论 (0)

取消