gossdb终于可以全速前进了

seefan · · 5705 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

用了一周的时间才最终找到了一个会在大并发(并发1000,mbp普通本)下可能会发生的空指针问题,现在经过多次测试,终于可以关闭这个bug了。哈哈,高兴啊。 现在的gossdb已经相对成熟了,而且用的人也越来越多了,希望在这里介绍给大家,如果有人用ssdb,不妨尝试一下,会有惊喜的。 下面简单的介绍一下gossdb https://github.com/seefan/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方法维护连接的可用性,并定期回收长期不用的连接。 ```go 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里返回的其实是个字符串,现在可以方便的进行类型的转换了 } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5705 次点击  
加入收藏 微博
5 回复  |  直到 2018-05-09 21:39:11
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传