当前位置:   article > 正文

Golang之redis中间件框架——go-redis的使用_golang go-redis

golang go-redis

写在前面

      本文主要介绍操作redis数据库的框架go-redis,因此下面涉及到redis中的命令本文不做详解,下文通过使用go-redis实现go语言代码操作redis,对应命令的作用及说明请看这篇文章,里面介绍了redis各数据类型常用的一些命令。

go-redis简介

      go-redisgo语言操作redis数据库的框架,从框架中的关于redis操作的方法名可以看出其对应的redis操作。与redigo不同,redigo整体一个Do方法,通过参数决定执行什么redis操作,而go-redis中的方法已经决定了执行何种操作。

go-redis安装

      下载安装:go get github.com/go-redis/redis
      文档地址:https://godoc.org/github.com/go-redis/redis

go-redis使用

连接至redis服务端

//连接redis服务端
func goRedisConnect(){
   
	client = redis.NewClient(&redis.Options{
   
		Addr:"127.0.0.1:6379",
		DB:0,	//redis默认有0-15共16个数据库,这里设置操作索引为0的数据库
	})

	pong,err := client.Ping().Result()

	if err != nil {
   
		log.Fatal(err)
	}

	if pong != "PONG" {
   
		log.Fatal("客户端连接redis服务端失败")
	}else {
   
		fmt.Println("客户端已成功连接至redis服务端")
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

string类型数据操作

//string类型数据操作
//redis命令:set key val
func set(key,val string){
   
	//有效期为0表示不设置有效期,非0表示经过该时间后键值对失效
	result,err := client.Set(key,val,0).Result()

	if err != nil {
   
		log.Fatal(err)
	}
	fmt.Println(result)
}
//redis命令:get key
func get(key string){
   
	val,err := client.Get(key).Result()

	if err != nil {
   
		log.Fatal(err)
	}
	fmt.Println(val)
}
//redis命令:mset key1 val1 key2 val2 key3 val3 ...
func mset(key1,val1,key2,val2,key3,val3 string){
   
	//以下三种方式都可以,习惯于对象操作的我优先选择第三种
	//result,err := client.MSet(key1,val1,key2,val2,key3,val3).Result()
	//result,err := client.MSet([]string{key1,val1,key2,val2,key3,val3}).Result()
	result,err := client.MSet(map[string]interface{
   }{
   key1:val1,key2:val2,key3:val3}).Result()

	if err != nil {
   
		log.Fatal(err)
	}
	fmt.Println(result)
}
//redis命令:mget key1 key2 key3 ...
func mget(key1,key2,key3 string){
   
	vals,err := client.MGet(key1,key2,key3).Result()

	if err != nil {
   
		log.Fatal(err)
	}

	for k,v := range vals {
   
		fmt.Printf("k = %v v = %s\n",k,v)
	}
}
//redis命令:del key1 key2 key3 ...
func del(key1,key2,key3 string){
   
	result,err := client.Del(key1,key2,key3).Result()

	if err != nil {
   
		log.Fatal(err)
	}
	fmt.Println(result)
}
//redis命令:getrange key start end
func getrange(key string,start,end int64){
   
	val,err := client.GetRange(key,start,end).Result()

	if err != nil {
   
		log.Fatal(err)
	}
	fmt.Println(val)
}
//redis命令:strlen key
func strlen(key string){
   
	len,err := client.StrLen(key).Result()

	if err != nil {
   
		log.Fatal(err)
	}
	fmt.Println(len)
}
//redis命令:setex key time val
func setex(key,val string,expire int){
   
	//time.Duration其实也是int64,不过是int64的别名罢了,但这里如果expire使用int64也无法与time.Second运算,
	//因为int64和Duration虽然本质一样,但表面上属于不同类型,go语言中不同类型是无法做运算的
	result,err := client.Set(key,val,time.Duration(expire) * time.Second).Result()

	if err != nil {
   
		log.Fatal(err)
	}
	fmt.Println(result)
}
//redis命令:append key val
func append(key,val string){
   
	//将val插入key对应值的末尾,并返回新串长度
	len,err := client.Append(key,val).Result()

	if err != nil {
   
		log.Fatal(err)
	}
	fmt.Println(len)
}
//redis命令:exists key
func exists(key string){
   
	//返回1表示存在,0表示不存在
	isExists,err := client.Exists(key).Result()

	if err != nil {
   
		log.Fatal(err
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号