Go语言中文网 为您找到相关结果 342

go语言使用redis —— redigo

redis的client有好多好多,go语言的client在redis官方有两个推荐,radix和redigo。选择哪一个好呢?确实很纠结,后来掷硬币决定选择redigo了。 redis、go、redigo的安装就不需要提了,不能强行增加篇幅。 redigo使用起来很人性化,api设计的符合直觉,我对redis了解较少,使用过程中基本没有遇到障碍。 redigo的使用入门可以去查godoc:http://godoc.org/github.com/garyburd/redigo/redis 接下来就是毫无技术含量的贴代码了: 连接redis我一般是这样写的: 1 c, err := redis.Dial("tcp", "127.0.0.1:6379") 2 if err != nil { 3 ...阅读全文

博文 2015-07-23 16:37 wolfred7464

GoLang redis 连接池

最近被日志是折腾得死去活来,写文件无疑效率是最高的,但是分布式又成问题,虽然稍微折腾一下配合NFS,还是可以搞一搞的,但是始终语言设计没有那么方便。 最终决定用redis,换了redis以为就好了,因为内存运行嘛,谁知道tcp连接开销大得一塌糊涂,服务器负载一下子高了许多,使用netstat -an 查看发现一堆的 TIME_WAIT,连ssh到服务器都巨慢无比,所谓天下武功唯快不破,这么慢80岁老太太跳一支广场舞都能给灭了吧。 既然 tcp连接开销这么大,当然首要任务就是解决连接问题,明显一个请求一次连接是很不靠谱的,还不如直接往硬盘写日志呢,当然写日志第一段也说了,不支持分布式,业务分配没那么好。 那么,能不能先定只用一个连接呢,这显然是不行的,一个连接多个php-fpm互掐也会造成瓶颈...阅读全文

博文 2015-05-07 13:46 echo不惑

GO语言的开源库

Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.org gowalker gosearch Sourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead projects If you find a project in this list that is ...阅读全文

博文 2015-02-16 09:47 chu888chu888

A list of Go projects

Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.orggo-searchgowalkerSourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead projects If you find a project in this list that is de...阅读全文

博文 2014-07-29 22:43 julong2011

基于Go实现的分布式MQ

基于Go实现的分布式MQ 2015-09-14 赵超 讲师:赵超(Beta版厨子3.0) 个人简介: 6年的Java开发经验、先后就职于淘宝Java中间件团队、腾讯无线媒体产品部。现就职于陌陌担任基础业务组主管。专注于分布式消息总线、LBS技术领域、golang在大规模生产换环境应用的探索。 今天交流的内容也是我上半年主要做的一个开源的MQ的项目,希望对大家有帮助 一、RPC与MQ之间对比 我们通常接触到的RPC同步调用的种类非常多比如fb 的thrift/阿里的dobbo 腾讯的taf、淘宝的hsf这类同步调用框架 从图里面可以看到作为一个业务完成后端要发生非常多的RPC通信 随着业务的复杂度提高,各服务间的依赖度也逐步加大,那么服务间的响应时间也就各有参差了 在一个请求链路上如果存在一个...阅读全文

博文 2015-09-15 00:57 zdy0_2004

基于go语言的消息推送系统架构分析

本系统是猎豹移动基于go语言开发的一套消息推送系统,源码地址:https://github.com/Terry-Mao/goim 一、架构图 二、功能简介 1.comet 长连接服务器,支持长轮训、tcp、websocket连接,有超时机制 2.logic 逻辑处理服务器,消息推送入口,通过userId在router服务器中查找对应的comet服务器,将serverId和消息一起保存到kafka队列,logic是无状态服务器,可以随意增删,因为comet需要连接logic,所以在comet服务器中需要连接logic的通过LVS的虚IP,LVS加了real server后不会断开,所以需要在comet服务触发SIGHUP,重新load配置文件。 3.router 路由服务器,保存userId和...阅读全文

博文 2015-10-10 17:26 qinyongbo

go第三方库的安装例子

