123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package parallel
- import (
- "context"
- "unsafe"
- "go-common/library/cache/redis"
- "go-common/library/log"
- )
- // RedisTask .
- type RedisTask struct {
- ctx *context.Context
- name string
- pool *redis.Pool
- cmd string
- args []interface{}
- }
- // NewRedisTaskWithName new redis parallel task
- func NewRedisTaskWithName(ctx *context.Context, name string, pool *redis.Pool, cmd string, args ...interface{}) *RedisTask {
- return &RedisTask{
- ctx: ctx,
- name: name,
- pool: pool,
- cmd: cmd,
- args: args,
- }
- }
- // NewRedisTask new redis parallel task
- func NewRedisTask(ctx *context.Context, pool *redis.Pool, cmd string, args ...interface{}) *RedisTask {
- return &RedisTask{
- ctx: ctx,
- pool: pool,
- cmd: cmd,
- args: args,
- }
- }
- // Run .
- func (rt *RedisTask) Run() (result *[]byte) {
- conn := rt.pool.Get(*rt.ctx)
- defer conn.Close()
- reply, err := conn.Do(rt.cmd, rt.args...)
- if err != nil {
- log.Error("RedisTask Run error:[%+v]", err)
- return
- }
- switch reply := reply.(type) {
- case []byte:
- result = &reply
- case string:
- b := []byte(reply)
- result = &b
- default:
- result = (*[]byte)(unsafe.Pointer(&reply))
- }
- return
- }
|