第六单元 go操作redis

第六单元 go操作redis

一、redis介绍
二、go redis使用

一、redis介绍
redis是KV结构的NOsql数据库
redis可以作为缓存使用,减少DB的负载
redis常用数据类型:
字符串:主要用于单一的字符串数据存储
哈希:主要存储对象数据的,比如:点赞,评论,收藏,关注
列表:主要于消息中间件,比如:解耦,肖峰等
集合:主要用于共同好友,粉丝
有序集合:主要用于排行榜

二、go redis使用
1.go 连接redis
redis.Dial("tcp", "redis主机地址:端口号") 

package main

import (
	"fmt"

	"github.com/garyburd/redigo/redis"
)

func main() {
	c, err := redis.Dial("tcp", "localhost:6379") //redis连接
	if err != nil {
		fmt.Println("conn redis failed,", err)
		return
	}

	fmt.Println("redis conn success")

	defer c.Close()
}


2.redis字符串操作
package main

import (
	"fmt"

	"github.com/garyburd/redigo/redis"
)

func main() {
	c, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("conn redis failed,", err)
		return
	}

	defer c.Close()
	_, err = c.Do("Set", "key", 100)
	if err != nil {
		fmt.Println(err)
		return
	}

	r, err := redis.Int(c.Do("Get", "key"))
	if err != nil {
		fmt.Println("get abc failed,", err)
		return
	}

	fmt.Println(r)
}


3. 字符串批量操作

package main

import (
	"fmt"

	"github.com/garyburd/redigo/redis"
)

func main() {
	c, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("conn redis failed,", err)
		return
	}

	defer c.Close()
	_, err = c.Do("MSet", "var1", 100, "var2", 300, "var3", 400)
	if err != nil {
		fmt.Println(err)
		return
	}

	r, err := redis.Ints(c.Do("MGet", "var1", "var2", "var3"))
	if err != nil {
		fmt.Println("get abc failed,", err)
		return
	}

	for _, v := range r {
		fmt.Println(v)
	}
}


4.设置过期时间
用法:c.Do("expire", key, 秒数)
c.Do("expire", "var1", 10)

代码示例

package main

import (
	"fmt"

	"github.com/garyburd/redigo/redis"
)

func main() {
	c, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("conn redis failed,", err)
		return
	}

	defer c.Close()
	_, err = c.Do("expire", "var2", 10)
	if err != nil {
		fmt.Println(err)
		return
	}
}

5.LIST操作
package main

import (
	"fmt"

	"github.com/garyburd/redigo/redis"
)

func main() {
	c, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("conn redis failed,", err)
		return
	}

	defer c.Close()
	// _, err = c.Do("lpush", "book_list", "abc", "ceg", 300)
	// if err != nil {
	// 	fmt.Println(err)
	// 	return
	// }

	r, err := redis.String(c.Do("lpop", "book_list"))
	if err != nil {
		fmt.Println("get abc failed,", err)
		return
	}

	fmt.Println(r)
}


6.哈希操作

package main

import (
	"fmt"

	"github.com/garyburd/redigo/redis"
)

func main() {
	c, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("conn redis failed,", err)
		return
	}

	defer c.Close()
	_, err = c.Do("HSet", "books", "name", "三国")
	if err != nil {
		fmt.Println(err)
		return
	}

	r, err := redis.String(c.Do("HGet", "books", "name"))
	if err != nil {
		fmt.Println("get abc failed,", err)
		return
	}

	fmt.Println(r)
}

  

猜你喜欢

转载自www.cnblogs.com/xfsong/p/13388929.html