diff --git a/lego/sys/redis/cluster/list.go b/lego/sys/redis/cluster/list.go index a03685b5e..508120177 100644 --- a/lego/sys/redis/cluster/list.go +++ b/lego/sys/redis/cluster/list.go @@ -7,17 +7,14 @@ import ( /* Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推 */ -func (this *Redis) Lindex(key string, v interface{}) (err error) { - cmd := redis.NewStringCmd(this.client.Context(), "LINDEX", key) - this.client.Process(this.client.Context(), cmd) - var _result []byte - if _result, err = cmd.Bytes(); err == nil { - if len(_result) == 0 { - err = redis.Nil - return - } - err = this.codec.Unmarshal(_result, v) +func (this *Redis) Lindex(key string, index int64, v interface{}) (err error) { + var ( + resultvalue []byte + ) + if resultvalue, err = this.client.LIndex(this.client.Context(), key, index).Bytes(); err != nil { + return } + err = this.codec.Unmarshal(resultvalue, v) return } diff --git a/lego/sys/redis/core.go b/lego/sys/redis/core.go index 0b1c66e80..bd8ff4bf1 100644 --- a/lego/sys/redis/core.go +++ b/lego/sys/redis/core.go @@ -50,7 +50,7 @@ type ( MGet(v interface{}, keys ...string) (err error) INCRBY(key string, amount int64) (result int64, err error) /*List*/ - Lindex(key string, value interface{}) (err error) + Lindex(key string, index int64, value interface{}) (err error) Linsert(key string, isbefore bool, tager interface{}, value interface{}) (err error) Llen(key string) (result int, err error) LPop(key string, value interface{}) (err error) @@ -280,8 +280,8 @@ func UnLock(key string) (err error) { } /*List*/ -func Lindex(key string, value interface{}) (err error) { - return defsys.Lindex(key, value) +func Lindex(key string, index int64, value interface{}) (err error) { + return defsys.Lindex(key, index, value) } func Linsert(key string, isbefore bool, tager interface{}, value interface{}) (err error) { return defsys.Linsert(key, isbefore, tager, value) diff --git a/lego/sys/redis/pipe/list.go b/lego/sys/redis/pipe/list.go index 9aedcc976..fb2069673 100644 --- a/lego/sys/redis/pipe/list.go +++ b/lego/sys/redis/pipe/list.go @@ -7,17 +7,14 @@ import ( /* Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推 */ -func (this *RedisPipe) Lindex(key string, v interface{}) (err error) { - cmd := redis.NewStringCmd(this.ctx, "LINDEX", key) - this.client.Process(this.ctx, cmd) - var _result []byte - if _result, err = cmd.Bytes(); err == nil { - if len(_result) == 0 { - err = redis.Nil - return - } - err = this.codec.Unmarshal(_result, v) +func (this *RedisPipe) Lindex(key string, index int64, v interface{}) (err error) { + var ( + resultvalue []byte + ) + if resultvalue, err = this.client.LIndex(this.ctx, key, index).Bytes(); err != nil { + return } + err = this.codec.Unmarshal(resultvalue, v) return } diff --git a/lego/sys/redis/redis.go b/lego/sys/redis/redis.go index a674a83da..d2d33e048 100644 --- a/lego/sys/redis/redis.go +++ b/lego/sys/redis/redis.go @@ -164,8 +164,8 @@ func (this *Redis) INCRBY(key string, amount int64) (result int64, err error) { } /*List*/ -func (this *Redis) Lindex(key string, value interface{}) (err error) { - return this.client.Lindex(key, value) +func (this *Redis) Lindex(key string, index int64, value interface{}) (err error) { + return this.client.Lindex(key, index, value) } func (this *Redis) Linsert(key string, isbefore bool, tager interface{}, value interface{}) (err error) { return this.client.Linsert(key, isbefore, tager, value) diff --git a/lego/sys/redis/single/list.go b/lego/sys/redis/single/list.go index a63927a5f..ca78f9819 100644 --- a/lego/sys/redis/single/list.go +++ b/lego/sys/redis/single/list.go @@ -7,13 +7,14 @@ import ( /* Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推 */ -func (this *Redis) Lindex(key string, v interface{}) (err error) { - cmd := redis.NewStringCmd(this.client.Context(), "LINDEX", key) - this.client.Process(this.client.Context(), cmd) - var _result []byte - if _result, err = cmd.Bytes(); err == nil { - err = this.codec.Unmarshal(_result, v) +func (this *Redis) Lindex(key string, index int64, v interface{}) (err error) { + var ( + resultvalue []byte + ) + if resultvalue, err = this.client.LIndex(this.client.Context(), key, index).Bytes(); err != nil { + return } + err = this.codec.Unmarshal(resultvalue, v) return }