golang mongodb & redis

https://www.runoob.com/docker/docker-install-mongodb.html

bash
docker pull mongo

$ docker exec -it mongo mongo admin

>  db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

> db.auth('admin', '123456')

https://its304.com/article/pengpengzhou/105222504

go
type TestStruct struct {
    Name string
    ID   primitive.ObjectID `bson:"_id"`
}

func main(){
    credential := options.Credential{
        Username: "admin",
        Password: "123456",
    }

    //1.建立連接
    if client, err = mongo.Connect(context.TODO(), options.Client().ApplyURI("mongodb://localhost:27017").SetAuth(credential).SetConnectTimeout(5*time.Second)); err != nil {
        fmt.Print(err)
        return
    }
    //2.選擇database
    db = client.Database("my_db")

    //3.選擇table
    collection = db.Collection("my_collection")
    collection = collection
    podcast := TestStruct{
        Name: "The Polyglot Developer",
        ID:   primitive.NewObjectID(),
    }
        //insert 
    if iResult, err = collection.InsertOne(context.TODO(), podcast); err != nil {
        fmt.Print(err)
        return
    }
    //_id:id
    log.Println("collection.InsertOne: ", iResult.InsertedID)
    var results []TestStruct
    fmt.Println(`bson.M{“_id”: docID}:`, bson.M{"Name": "The Polyglot Developer"})
    fmt.Println(`bson.M{“_id”: docID}:`, bson.D{{"Name", "The Polyglot Developer"}})
    cur, err := collection.Find(context.TODO(), bson.M{"id": 999})
    if err != nil {
        // ErrNoDocuments means that the filter did not match any documents in the collection
        if err == mongo.ErrNoDocuments {
            return
        }
        log.Fatal(err)
    }
    if err = cur.All(context.TODO(), &results); err != nil {
        panic(err)
    }
    fmt.Println(results)
}

redis

https://www.796t.com/article.php?id=173205

go
import (
    "context"
    "fmt"
    "log"
    "mvc/controller"
    "mvc/dao"
    "net/http"
    "os"
    "os/signal"
    "syscall"
    "time"

    "github.com/go-redis/redis/v8"

)
func main(){
        rdb := redis.NewClient(&redis.Options{
        Addr: "localhost:6379",
        // Password: "a12345", // no password set
        DB: 0, // use default DB
    })
    pong, err := rdb.Ping(context.Background()).Result()
    if err == nil {
        log.Println("redis 回應成功,", pong)
    } else {
        log.Fatal("redis 無法連線,錯誤為", err)
    }
    key := "go2key"
    //過期時間1小時
    err = rdb.Set(context.Background(), key, "我是值", time.Hour).Err()
    if err != nil {
        fmt.Println("set err", err)
        return
    }

    //獲取
    value, err := rdb.Get(context.Background(), key).Result()
    if err != nil {
        fmt.Println("Get err", err)
        return
    }
    fmt.Printf("key:%v value:%v \n", key, value)
}