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. 线性代数导论 | Linear Algebra 课程

    搞统计的线性代数和概率论必须精通,最好要能锻炼出直觉,再学机器学习才会事半功倍. 线性代数只推荐Prof. Gilbert Strang的MIT课程,有视频,有教材,有习题,有考试,一套学下来基本就入 ...

  2. android ----- 分享的连接在手机上打开App

    首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]">启动应用程序</a> 这一 ...

  3. Linux 细节(杂)

    1.所有上传至linux服务器的文件都是英文,避免中文出现乱码导致一些非预期错误,难以查找. 2.删除较危险,linux没有回收站,慎用 rm -rf 3.vi/vim学习地址:http://www. ...

  4. 深入了解UML类图

    深入浅出UML类图 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML Distilled: A Brief Guide to the ...

  5. 移动端遇到的问题小结--video

    本篇主要是针对Android系统,所遇到的问题. 1. video的全屏处理: 这里说的全屏是指针对浏览器的全屏,而不是整个手机的全屏.要想全屏效果只需对video标签加   webkit-plays ...

  6. jqGrid选择列控件向右拖拽超出边界处理

    jqGrid选择列控件向右拖拽超出边界处理 $("#tb_DeviceInfo").jqGrid('navButtonAdd', '#jqGridPager', {         ...

  7. httpd-2.4基本使用及lamp基础(01)

    Centos 6 默认安装http版本为2.2,如果想安装2.4版本则需要升级apr centos6默认:apr-1.3.9,apr-util-1.3.9 编译安装步骤: 1.4+版的apr和apr- ...

  8. oracle中delete、truncate、drop的区别 (转载)

    一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表 ...

  9. js 批量提交数据

    // 批量提交数据 let pageSize = 100, total = dataTmp.length, list = dataTmp let totalPage = Math.ceil(total ...

  10. 访问链接出现 ERR_CONTENT_DECODING_FAILED 错误的解决办法

    今天跑一个应用,别人的机器上都是好的,但是本地部署就是不行.访问页面调试工具console总是提示 ERR_CONTENT_DECODING_FAILED 错误. 就是数据表格无法显示,经排查,发现是 ...