一架梯子,一头程序猿,仰望星空!

golang redis基本键值操作


redis基本的key/value操作,指的是针对value值的类型为字符串或者数字类型的读写操作。

golang redis常用函数列表:

  • Set - 设置一个key的值
  • Get - 查询key的值
  • GetSet - 设置一个key的值,并返回这个key的旧值
  • SetNX - 如果key不存在,则设置这个key的值
  • MGet - 批量查询key的值
  • MSet - 批量设置key的值
  • Incr,IncrBy,IncrByFloat - 针对一个key的数值进行递增操作
  • Decr,DecrBy - 针对一个key的数值进行递减操作
  • Del - 删除key操作,可以批量删除
  • Expire - 设置key的过期时间

1.Set

设置一个key的值

// 第三个参数代表key的过期时间,0代表不会过期。
err := client.Set("key", "value", 0).Err()
if err != nil {
	panic(err)
}

2.Get

查询key的值

// Result函数返回两个值,第一个是key的值,第二个是错误信息
val, err := client.Get("key").Result()
// 判断查询是否出错
if err != nil {
	panic(err)
}
fmt.Println("key", val)

3.GetSet

设置一个key的值,并返回这个key的旧值

// Result函数返回两个值,第一个是key的值,第二个是错误信息
oldVal, err := client.GetSet("key", "new value").Result()

if err != nil {
	panic(err)
}
// 打印key的旧值
fmt.Println("key", oldVal)

4.SetNX

如果key不存在,则设置这个key的值

// 第三个参数代表key的过期时间,0代表不会过期。
err := client.SetNX("key", "value", 0).Err()
if err != nil {
	panic(err)
}

5.MGet

批量查询key的值

// MGet函数可以传入任意个key,一次性返回多个值。
// 这里Result返回两个值,第一个值是一个数组,第二个值是错误信息
vals, err := client.MGet("key1", "key2", "key3").Result()
if err != nil {
	panic(err)
}
fmt.Println(vals)

6.MSet

批量设置key的值

err := client.MSet("key1", "value1", "key2", "value2", "key3", "value3").Err()
if err != nil {
  panic(err)
}

7.Incr,IncrBy

针对一个key的数值进行递增操作

// Incr函数每次加一
val, err := client.Incr("key").Result()
if err != nil {
	panic(err)
}
fmt.Println("最新值", val)

// IncrBy函数,可以指定每次递增多少
val, err := client.IncrBy("key", 2).Result()
if err != nil {
	panic(err)
}
fmt.Println("最新值", val)

// IncrByFloat函数,可以指定每次递增多少,跟IncrBy的区别是累加的是浮点数
val, err := client.IncrByFloat("key", 2).Result()
if err != nil {
	panic(err)
}
fmt.Println("最新值", val)

8.Decr,DecrBy

针对一个key的数值进行递减操作

// Decr函数每次减一
val, err := client.Decr("key").Result()
if err != nil {
	panic(err)
}
fmt.Println("最新值", val)

// DecrBy函数,可以指定每次递减多少
val, err := client.DecrBy("key", 2).Result()
if err != nil {
	panic(err)
}
fmt.Println("最新值", val)

9.Del

删除key操作,支持批量删除

// 删除key
client.Del("key")

// 删除多个key, Del函数支持删除多个key
err := client.Del("key1", "key2", "key3").Err()
if err != nil {
	panic(err)
}

10.Expire

设置key的过期时间,单位秒

client.Expire("key", 3)