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. MySQL 列出存储过程

    MySQL  列出存储过程 接下来介绍如何列出MySQL数据库中的所有存储过程,并显示存储过程源代码的一些非常有用的语句. MySQL为提供了一些有用的语句,可以更有效地管理存储过程.这些语句包括列出 ...

  2. Eclipse中设置作者日期等Java注释模板

    Eclipse作为JavaIDE(Integrated Development Environment,集成开发环境),可以通过设置自动添加Javadoc注释信息,如@author 作者名.@vers ...

  3. ionic2使用cordova打包的环境搭建

    1.安装node.js(不用说了) 2.安装JDK(java的开发基础类库) 3.安装SDK(安卓开发集成包) 4.gradle( JAVA界的Weboack ,支撑app的编译,打包的流程) 5.安 ...

  4. React文档(二十二)context

    React中,通过React组件可以很容易地追踪数据流.当你关注一个组件,你可以发现哪一个props被传递了,这样使得你的应用很容被推断. 在一些情况下,你想要传递数据通过组件树而不需要去手动在每一层 ...

  5. EXCE 表格导入导出遇到问题(easypoi)

    使用Easypoi进行excel表格的导入导出遇到的问题: 1.导出时候打开文件一直遇乱码,主要的原因就是我在实体类没有进行给每个字段进行注解,就会导致每个字段找不到对应的汉字表头,所以一定不要忘了导 ...

  6. Linux内存管理(一)

    Linux内存管理之一:基本概念篇 物理地址.线性地址(虚拟地址)和逻辑地址:阐述段式管理和页式管理基本概念:Linux操作系统内存管理和虚拟内存概念:为内核开发做一个基础铺垫. 内存是linux内核 ...

  7. 安装pyspider遇到的坑

    pyspider是国人写的一款开源爬虫框架,个人觉得这个框架用起来很方便,至于如何方便可以继续看下去. 作者博客:http://blog.binux.me/ 安装pyspider安装pyspider: ...

  8. vue-router路由讲解

    此文章用来系统讲解vue-router路由 安装 只介绍npm安装 npm install vue-router --save 项目所需依赖 在main.js或者app.vue中导入 import V ...

  9. Saku实力挖坑记!!(十八)

    Saiku实力挖坑记!!!!!!! 我可真真真的是个挖坑小能手呀!不知道你们有没有遇到过这个异常: Enclosure class mondrian.olap.MondrianDef not foun ...

  10. 终端的rz命令,覆盖原文件。

    不覆盖:rz 覆盖 同名文件:rz -y