V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ablegao
V2EX  ›  Go 编程语言

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

  •  1
     
  •   ablegao ·
    server-nado · 2015-01-22 00:14:48 +08:00 · 1120 次点击
    这是一个创建于 3383 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 , 同时欢迎感兴趣的同学, 加入到这套组件的开发。
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2576 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:38 · PVG 23:38 · LAX 08:38 · JFK 11:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.