github.com/ablegao/orm 功能更新,支持分布式 redis 缓存的数据库 orm

2015-01-22 00:14:48 +08:00
 ablegao
http://github.com/ablegao/orm

这个orm 按自己的思路, 是提供游戏类服务器开发使用。 以分布式模式,应对大量数据变更。 前身为公司开发的游戏框架orm 部分, 现在剥离大概全部主要功能。

新增redis的一致性hash支持,可以做redis分布, 但不支持redis单点故障后的自动移除, 这需要自己建立redis移除策略,这里不说。

提供一个友好的orm 使用方法:

引用后, 一些基础配置:


func main(){
orm.CacheConsistent.Add("127.0.0.1:6379") //添加多个redis服务器
orm.SetCachePrefix("nado") //默认nado . 将作为redis key 的前缀
NewDatabase("default", "mysql", "happy:passwd@tcp(127.0.0.1:3306)/mydatabase?charset=utf8")
}


Model 写法:


type userB struct {
CacheModule
Uid int64 `field:"Id" index:"pk" cache:"user” ` #cache 标签将作为拼合 redis key 的判定字段。
Alias string `field:"Alias"`
Money int64 `field:"money" `
}


使用方法:


b := new(userB)
b.Uid = 10000
err:=b.Objects(b).One()
if err!= nil {
panic(err)
}
fmt.Println(b.Uid ,b.Alias ,b.Money)

b.Incrby("Money" , 100)
fmt.Println(b.Money)
b.Save() //不执行不会保存到数据库 只会修改redis数据。


这时, 可以从redis中看到一条 nado:10000:user 的key . 里面内容与数据库中内容一致。

最后的b.Save() 会保存数据修改到数据库 。


orm 使用中遇到未提的同学, 请提交 issues 到github.com/ablegao/orm , 同时欢迎感兴趣的同学, 加入到这套组件的开发。
1204 次点击
所在节点    Go 编程语言
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/164326

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX