一、redis是什么?
   
redis是一个键值对存储系统,value类型包含 string 字符串、list链表、set集合、zset有序集合等
    
    
    二、使用步骤
   
    
    
    1、安装go redis客户端
   
go get github.com/gomodule/redigo/redis
    
    
    2、获取redis链接
   
// 获取redis链接
func ConnRedis() *redis.Conn {
	c, err := redis.Dial("tcp", "127.0.0.1:6379")
	if err != nil {
		log.Fatal(err)
		panic(err)
	}
	return &c
}
    
    
    3、redigo操作字符串
   
保存字符串
// 缓存字符串
func SetString(key, value string) {
	// 获取redis链接
	c := ConnRedis()
	// 函数结束时关闭连接
	defer (*c).Close()
	// 执行redis set 命令为key设置value
	r, err := (*c).Do("set", key, value)
	// 判断是否有错误返回
	if err != nil {
		log.Fatal(err)
		panic(err)
	}
	// 通过反射打印返回值信息
	t := reflect.TypeOf(r)
	println("t.name:", t.Name())
	println("t.kind:", t.Kind().String())
	v := reflect.ValueOf(r)
	println("v.value:", v.String())
}
查询缓存字符串
func GetString(key string) {
	// 获取redis链接
	c := ConnRedis()
	// 函数结束时关闭连接
	defer (*c).Close()
	// 执行redis get命令
	r, err := (*c).Do("get", key)
	if err != nil {
		log.Fatal(err)
		panic(err)
	}
	// 判断结果是否 字节切片 类型
	// 如果是转换成字符串打印结果
	if v, ok := r.([]uint8); ok {
		println(string(v))
	}
}
    
    
    4、redigo操作hash数据
   
缓存数据
func SetHashstring() {
	c := ConnRedis()
	defer (*c).Close()
	r, err := (*c).Do("hmset", "hashKey", "hashkey1", "hashvalue1", "hashkey2", "hashvalue2")
	if err != nil {
		log.Fatal(err)
		panic(err)
	}
	t := reflect.TypeOf(r)
	println("t.name:", t.Name())
	println("t.kind:", t.Kind().String())
	v := reflect.ValueOf(r)
	println("v.value:", v.String())
}
获取hash缓存
func GetHashstring() {
	c := ConnRedis()
	defer (*c).Close()
	r, err := (*c).Do("hgetall", "hashKey")
	if err != nil {
		log.Fatal(err)
		panic(err)
	}
	if v, ok := r.([]interface{}); ok {
		for _, e := range v {
			if s, ok := e.([]uint8); ok {
				println(string(s))
			}
		}
	}
}
    
    
    5、redigo操作list数据
   
缓存数据
type myData struct {
	name string
	age  int
}
func SetValueToList() {
	c := ConnRedis()
	defer (*c).Close()
	d := myData{name: "Saddam", age: 23}
	d1 := myData{name: "Saddam2", age: 20}
	r, err := (*c).Do("RPUSH", "listkey", d, d1)
	if err != nil {
		log.Fatal(err)
		panic(err)
	}
	t := reflect.TypeOf(r)
	println("t.name:", t.Name())
	println("t.kind:", t.Kind().String())
	v := reflect.ValueOf(r)
	println("v.value:", v.Int())
}
遍历list缓存
func GetValueFromList() {
	c := ConnRedis()
	defer (*c).Close()
	r, err := (*c).Do("LRANGE", "listkey", 0, -1)
	if err != nil {
		log.Fatal(err)
		panic(err)
	}
	if v, ok := r.([]interface{}); ok {
		for _, e := range v {
			if s, ok := e.([]uint8); ok {
				println(string(s))
			}
		}
	}
}
 
版权声明:本文为weixin_56349119原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
