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 , 同时欢迎感兴趣的同学, 加入到这套组件的开发。