【Go开源宝藏】Go 语言操作 Redis

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

1. Redis简介

Redis支持诸如字符串strings哈希hashes列表lists集合sets带范围查询的排序集合sorted sets位图bitmapshyperloglogs带半径查询流的地理空间索引geospatial indexes等数据结构。

方法作用参数
Set添加kv键 string, 值 interface{}, 过期时间 time.Duration
Get获取值键 string
Del删除kv键 …string
HSet给散列添加kv散列的键, 散列中的键 string, 值 interface{}
HGet获取散列kv的值散列的键, 散列中的键 string
FlushAll删光
Ping心跳验证
Exists确认键是否存在键 …string
Expire给key设置过期时间键 string, 过期时间 time.Duration
Incr增加键键 string
Close关闭连接
Watch监听键键出现时执行方法方法 func(*Tx) error, 键 …string
Decr值减一键 string

2. Go语言连接Redis

驱动github.com/go-redis/redis

  • 定义 redisClient
var Redis *redis.Client
  • 连接
func connect() {
	client := redis.NewClient(&redis.Options{
		Addr: "127.0.0.1:6379",
		//Password: "redisPassword",  // 无密码就这样就好了
		DB: 3,
	})
	_, err := client.Ping().Result() // 心跳验证
	if err != nil {
		log.Println(err)
		panic(err)
	}
	Redis = client
	fmt.Println("connect success")
}

3. String 操作

3.1 Set & Get

Set 源码

可以看到这个set的第一个参数就是key第二个参数是value第三个参数就是过期时间。
在这里插入图片描述

Get 源码
在这里插入图片描述

  • set Key、Value以及过期时间

Key 为FanValue为One过期时间为3s

redisClient.Set("Fan","One",3*time.Second)
  • 3s内打印出来
val := redisClient.Get("Fan")
if val == nil {
	fmt.Println("Value get error")
}
  • 3s过后
time.Sleep(3*time.Second)
fmt.Println("3s passing")
val = redisClient.Get("Fan")
fmt.Println("name ", val)
  • 结果

第一个是在3s内是可以打印出来的。

第二个是过了3s的已经是nil了。
在这里插入图片描述

del 操作与 get 操作类似

3.2 Incr & Incrby

3.2.1 Incr 加 1

redisClient.Set("Fan", "1", 3*time.Second)
val := redisClient.Get("Fan")
if val == nil {
	fmt.Println("Value get error")
}
fmt.Println("Incr before:", val)
num := redisClient.Incr("Fan")
fmt.Println("Incr after:", num)
  • 结果

在这里插入图片描述

3.2.2 Incrby 加 val

Incrby(key, integer)名称为key的string增加integer

redisClient.Set("One", "1", 3*time.Second)
val := redisClient.Get("One")
if val == nil {
	fmt.Println("Value get error")
}
fmt.Println("IncrBy before:", val)
num := redisClient.IncrBy("One",2)
fmt.Println("IncrBy after:", num)
  • 结果

在这里插入图片描述

3.3 MSet & MGet

设置多个 key value

MSet(key1, value1, key2, value2, key3, value3)

获取多个key

MGet(key1, key2, key3)

redisClient.MSet("Fan","One", "1","2","key1","value1")
val := redisClient.MGet("Fan","1","key1")
if val  == nil {
	fmt.Println("Value get error")
}
fmt.Println(val)
  • 结果

在这里插入图片描述

3.4 总结

做一些总结就不再过多展示了

操作解释
Set(key, value)给数据库中名称为key的string赋予值valueget(key)返回数据库中名称为key的string的value
GetSet(key, value)给名称为key的string赋予上value的值
Del(Key)删除名称为key的value
MSet(key N, value N)批量设置多个string的值
MGet(key1, key2,…, key N)返回库中多个string的value
SetNX(key, value)添加string名称为key值为value
MSetNX(key N, value N)如果所有名称为key i的string都不存在
SetXX(key, time, value)向库中添加string设定过期时间time
Incr(key)名称为key的string增1操作
Incrby(key, integer)名称为key的string增加integer
Decr(key)名称为key的string减1操作
Decrby(key, integer)名称为key的string减少integer
Append(key, value)名称为key的string的值附加valuesubstr(key, start, end)返回名称为key的string的value的子串

最后提醒一下redis的默认过期时间不过期所以如果没有设置过期时间的话要手动del

val := redisClient.MGet("Fan","1","key1")
if val  == nil {
	fmt.Println("Value get error")
}
fmt.Println(val)
res := redisClient.Del("1")
fmt.Println(res)

在这里插入图片描述
已经没有这个value
在这里插入图片描述

4. List 操作

4.1 RPush

在名称为key的list尾添加一个值为value的元素

val:=redisClient.RPush("F", []string{"One", "Two", "Three","Four"})
if val == nil {
	fmt.Println("Value get error")
}
fmt.Println(val)

在这里插入图片描述

4.2 LLen & LRange

  • LLen返回名称为key的list的长度
  • LRange返回名称为key的list中start至end之间的元素
val:=redisClient.RPush("F", []string{"One", "Two", "Three","Four"})
if val == nil {
	fmt.Println("Value get error")
}
fmt.Println("F List:",val)
val = redisClient.LLen("F")
fmt.Println("len:",val)
res := redisClient.LRange("F",0,2)
fmt.Println("LRange:",res)

在这里插入图片描述

4.3 总结

操作名称
RPush(key, value)在名称为key的list尾添加一个值为value的元素
LPush(key, value)在名称为key的list头添加一个值为value的 元素
LLen(key)返回名称为key的list的长度
LRange(key, start, end)返回名称为key的list中start至end之间的元素
LTrim(key, start, end)截取名称为key的list
LIndex(key, index)返回名称为key的list中index位置的元素
LSet(key, index, value)给名称为key的list中index位置的元素赋值
LRem(key, count, value)删除count个key的list中值为value的元素
LPop(key)返回并删除名称为key的list中的首元素
RPop(key)返回并删除名称为key的list中的尾元素
BLPop(key1, key2,… key N, timeout)lpop命令的block版本
BRPop(key1, key2,… key N, timeout)rpop的block版本
RPopLPush(srckey, dstkey)返回并删除名称为srckey的list的尾元素并将该元素添加到名称为dstkey的list的头部

参考链接

https://blog.csdn.net/weizhong1988/article/details/88048246

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: goredis