GolangNote

Golang笔记

GoLang ssdb 编写一个model 示例

Permalink

GoLang ssdb 编写一个model 示例,定义主体和方法,下面的方式是推荐的写法:

GoLang ssdb model

Go: model
1
2
3
4
5
6
type MyDB struct {
    *sql.DB
}

func (mdb *MyDB) GetAll() ([]Thing, error) { ... }
func (mdb *MyDB) Get() (id int) (Thing, error) { ... }

下面是用SSDB 作为例子,写个具体的实例:

Go: ssdb model
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main

import (
    "fmt"
    //"reflect"

    "github.com/eryx/lessgo/data/hissdb"
)

type User struct {
    Id       int64
    Email    string
    Username string
    Password []byte
}

type Topic struct {
    Id       int64
    Title    string
    Contenct string
    Addtime  int64
}

type MyDB struct {
    ssdb *hissdb.Connector
}

func (mdb *MyDB) UserGetAll() ([]User, error) {
    tmp := make([]User, 0, 10)
    fmt.Println("Get all")
    return tmp, nil
}

func (mdb *MyDB) UserGet(id int) (User, error) {
    user := User{}
    fmt.Println("get User id:", id)
    mdb.ssdb.Cmd("set", "true", "True")
    if mdb.ssdb.Cmd("get", "true").Bool() {
        fmt.Println("set bool OK")
    }
    return user, nil
}

func (mdb *MyDB) TopicGet(id int) (Topic, error) {
    topic := Topic{}
    fmt.Println("get Topic id:", id)
    mdb.ssdb.Cmd("set", "true", "True")
    if mdb.ssdb.Cmd("get", "true").Bool() {
        fmt.Println("set bool OK")
    }
    return topic, nil
}

func GetDbMap() (*hissdb.Connector, error) {

    conn, err := hissdb.NewConnector(hissdb.Config{
        Host:    "127.0.0.1",
        Port:    8889,
        Timeout: 3,  // timeout in second, default to 10
        MaxConn: 10, // max connection number, default to 1
    })
    if err != nil {
        fmt.Println("Connect Error: %v", err)
        return conn, err
    }
    return conn, nil
}

var mydb MyDB

func main() {

    mydb.ssdb, _ = GetDbMap()
    mydb.UserGet(1)

    defer mydb.ssdb.Close()

    fmt.Println("done")

}

本文网址: https://golangnote.com/topic/64.html 转摘请注明来源

Related articles

Golang Web 程序生产环境独立部署示例

一个 web 应用通常是跑在一个前端代理,如 Nginx 后,这样可以方便的在同一个服务器部署多个应用。这里说的独立部署是指让 go web 程序直接暴露在外面,独占 443、80 端口(俗称裸跑)。这样做除了性能有些提高外,更重要的是部署方便。...

golang snappy 的使用场合

google 自家的 snappy 压缩优点是非常高的速度和合理的压缩率。压缩率比 gzip 小,CPU 占用小。...

Golang telegram 机器人小试

telegram 的机器人接口很开放,使用简单,100%开放无限制,相对微信服务号、公众号好很多。用来做一些小应用也很方便。下面是使用golang sdk 开发telegram 机器人的经验。...

Write a Comment to "GoLang ssdb 编写一个model 示例"

Submit Comment Login
Based on Golang + fastHTTP + sdb | go1.22.3 Processed in 0ms