Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go操作Redis实现读写

详解如何通过Go来操作Redis实现简单的读写操作

作者:Shawn590

作为最常用的分布式缓存中间件——Redis,了解运作原理和如何使用是十分有必要的,今天来学习如何通过Go来操作Redis实现基本的读写操作,需要的朋友可以参考下

为什么要使用Redis?

对于这个问题,最近看到有种比较清晰的说法,想要记录下来:

导入对应的包

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

创建一个操作Redis的一个客户端

client := redis.NewClient(&redis.Options{
    Addr:"127.0.0.1:6379",      //地址,这里使用本地服务器的默认端口
    Password:"123456",          //访问Redis的密码
    DB:0,                       //使用默认的0号DB
})
ctx :=conetxt.TODO()            //创建一个默认的context

写入和读写string类型的值

func string(ctx context.Context, client *redis.Client) {
	key := "name"
	value := "大脸猫"
	err := client.Set(ctx, key, value, 1*time.Second).Err() //1秒后失效。0表示永不失效
  //错误处理
	if err != nil {  
		if err == redis.Nil {
			fmt.Println("key不存在")
		} else {
			fmt.Println(err)
			os.Exit(1)
		}
	} 
  //通过Expire设置3秒后失效
	client.Expire(ctx, key, 3*time.Second) 
	v2, err := client.Get(ctx, key).Result()
  //错误处理
	if err != nil { 
		if err == redis.Nil {
			fmt.Println("key不存在")
		} else {
			fmt.Println(err)
			os.Exit(1)
		}
	} 
	fmt.Println(v2)
  //删除键
	client.Del(ctx, key)
}

string函数展示了如何与Redis数据库进行交互,包括设置键值对、设置过期时间、获取值以及删除键的操作。下面是详细的解释:

写入和读取list类型的值

func list(ctx context.Context, client *redis.Client) {
	key := "ids"
	values := []interface{}{1, "中", 3, 4}
	err := client.RPush(ctx, key, values...).Err() //向List右侧插入。如果List不存在会先创建
	if err != nil { 
		if err == redis.Nil {
			fmt.Println("key不存在")
		} else {
			fmt.Println(err)
			os.Exit(1)
		}
	} 
	v2, err := client.LRange(ctx, key, 0, -1).Result() //截取。双闭区间
	if err != nil { 
		if err == redis.Nil {
			fmt.Println("key不存在")
		} else {
			fmt.Println(err)
			os.Exit(1)
		}
	} 
	fmt.Println(v2)
	client.Del(ctx, key)
} 

list函数展示了Redis的列表(List)数据结构的操作,包括向列表右侧插入值、获取列表元素以及删除列表。下面是详细的解释:

写入和读取hashtable类型的

func hashtable(ctx context.Context, client *redis.Client) {
	//key  field1 value1  field2 value2  ...
	err := client.HSet(ctx, "学生1", "Name", "张三", "Age", 18, "Height", 173.5).Err()
	//错误处理
  if err != nil { 
		if err == redis.Nil {
			fmt.Println("key不存在")
		} else {
			fmt.Println(err)
			os.Exit(1)
		}
	} 
	err = client.HSet(ctx, "学生2", "Name", "李四", "Age", 20, "Height", 180.0).Err()
  //错误处理
  if err != nil { 
		if err == redis.Nil {
			fmt.Println("key不存在")
		} else {
			fmt.Println(err)
			os.Exit(1)
		}
	} 
	age, err := client.HGet(ctx, "学生2", "Age").Result()
  //错误处理
  if err != nil { 
		if err == redis.Nil {
			fmt.Println("key不存在")
		} else {
			fmt.Println(err)
			os.Exit(1)
		}
	} 
	fmt.Println(age)
	for field, value := range client.HGetAll(ctx, "学生1").Val() {
		fmt.Println(field, value)
	}
	client.Del(ctx, "学生1")
	client.Del(ctx, "学生2")
}

hashtable函数具体展示了Redis的哈希表(Hash)数据结构的操作,包括设置字段和值、获取字段的值、获取所有字段-值对以及删除哈希表。下面是详细的解释:

for field, value := range client.HGetAll(ctx, "学生1").Val() {
   fmt.Println(field, value)
}

以上就是详解如何通过Go来操作Redis实现简单的读写操作的详细内容,更多关于Go操作Redis实现读写的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文