一 . dynamoDb介绍
AWS DynamoDB是一种完全托管的无服务器(Serverless)类型的NoSQL数据库。也是一种键-值(key-value)和文档型数据库,基本可以达到毫秒级的响应时间。作为持久数据库,它具有内置的安全性、备份与还原等功能!
二 . dynamoDb安装
- 本地docker安装:aws文档教程
镜像:docker pull amazon/dynamodb-local
容器:docker run -it -d -p 8000:8000 --name dynamodb-local amazon/dynamodb-local
- 线上可以直接使用aws,配置aws configure
三 .可视化工具
- 开源工具:https://github.com/YoyaTeam/dynamodb-manager
命令:docker-compose up -d
- aws工具:NoSQL Workbench for Amazon DynamoDB 下载链接
四 .go操作dynamoDb
相关sdk:
- “github.com/aws/aws-sdk-go/aws” (v2版本在我本地不好使??所以使用的是这个版本)
- “github.com/aws/aws-sdk-go/service/dynamodb”
- “github.com/aws/aws-sdk-go/service/dynamodb/dynamodbattribute”
表结构:
- ky:用户ID string类型
- d: 用户相关数据 []bety类型
1. 连接
var DynamoDbClient *dynamodb.DynamoDB
func Connect(conf *configs.DynamodbConfig) {
var staticCredentials = credentials.NewStaticCredentials("AccessKeyID", "SecretAccessKey", "SessionToken")
sess, _ := session.NewSession()
DynamoDbClient = dynamodb.New(sess, &aws.Config{
Region: aws.String("us-west-2"),
Endpoint: aws.String("http://localhost:8000"),
Credentials: staticCredentials,
})
}
credentials.NewStaticCredentials 可以不用(我是放到一台服务器上的时候报错了,连接不上dynamo,所以增加凭证(随意写就行)
2. 根据id获取用户信息
func GetItem(id int) []byte {
params := &dynamodb.GetItemInput{
Key: map[string]*dynamodb.AttributeValue{
"ky": {
S: aws.String(strconv.Itoa(id)),
},
},
TableName: aws.String("tableName"),
}
resp, err := DynamoDbClient.GetItem(params)