From 4b495a56e5891000d466bb2be2c2004a9e98565e Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Wed, 24 Aug 2022 11:51:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0redis=20list=20=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lego/sys/redis/cluster/list.go | 17 +++++++---------- lego/sys/redis/core.go | 6 +++--- lego/sys/redis/pipe/list.go | 17 +++++++---------- lego/sys/redis/redis.go | 4 ++-- lego/sys/redis/single/list.go | 14 ++++++++------ 5 files changed, 27 insertions(+), 31 deletions(-) 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 141274734..63a0ed961 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 } @@ -103,6 +104,7 @@ func (this *Redis) LRange(key string, start, end int, v interface{}) (err error) } return } + /* Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素, 以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推