go - 是否有任何自动增量机制用于使用 redigo 包装器将键的值存储在 redis 中?
问题描述
我是编程语言的新手,只想编写一个具有良好架构的小型 Web 应用程序项目。
我通过发布请求获得了一些特定的重新调整对象。
type Rectangle struct {
X int //starting x coordinate
Y int //starting y coordinate
Width int
Height int
CreatedAt time.Time
}
我决定选择 redis 进行存储,因为它具有高性能,我想亲自动手。
我在这里有点困惑:
对象的性质没有用于存储的特定键,所以我提出了键自动递增的想法,但仍然坚持如何去做,因为当我研究插入模式时,它类似于:
json, err := json.Marshal(rectangle) if err != nil { return err } _, err = connection.Do("SET", key, json) if err != nil { return err }
如您所见,我被困在关键字段中要写什么。我看到了 Redis 命令“INCR”,但这种模式似乎没有任何意义。
- 如果我想获取所有矩形而不考虑它们的键,
connection.Do("HGETALL", "*", rectangles[])
命令会帮助我获取数据库中所有矩形的数组吗?
解决方案
列表符合问题中提出的要求。
添加矩形:
_, err := c.Do("RPUSH", "rectangles", rectJSON).
获取所有矩形:
rectJSONs, err := redis.ByteSlices(c.Do("LRANGE" "rectangles", 0, -1))
if err != nil {
// handle error
}
var rectangles []*Rectangle
for _, rj := range rectJSONS {
var r Rectangle
if err := json.Unmarshal(rj, &r); err != nil {
// handle error
}
rectangles = append(rectangles, &r)
}
推荐阅读
- r - 如何检查r中的列表中是否不存在多个元素
- node.js - Angular 无法访问我自己的 API [404(未找到)]
- javascript - axios:获取特定用户的数据
- python - 如何用其他 pytorch 函数替换 torch.norm?
- laravel - 如何在 Livewire 中实现日期选择器?
- java - GridBagLayout 忽略锚点
- pylint - 失败标志不适用于 pylint
- java - Android Studio - getBitmap 不工作。返回 null (Java)
- jenkins - BlueOceanCredentialsProvider 问题
- express - 等待 HTTP 请求响应后再卸载