zoukankan      html  css  js  c++  java
  • golang总结-Redis整合

    go get github.com/gomodule/redigo/redis
    

    1. 基本用法

    1. 获取连接
    package conn
    
    import (
    	"github.com/gomodule/redigo/redis"
    	"log"
    )
    
    const (
    	redis_passwd = ""
    	redis_host = ""
    	redis_port = ""
    	redis_address = "192.168.2.130:6379"
    )
    
    func getConn() redis.Conn {
    	conn, err := redis.Dial("tcp", redis_address)
    	if err != nil {
    		log.Println("redis connect err", err)
    		panic(err)
    	}
    	return conn
    }
    
    1. 操作redis
    package conn
    
    import (
    	"fmt"
    	"github.com/gomodule/redigo/redis"
    	"log"
    )
    
    var c = getConn()
    
    //string 操作
    
    func Set(key string, value interface{}) bool {
    	defer c.Close()
    	_, err := c.Do("set", key, value)
    	if err != nil {
    		log.Println("set a value error,", err)
    		return false
    	}
    	return true
    }
    
    
    func Get(key string) string {
    	defer c.Close()
    	value, err := redis.String(c.Do("get", key))
    	if err != nil {
    		log.Println("get a value error,", err)
    		return ""
    	}
    
    	return value
    }
    
    func Del(key string) bool {
    	defer c.Close()
    	_, err := c.Do("del", key)
    	if err != nil {
    		log.Println("del a key error, ", err)
    		return false
    	}
    	return true
    }
    
    //Hash操作
    func HashSet(key string, data map[string]interface{}) {
    	defer c.Close()
    	for k, v := range data {
    		_, err := c.Do("hset", key, k, v)
    		if err != nil {
    			log.Println("hset a error, ", err)
    			continue
    		}
    	}
    }
    
    func HashMGet(key string) map[string]interface{} {
    	defer c.Close()
    
    	data := make(map[string]interface{})
    
    	reply, err := redis.ByteSlices(c.Do("hgetall", key))
    	if err != nil {
    		log.Println("hmget error, ", err)
    		return nil
    	}
    	for i, v := range reply {
    		fmt.Println(string(v))
    		if i % 2 == 0 {
    			data[string(v)] = string(reply[i+1])
    		}
    		continue
    	}
    	return data
    
    }
    

    2. Redis连接池

    package pool
    
    import (
    	"github.com/gomodule/redigo/redis"
    	"time"
    )
    
    var (
    	pool *redis.Pool
    )
    
    const (
    	redis_host = "192.168.2.130:6379"
    )
    
    func init() {
    	pool = &redis.Pool{
    		MaxIdle: 10,
    		MaxActive: 0, //0表示没有限制
    		IdleTimeout: 1 * time.Second,
    		Dial: func() (redis.Conn, error) {
    			return redis.Dial("tcp", redis_host)
    		},
    	}
    }
    

    获取连接:conn := pool.Get()

  • 相关阅读:
    HDU 4868 Information Extraction(2014 多校联合第一场 H)
    Transformations 方块转换
    catalan 数——卡特兰数(转)
    算法分析与设计——矩阵连乘问题
    算法设计与分析——多边形游戏(DP)
    蓝桥杯算法训练 最大最小公倍数
    codeforces 518B. Tanya and Postcard
    并查集
    高精度的进制转换
    线段树(转)
  • 原文地址:https://www.cnblogs.com/hu1056043921/p/10356826.html
Copyright © 2011-2022 走看看