Golang 中国

用了一周的时间才最终找到了一个会在大并发(并发1000,mbp普通本)下可能会发生的空指针问题,现在经过多次测试,终于可以关闭这个bug了。哈哈,高兴啊。

现在的gossdb已经相对成熟了,而且用的人也越来越多了,希望在这里介绍给大家,如果有人用ssdb,不妨尝试一下,会有惊喜的。

下面简单的介绍一下 gossdb
功能列表

  1. 继承官方连接方式。已支持超过40个官方命令。
  2. 支持连接池。
  3. 已支持 set 相关方法
  4. 已支持 hashmap 相关方法
  5. 已支持 queue 相关方法
  6. 已支持返回值类型转换,可以方便的把从ssdb中取到的内容转化为指定类型。

连接池已支持如下参数

  1. GetClientTimeout int 获取连接超时时间,单位为秒,默认为 5
  2. MaxPoolSize int 最大连接池个数,默认为 20
  3. MinPoolSize int 最小连接池数,默认为 5
  4. AcquireIncrement int 当连接池中的连接耗尽的时候一次同时获取的连接数。默认值: 5
  5. MaxIdleTime int 最大空闲时间,指定秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0
  6. MaxWaitSize int 最大等待数目,当连接池满后,新建连接将排除等待池中连接释放,本值限制最大等待的数量。默认值: 1000
  7. HealthSecond int 健康检查时间隔,单位为秒。默认值: 300。通过ping方法维护连接的可用性,并定期回收长期不用的连接。
pool, err := gossdb.NewPool(&gossdb.Config{
    Host:             "127.0.0.1",
    Port:             6380,
    MinPoolSize:      5,
    MaxPoolSize:      50,
    AcquireIncrement: 5,
})
if err != nil {
    log.Fatal(err)
    return
}


c, err := pool.NewClient()
if err != nil {
    log.Println(err.Error())
    return
}
defer c.Close()
c.Set("test","hello world.")
re, err := c.Get("test")
if err != nil {
    log.Println(err)
} else {
    log.Println(re, "is get")
}
//设置10 秒过期
c.Set("test1",1225,10)
//取出数据,并指定类型为 int
re, err = c.Get("test1")
if err != nil {
    log.Println(err)
} else {
    log.Println(re.Int(), "is get")//注意这里,re在ssdb里返回的其实是个字符串,现在可以方便的进行类型的转换了

}

seefan 于 2015-05-22 23:02 修改
3 回复
seefan
#1 seefan • 2015-05-22 09:50

欢迎提问题,也可以加入群:2650906 加入密码是 golang

everettjf
#2 everettjf • 2015-05-22 15:18

是我没看到地址吗?
我来帮楼主放上。
https://github.com/seefan/gossdb

seefan
#3 seefan • 2015-05-22 23:01

嗯,我的空间也有地址,不过还是这里放比较好

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。