package main
import (
"common"
"fmt"
"proto"
"strconv"
"time"
"github.com/garyburd/redigo/redis"
"github.com/gogo/protobuf/proto"
)
type RedisHelper struct {
redisClient *redis.Pool
}
var redisHelper *RedisHelper
func RedisHelper_GetMe() *RedisHelper {
if redisHelper == nil {
redisHelper = &RedisHelper{}
}
return redisHelper
}
func (this *RedisHelper) init() {
maxIdle :=
maxActive :=
// 建立连接池
this.redisClient = &redis.Pool{
MaxIdle: maxIdle,
MaxActive: maxActive,
IdleTimeout: * time.Second,
Wait: true,
Dial: func() (redis.Conn, error) {
con, err := redis.Dial("tcp", "127.0.0.1:6379",
redis.DialPassword(""),
redis.DialDatabase(int()),
redis.DialConnectTimeout(*time.Second),
redis.DialReadTimeout(*time.Second),
redis.DialWriteTimeout(*time.Second))
if err != nil {
return nil, err
}
return con, nil
},
}
}
func (this *RedisHelper) GetServerIdByType(accountId int64, st uint32) uint32 {
// 从池里获取连接
rc := this.redisClient.Get()
// 用完后将连接放回连接池
defer rc.Close()
// 错误判断
if rc.Err() != nil {
return
}
//
v, err := redis.String(rc.Do("GET", strconv.FormatInt(accountId, )))
if err != nil {
return
}
p := &testone.CProtoRedisServer{}
err = proto.UnmarshalText(v, p)
fmt.Println(v)
if err != nil {
return
}
if st == common.GateServer {
return p.GetGateId()
}
if st == common.FightServer {
return p.GetFightId()
}
if st == common.GameServer {
return p.GetGameId()
}
return
}
func (this *RedisHelper) SaveOrUpdateServer(accountId int64, p *testone.CProtoRedisServer) bool {
// 从池里获取连接
rc := this.redisClient.Get()
// 用完后将连接放回连接池
defer rc.Close()
// 错误判断
if rc.Err() != nil {
return false
}
valstr := p.String()
actstr := strconv.FormatInt(accountId, )
_, err := rc.Do("SET", actstr, valstr)
if err != nil {
return false
}
return true
}
                            

泊爷带你学go -- redis连接池的操作的更多相关文章

  1. 泊爷带你学go -- 经典的继承与接口 简直吊炸天 !

    package main import ( "fmt" ) type TeamBase struct { m_TeamId uint64 m_Rid uint32 m_RoomRu ...

  2. 泊爷带你学go -- 反射的经典玩法

    package main import ( "fmt" "reflect" ) type order struct { ordId int customerId ...

  3. 泊爷带你学go -- 加锁的问题

    package main import ( "fmt" "sync" ) var l sync.Mutex var a string func f() { a ...

  4. Go语言之从0到1实现一个简单的Redis连接池

    Go语言之从0到1实现一个简单的Redis连接池 前言 最近学习了一些Go语言开发相关内容,但是苦于手头没有可以练手的项目,学的时候理解不清楚,学过容易忘. 结合之前组内分享时学到的Redis相关知识 ...

  5. Redis 连接池的问题

      目录 Redis 连接池的问题    1 1.    前言    1 2.解决方法    1     前言 问题描述:Redis跑了一段时间之后,出现了以下异常. Redis Timeout ex ...

  6. 红眼技术博客 » redis连接池红眼技术博客 » redis连接池

    红眼技术博客 » redis连接池 redis连接池

  7. redis连接池操作

    /** * @类描述 redis 工具 * @功能名 POJO * @author zxf * @date 2014年11月25日 */public final class RedisUtil { p ...

  8. java操作redis redis连接池

    redis作为缓存型数据库,越来越受到大家的欢迎,这里简单介绍一下java如何操作redis. 1.java连接redis java通过需要jedis的jar包获取Jedis连接. jedis-2.8 ...

  9. 三:Redis连接池、JedisPool详解、Redisi分布式

    单机模式: package com.ljq.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; ...

随机推荐

  1. 在阿里云开源镜像站中下载centOS7

    镜像的选择 第一步.下载镜像 阿里云开源镜像站:http://mirrors.aliyun.com/ 选择centos进入 如下图: 如下图:选择centos7 再选择isos(镜像目录) 继续下一步 ...

  2. JAVA-类方法与实例方法

    1.实例方法:一个方法如果不加static关键字,那么这个方法是实例方法.意思是他属于类的某个实例,通过这个实例调用它,对类的其他实例不产生影响. 2.类方法:也称静态方法.在方法前加static关键 ...

  3. 解决JS中取URL地址中的参数中文乱码

    GET请求会将中文编码,如果取出乱码的话,应该进行解码操作, 下面的函数是获取指定参数名的参数值,参数值可是中文.英文. function getQueryString(name) { var reg ...

  4. warning C4828问题的处理

    在QT的一些项目中,有时候会出现如下警告 warning C4828: 文件包含在偏移 0x215 处开始的字符,该字符在当前源字符集中无效(代码页 65001). (编译源文件 XXXXXXcpp) ...

  5. 登录获取token,token参数关联至所有请求的请求体内

    问题描述: 有些系统接口判断用户是否登录,是校验登录接口成功后传的token值,也就是请求系统所有接口时,前端传参必带登录成功后接口返回的token,后台以此检验是否过期或是否有登录.所有接口都依赖登 ...

  6. Kafka 1.0.0集群增加节点

    原有环境 主机名 IP 地址 安装路径 系统 sht-sgmhadoopdn-01 172.16.101.58 /opt/kafka_2.12-1.0.0 /opt/kafka(软连接) CentOS ...

  7. 洛谷P1140 基因匹配 //DP真正意义上的一血

    题目背景 大家都知道,基因可以看作一个碱基对序列.它包含了44种核苷酸,简记作A,C,G,TA,C,G,T.生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物. 在一个人类基因工作组的任务 ...

  8. C++标准模板库(STL)之Set

    1.Set的用法 Set:集合,一个内部自动有序而且不重复元素的容器.使用set,要加头文件#include<set>和using namespace std; 1.1.Set的定义 se ...

  9. QVector常见使用方法

    仅在此简单介绍QVector的一些常见函数,有兴趣的可以查下QT,在QT中介绍的很详细 构造函数,QVector的构造函数很多样化,常见的有 QVector() 无参的构造函数 QVector(int ...

  10. 免费赠送原创的opengl电子书教程和案例源码

    免费赠送原创的opengl电子书和案例源码,有兴趣qq群 52391108 下面是一部分教程截图