go第三方库的安装 设置环境变量GOPATH=c:\go\code 在c:\go\code下创建源代码目录src 进入c:\go\code\src 装第三方库命令 git clone git://github.com/alphazero/Go-Redis.git redis 可以在任意目录执行安装redis go install redis 安装后再c:\go\code目录下生成一个pkg目录并且在目录下生成redis.a 可以在在c:\go\code\src下生成目录文件xn 结构如下 文件内容如下 xn.go package xn import ( "fmt" ) func Helloworld(){ fmt.Println("xn包内的Helloeorld函数") } func xx(...阅读全文

博文 2014-11-25 21:18 anlun

Go语言(golang)开源项目大全

内容目录 Astronomy 构建工具 缓存 云计算 命令行选项解析器 命令行工具 压缩 配置文件解析器 控制台用户界面 加密 数据处理 数据结构 数据库和存储 开发工具 分布式/网格计算 文档 编辑器 Encodings and Character Sets Games GIS Go Implementations Graphics and Audio GUIs and Widget Toolkits Hardware Language and Linguistics 日志 机器学习 Mathematics Misc Music 网络 Operating System Interfaces Other Random Toys, Experiments and Example Code P2...阅读全文

博文 2015-07-10 09:55 davygeek

Redis 集群解决方案Codis

Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务. Codis 实现了业务透明的动态/安全扩缩容,高度可运维,proxy-based 的方案,支持无状态的多 proxy 水平扩展。已经在贵荚内部取代了大多数业务的 twemproxy。 架构图: ![架构图](https://raw.githubusercontent....阅读全文

Go语言开发分布式聊天室

声明 我是一个刚学go语言的菜鸟,还没有资格谈论什么技术分享,只是为了展示fooking的实际应用,同时把我用go写的聊天室代码贴出来供大家消遣,如果有入不了各位法眼的代码,望轻喷。该聊天室基于fooking,而业务代码是采用Go + Fastcgi。 完整的源代码在 https://github.com/scgywx/fooking/blob/master/example/chat/gateway.go,全代码200多行,去掉router部分代码,实际逻辑代码只有170来行,逻辑简单,功能强大。 详解 聊天服务器的入口main函数里有3个IP和端口配置,分别是Chat服务器、Router服务器和Redis服务器。 func main() { listener, _ := net.Liste...阅读全文

博文 2015-08-28 14:43 IM鑫爷

go语言七——连接redis

使用Redigo这个库 package main import ( "fmt" "redis" "time" "strconv" ) var ( server string = "192.168.1.105:6379" password string = "passwd" ) var pool *redis.Pool func test(i int) { c := pool.Get() defer c.Close() t:=strconv.Itoa(i) c.Do("SETEX","foo"+t,20,i) reply, err := redis.Int(c.Do("GET","foo"+t)) if err == nil { fmt.Print(reply) } else { fmt.Pr...阅读全文

博文 2013-09-04 15:32 ciaos

go语言公共库goredis

golang redis client, bufferd connection, connection pool, support all redis commands, 欢迎大家批评指正,更欢迎大家加入进来。 #### Create a new conn? c, e := Dial("127.0.0.1:6379", pwd, CTimeout, RTimeout, WTimeout, alive, *pool) if e != nil { println(e.Error()) return } 如果redis不需要AUTH认证, password ="" #### A Redis Command. c.GET("mykey") c.SA...阅读全文

开源项目 2014-11-04 19:15:41 翟羽行

Redigo--用池管理redis连接

在golang的项目中,若要频繁的用redis(或者其他类似的NoSQL)来存取数据,最好用redigo自带的池来管理连接。 不然的话,每当要操作redis时,建立连接,用完后再关闭,会导致大量的连接处于TIME_WAIT状态(redis连接本质上就是tcp)。 注:TIME_WAIT,也叫TCP半连接状态,会继续占用本地端口。 以下为redis连接池的golang实现: import ( "github.com/garyburd/redigo/redis" "github.com/astaxie/beego" "time" ) var ( // 定义常量 RedisClient *redis.Pool REDIS_HOST string REDIS_DB int ) func init()...阅读全文

博文 2014-10-26 10:17 stevefang

Go 语言项目

出处:https://code.google.com/p/go-wiki/wiki/Projects Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.orggowalkergosearchSourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead proj...阅读全文

博文 2013-11-11 12:00 leonzhouwei

Redigo--Go连接Redis

本文主要介绍go Web开发中操作redis。 Redigo是go连接Redis的扩展包,用此包时需先执行: go get github.com/garyburd/redigo/redis 安装完后,在文件中导入redigo即可。 连接redis的样例如下: [html] view plaincopy import ( "fmt" // 导入redigo扩展包 "github.com/garyburd/redigo/redis" ) // 从配置文件获取redis配置并连接 host := beego.AppConfig.String("redis_host") db, _ := beego.AppConfig.Int("redis_db") // tcp连接redis rs, err :=...阅读全文

博文 2015-07-17 14:55 wkyb608

golang操作redis连接池

func newPool(server, password string) *redis.Pool { return &redis.Pool{ MaxIdle: 3, IdleTimeout: 240 * time.Second, Dial: func () (redis.Conn, error) { c, err := redis.Dial("tcp", server) if err != nil { return nil, err } if _, err := c.Do("AUTH", password); err != nil { c.Close() return nil, err } return c, err }, TestOnBorrow: func(c redis.Conn, ...阅读全文

博文 2014-07-16 11:56 程序员Jack

在go中使用json作为主要的配置格式

最近在用go重构,在先前的代码中,我们使用的ini文件进行配置,但是因为很多历史遗留问题,导致配置混乱,维护困难,自然也需要考虑重构了。 通用配置格式 通用的配置格式有很多,常用的就有ini,json,yaml,xml等,当然为了通用我们不考虑自定义的配置格式。那如何选择呢? 首先,xml我们就不用考虑了,到现在为止我都没觉得用这玩意配置起来有多方便,反而很臃肿,可能java系的童鞋会比较青睐。 再来考虑ini,ini文件对于简单应用的配置可以说是非常方便的,如果配置没有太多的层次结构,使用ini就能完全满足我们的需要,即使有,我们也能够通过加入特定前缀来解决。譬如,我们可能有如下redis配置: [ModuleA] persistent_redis_addr = 127.0.0.1:637...阅读全文

博文 2014-04-13 11:54 siddontang

用GO语言实现一个简单的搜索引擎

用GO语言实现一个简单的搜索引擎 项目地址是:https://github.com/wyh267/FalconEngine 对搜索引擎感兴趣的可以去看看这本书,比较浅并且也比较完整的介绍了一个搜索引擎的全部机能。 我的这个搜索引擎原始数据是MySql数据库的,大家可以根据需要进行二次开发,用来支持其他数据库或者本地文件,Detail文件是存储在Redis数据库中,同样这部分也可以根据自己的需要二次开发,使用本地文件或者其他数据库,倒排索引和正排索引本地存储的时候使用的json格式,比较耗磁盘,第一版暂时这样了吧,后续再做优化。 使用方法 依赖以下几个库 github.com/outmana/log4jzl log文件 github.com/ewangplay/config 配置文件解析 gi...阅读全文

博文 2015-07-27 18:54 ygrx

招聘Golang开发工程师一枚

1. 至少一年golang的开发经验。 2. 至少两年互联网产品开发经验。 3. 熟练使用Linux/Mac开发环境,熟悉基于Git的团队合作开发模式。 4. 熟悉postgresql、mongodb和redis。 5. 统招本科以上学历。 加分项: 1. 有自己的开源项目或者作为核心成员参与过其他开源项目的开发 2. 熟悉php,python,nodejs等其他开发语言 3. 对产品设计和交互有一定的研究 4. fullstack潜质 欢迎各位将简历投递到hr@monokeros.c...阅读全文

golang -- mysql & redis

golang mysql 驱动安装 go get github.com/go-sql-driver/mysql go install github.com/go-sql-driver/mysql 以下是select的例子 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { initMySQL("root:112358@tcp(192.168.6.234:3306)/test?charset=utf8") defer db.Close() // Prepare statement for select data stmtOut, err := db.Prepa...阅读全文

博文 2014-01-12 19:36 flyking

回复:《golang VS php 性能对比》

连接:http://www.oschina.net/question/29420_138135 看到有一篇博文介绍Golang与PHP性能对比,在此回复一下。这测试结果明显是误导人的。 1,PHP未开启OpCache,那么每次都要读磁盘文件。并且编译PHP为OpCode。性能自然会差,开启OpCache试试吧。 2、php+redis一定要扩展版本的redis客户端,原因是redis扩展是长连接的,可以避免短连接带来的网络开销。 3、php-fpm或者Apache,就算只开20个进程。redis这种纯内存操作绝对可以2ms内返回结果(2ms已经算是很差的情况了,一般0.5ms就能得到响应)。那么每个进程至少可以提供500QPS的处理能力(2ms1次,PHP进程是串行执行的,1秒可以500次)...阅读全文

博文 2014-10-22 23:36 matyhtf

使用Redis做任务队列(Golang)

在上篇用纯go在本机模拟了下分布式队列的东西。这里补上Redis队列部份。 用Redis做队列有下面三个问题需解决: 1. 队列构建 使用Redis的RPUSH/LPOP来解决 2. 参数传递/解析 客户端将JOSN参数存入Redis,Server端取出后解析还原。 3. 连接池 redigo支持Redis连接池 下面代码就是具体解决实现: //Redis做后台任务队列 //author: Xiong Chuan Liang //date: 2015-3-25 package main import ( "bytes" "encoding/json" "errors" "fmt" "time" "github.com/garyburd/redigo/redis" ) func main() ...阅读全文

博文 2015-03-25 15:18 xcltapestry

重磅福利:Go语言中文网 携手阿里云赠送超值免费套餐

阿里云30+产品、6个月使用权,有码就能开通。包含7款热门产品:云服务器ECS、数据库(redis、Mongodb)、存储OSS等。 参与本次活动需要满足如下条件: 1. 新用户:指从未体验过阿里云云产品的用户,包括未购买过包年包月产品、未开通过按量付费产品的用户; 2. 通过阿里云个人实名认证; 3. 个人芝麻信用分 ≥ 620; 如果你满足条件,通过本站 [兑换邀请码](/gift)(邀请码有效期至2017年9月1日),就可以免费使用半年!!...阅读全文

Codis 的设计与实现 Part 1

最近开源了 Codis,在 Github 上的反响挺不错的,3天已经收集到了 1000 多 stars, 让我比较吃惊。 也从侧面说明了确实分布式缓存是大家都会遇到的问题。于是我打算在本篇和接下来的几篇 Blog 详细说明一下 Codis 的设计和一些背后的考虑,以及对于分布式存储(尤其是缓存)系统的一些思考。 Why proxy? Codis 的架构采用了 Proxy-based 的设计,没有走官方 Cluster 的路,官方的 Cluster 实现是 P2P 的模型,依靠 Gossip 协议进行消息同步和将数据分若干个 Slot 作为管理的单位,客户端需要更改。这个模型的好处是: 真正的无中心节点 对于客户端来说请求的性能不会损失太多 但是缺点同样明显: 状态很难明确,你很难清楚的知道集...阅读全文

博文 Nov 11th, 2014 4:10 pm c4pt0r

在树莓派上构建Golang及Redis环境

今天翻了翻旧资料,发现点东西。之前公司服务器还没就位(初创公司没办法)时. 正讨论服务器的事,有同事拿出了他的Raspberry Pi。 我一想,也行.Go本来就支持多平台。Redis更是C语言写的,应当不成问题。 最后,虽然中间走了点弯路,不过还好,能跑起来. Golang: 1. 从官网去下载 1.4.2的源码包。 不要直接从github下载或用1.5版本的源码.这两个在Pi上都会有问题. 2. 执行下面命令即可. pi@raspberrypi ~/go1.4.2/src $ sudo ./all.bash # Building C bootstrap tool. cmd/dist 然后会出现 "# Building packages and commands for linux/arm...阅读全文

博文 2015-06-21 21:03 xcltapestry

go语言的new和make

golang的new和make主要区别如下: 1、make只能用来分配及初始化类型为slice,map,chan的数据;new可以分配任意类型的数据 2、new分配返回的是指针,即类型*T;make返回引用,即T; 3、new分配的空间被清零,make分配后,会进行初始化。effective go举了一个例子,见:http://golang.org/doc/effective_go.html#allocation_make 对于struct的分配和初始化,除了可以使用new外,还可以这样做: T {},例如 func TestAlloc(t *testing.T) { type T struct { n string i int f float64 fd *os.File b []byte ...阅读全文

博文 2013 年 08 月 08 日 铁哥

基于 Go 的 Web 开发工具Algernon

纯 Go 语言开发的 Web 开发工具,内置 Lua,Markdown,模板和 HTTP / 2,Redis,Mysql,Postgresql 支持。支持 Lua 写网页。当 Redis 不存在时,用 Go 语言的 boltdb 模板引擎。 运行Algernon(从较早版本的屏幕截图): ![image](https://static.oschina.net/uploads/space/2017/0501/081907_wbI4_2903254.png) Markdown 很容易设置 Sass 或 GCSS 样式。 ![image](https://static.oschina.net/uploads/space/2017/0501/082426_BkhP_2903254.png...阅读全文

开源项目 2017-05-01 09:00:22 xyproto

一个go语言实现的短链接服务

一个go语言实现的短链接服务 首先,博客转移到 wusay.org 了,去年没交费,博客都没了。。。刚刚恢复过来,以前的文章没了,慢慢补吧。 什么是短链接服务 大家都用过新浪微博的短连接吧,就是t.cn后面一串不知道是什么的数,然后跳转到一个新页面去,具体什么是短连接请大家自行脑补,在这里,目前有很多提供短连接的地方,比如狼厂的短连接服务,还有提供很多短链接的在线服务,比如这个,能生成很多地方的短连接。 巴特,作为一个程序员,我们不止需要一个端链接服务,我需要自己实现一个短连接服务,因为一般的公共的短连接都有token要求,每天生成的链接也有限制,当你需要生成大量短连接的时候就比较麻烦了。 所以,我实现了一个短连接服务。 短连接的原理 很多人一定想的是短连接是通过一定的算法将长链接变成短连接...阅读全文

博文 2015-06-16 18:46 ygrx

beego介绍

beego是一个类似tornado的Go应用框架,采用了RESTFul的方式来实现应用框架,是一个超轻量级的框架,主要有如下的特点: 支持MVC的方式,用户只需要关注逻辑,实现对应method的方法即可 支持websocket,通过自定义Handler实现集成sockjs等方式实现 支持自定义路由,支持各种方式的路由,正则、语意均支持,类似sinatra session集成,支持memory、file、redis、mysql等存储 表单处理自动化解析,用户可以很方便的获取数据 日志分级系统,用户可以很方便的调试和应用日志记录 自定义配置文件,支持ini格式的文本配置,可以方便的在系统中调参数 采用了Go内置的模板,集成实现了很多Web开发中常用的函数 执行过程如下所示: beego简单例子 ...阅读全文

博文 2013-04-20 11:24 astaxie

golang 定时器

代码文件timer.go: package main import ( "bytes" "fmt" "github.com/unknwon/goconfig" "os/exec" "time" ) var config *goconfig.ConfigFile func init() { path := "./config.ini" conf, err := goconfig.LoadConfigFile(path) if err != nil { fmt.Println(err) } config = conf } func main() { t := time.NewTicker(1 * time.Second) for { select { case <-t.C: run() } } ...阅读全文

博文 2014-08-13 09:16 chen yuwen

Rancher使用入门

上个月末,Rancher Labs在其官方博客上宣布了 Rancher 1.0正式版本发布。 这是继Apache Mesos、 Google Kubernetes以及Docker 原生 Swarm 之后,又一个可用于Production环境中的容器管理和服务编排工具,而Rancher恰似这个领域的最后一张拼图(请原谅我的孤陋寡闻,如 果有其他 厂商在做这方面产品,请在评论中留言告诉我)。从Rancher Labs的官方about中我们可以看到:Rancher Labs致力于为DevOps team打造一个最好的容器管理平台,让容器的部署和管理变得更加Easy。 本文将带大家与Rancher来个亲密接触,直观的体会一下Rancher的入门级使用方法。 注意:由于Rancher还在active ...阅读全文

博文 四月 14, 2016 bigwhite

Golang redigo hmset hset 问题

最近公司项目,换到了golang 下面来开发,遇到了redis存储链表的问题,困扰了我好几天,后面静下心来,好好读了一下源码,发现官方的例子,最终还是羊毛出在羊身上 c, err := dial() if err != nil { panic(err) } defer c.Close() var p1, p2 struct { Title string `redis:"title"` Author string `redis:"author"` Body string `redis:"body"` } p1.Title = "Example" p1.Author = "Gary" p1.Body = "Hello" if _, err := c.Do("HMSET", redis.Args{...阅读全文

博文 2015-05-12 09:45 jackluo

beego 安装入门

安装入门 beego虽然是一个简单的框架,但是其中用到了很多第三方的包,所以在你安装beego的过程中Go会自动安装其他关联的包。 当然第一步你需要安装Go,如何安装Go请参考我的书第一章 安装beego go get github.com/astaxie/beego 安装bee工具,这个工具可以用来快速的建立beego的应用 go get github.com/astaxie/bee 这样就完成了beego的安装,你就可以开始开发了,可以通过bee工具来创建beego项目 beego依赖的第三方包有如下: session模块:github.com/astaxie/beego/session session模块中支持redis引擎:github.com/garyburd/redigo/red...阅读全文

博文 2013-04-20 11:26 astaxie

【滴滴北京】golang开发工程师

**岗位描述:** 1. 负责专车事业部车后市场相关产品的设计、开发工作。 2. 保证系统的稳定性,并不断提升性能。 **任职资格:** 1. 对高并发、多线程、缓存等技术和业务场景有实际操作经验; 2. Golang基础扎实,有1-2个以上的项目开发经验; 3. 熟悉Linux下的常用操作,熟悉MySQL、Redis、MangoDB等数据产品; 4. 强烈的责任心与主动性,对所负责工作有owner意识,并能自我驱动成长; **联系方式:** - QQ:5889189...阅读全文

北京招聘Golang研发工程师

工作地点: 北京-回龙观-复式精装住宅 工作装备: MacBook Pro Retina 三星大宽屏显示器 人体工程学座椅 公司简介: 天津泛亚电子商务技术服务有限公司于2014年1月由泛亚有色金属交易所原有股东投资设立,注册资本1亿元人民币,是泛亚有色金属交易所实现集团化发展的重要战略举措。该公司将以交易系统研发、风险控制等核心技术,以控股或参股的形式参与全国各地交易市场及交易中心的建设,预计3-5年内将形成天津为核心,涵盖有色金属、煤炭、进口矿产品、塑料等大宗商品业务板块。 岗位要求: - 计算机相关专业本科及以上学历, 具有2年及以上开发工作经验; - 熟悉Linux工作环境,精通Golang/Erlang/C/C++至少一种语言; ...阅读全文

使用GO语言开发 Redis数据监控程序

使用GO语言开发 Redis数据监控程序 简介 Go语言是谷歌推出的一种全新的编程语言,具有语法简洁但功能强大的特性,一经推出就颇受好评。 最近工作中经常需要实时监控和管理Redis中的数据,正好可以利用Go开发一些监控管理工具。 本文以开发一个实时监控和管理Redis中的在线用户信息为例,演示如何使用Go方便的开发Redis客户端程序。 选择redis Go客户端 业界有很多不错的Go客户端程序,本文选择使用redigo,地址:github.com/garyburd/redigo/redis Go中安装依赖很简单,一个get命令即可: go get github.com/garyburd/redigo/redis 使用flag解析参数 flag.String(name string, va...阅读全文

博文 2015-09-28 16:40 yaoyasong

发布一个参考ssdb,用go实现的类似redis的高性能nosql:ledisdb

起因ledisdb是一个参考ssdb,采用go实现,底层基于leveldb,类似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持。我们现在的应用极大的依赖redis,但随着我们用户量越来越大,redis的内存越来越不够用,并且replication可能还会导致超时问题。虽然后续我们可以通过添加多台机器来解决,但是在现有机器配置下面,我们仍希望单台机器承载更多的用户。另外,因为业务的特性,我们其实并不需要将所有的数据放到内存,只需要存放当前活跃用户。经过我们的调研,发现ssdb已经很好的帮我们解决了这个问题,它提供了跟redis一致的接口(当然有些地方还是稍微不同),但是底层采用leveldb进行存储。根据其官网的描述,性能已经接近甚至超越了redi...阅读全文

博文 2014-05-10 16:59 siddontang

[北京]创业企业招聘Golang开发工程师

创业企业(东华软件投资)招聘Golang开发工程师,具体如下: 职位 & 主要工作 : 使用Go语言开发智能家居云平台,主要涉及http长连接、高并发编程、基本Web服务器端编程(使用Revel框架) 要求: 熟悉并热爱开源领域;熟练使用Go语言,熟练使用gorouting和channel等Go核心工具,熟练使用Revel框架 熟悉各种主流数据库,mysql、sqlserver、oracle 熟悉redis 熟练使用docker 有java语言开发背景的优先 (要求3年以上java开发经验) 待遇面议 有意者联系 : QQ:229266520 Asla...阅读全文

主题 2015-04-22 15:46:01 amar

分布式后台任务队列模拟(Golang)

最近研究了下gowoker,这东西代码少而精,Golang真是很适合实现这类东西。 我去掉参数配置,JSON,Redis这些东西,用goworker的方式做了个最简单的实现。 实现如下功能: 1. worker向JobServer注册可执行的功能 2. JobServer轮询,有job就执行,没有则继续轮询 3. client向JobServer提出任务请求,并传入参数 4. JobServer依请求丢给worker执行(可并发或串行执行) 5. JobServer继续轮询 我弄的这个代码很少,其中队列用数组代替,同时省掉了很多东西, 但保留了其goroutine与channel最基础的实现。 如果想看goworker的,可以参考下我这个,应当可以更快的弄明白goworker。 演示例子及运...阅读全文

博文 2015-03-24 14:12 xcltapestry

发布一个参考ssdb,使用go类似的实现redis高性能nosql:ledisdb

起因ledisdb是一个參考ssdb。採用go实现,底层基于leveldb,相似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持。我们如今的应用极大的依赖redis。但随着我们用户量越来越大,redis的内存越来越不够用。而且replication可能还会导致超时问题。尽管兴许我们能够通过加入多台机器来解决。可是在现有机器配置以下。我们仍希望单台机器承载很多其它的用户。另外,由于业务的特性,我们事实上并不须要将全部的数据放到内存。仅仅须要存放当前活跃用户。经过我们的调研,发现ssdb已经非常好的帮我们攻克了这个问题,它提供了跟redis一致的接口(当然有些地方还是略微不同)。可是底层採用leveldb进行存储。依据其官网的描写叙述。性能已经接近甚至...阅读全文

博文 2015-09-08 17:44 zfyouxi

地点北京朝外SOHO,找Go Web后台开发

要求: * 1年以上团队协作工作经验; * 熟悉Linux/Unix操作环境,Linux/OSX作为开发系统; * 熟悉Nodejs或Go、MySQL、Redis、Apache,有良好的编码和文档写作习惯; * 了解面向服务架构、敏捷开发; * 具备较强的逻辑思维能力、自学能力、英文阅读能力和沟通能力,乐于分享; * 具备一定的前端开发能力和审美能力优先; 薪资: 8-16K 简历请发邮箱: hui@owhat.c...阅读全文

Golang游戏服务器开发

um-game.com 手游创业公司,团队成员有爱,知名天使投资,知名大厂背景。 坐标:杭州滨江 薪资:10k-20k 看能力、可面谈 工作内容: 1.负责服务器功能模块设计和实现 2.设计游戏相关功能模块架构 3.跟踪和维护上线产品 岗位要求: 1.本科及以上计算机相关专业毕业 2.1年及以上游戏服务器开发经验 3.熟悉C或者Golang编程语言,具有Golang服务器开发经验者优先 4.熟悉操作系统原理,对网络编程、多线程编程有深刻理解 5.熟悉常用的数据结构和算法并能熟练使用 6.熟悉Redis、Mongodb等数据库操作 7.良好的逻辑思维、学习习惯,具备独立解决技术问题的能力 ...阅读全文

[转] [广而告之] 用 Go 写的类似 ruby-china 的社区, 欢迎光临, 呵呵!

原文: http://ruby-china.org/topics/14345 链接: http://occnet.net/ 很喜欢 ruby-china 这样的社区, 在 3 个月前, 我花了差不多 3 个月的空闲时间把 ruby-china 从 mongodb 移植到 postgresql, 当然也把代码改得一塌糊涂, 我觉得一个人继续维护有点困难, 跟不上 ruby-china 的发展. 所以开始折腾 Golang, 国内学习 Golang 的资料出奇的多, 怎么回事? 收 Google 钱了? 开个玩笑. 也从这两个社区学到不少东西: http://studygolang.com/ http://golangtc.com 所以开始模仿 ru...阅读全文

Google Go 语言从入门到应用所需要的开源项目

Go 语言于 2009 年 11 月正式宣布推出,成为开放源代码项目,发展至今已经具有越来越广泛的影响力,今年更是在 TIOBE 编程语言排行榜中跻身 20 强。很多开发者也逐渐将目光投向这门语言,本文整理了部分比较好的学习和应用 Go 语言的开发项目,希望为没有接触过这门语言的开发者们提供一个学习和了解这门语言的途径。 关于 Go 语言: Go 是 Google 开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。由于其构建简化了并发运行代码的工作,存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。Go语言是基于Inferno操作系统所开发的,并在Linux及Mac OS X平台上进行了实现,后追加 Windows 系统下的实现。 Go 语言起源 2007 年,并于 200...阅读全文

博文 2016-12-12 15:00:03 两味真火

如何在 Go 语言中使用 Redis 连接池-Radix.v2

一、关于连接池 一个数据库服务器只拥有有限的资源,并且如果你没有充分使用这些资源,你可以通过使用更多的连接来提高吞吐量。一旦所有的资源都在使用,那么你就不能通过增加更多的连接来提高吞吐量。事实上,吞吐量在连接负载较大时就开始下降了。通常可以通过限制与可用的资源相匹配的数据库连接的数量来提高延迟和吞吐量。 如果不使用连接池,那么,每次传输数据,我们都需要进行创建连接,收发数据,关闭连接。在并发量不高的场景,基本上不会有什么问题,一旦并发量上去了,那么,一般就会遇到下面几个常见问题: 性能普遍上不去CPU 大量资源被系统消耗网络一旦抖动,会有大量 TIME_WAIT 产生,不得不定期重启服务或定期重启机器服务器工作不稳定,QPS 忽高忽低 要想解决这些问题,我们就要用到连接池了。连接池的思路很简...阅读全文

golang consistent hash 菜鸟分析

一直找集群的算法,刚好golang上面有一个适合。下面作为菜鸟来分析一下 // Copyright (C) 2012 Numerotron Inc. // Use of this source code is governed by an MIT-style license // that can be found in the LICENSE file. // Package consistent provides a consistent hashing function. // // Consistent hashing is often used to distribute requests to a changing set of servers. For example, // ...阅读全文

博文 2014-02-12 16:04 laohan_