在 Go 中处理后台作业
要队列化作业,您需要创建一个具有 Redis 命名空间和 redigo 池的 Enqueuer。每个队列化的作业都有一个名称,并且可以接受可选的参数。参数是 k/v 对(内部以 JSON 格式序列化)。
Redis 集群 部署中使用 gocraft/work,则在执行用于管理作业数据的各个 lua 脚本时,可能会遇到 CROSSSLOT 请求中的密钥没有哈希到相同的槽 错误(请参阅 问题 93。当前的解决方案是,使用 Redis 哈希标签 在集群中单个节点上的特定工作池中强制对整个 命名空间 的密钥进行哈希。使用上述示例:func main() {
// 创建一个新的池。参数:
// Context{} 是一个结构体,将作为请求的上下文。
// 10 是最大并发数
// "my_app_namespace" 是 Redis 命名空间,{} 字符强制所有键放在同一个节点上
// redisPool 是一个 Redis 池暂无开放 Issues,或尚未同步最近议题。