From 2adbe2bcd3a50999e5509e2f5a643d8768a916f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Mon, 13 Apr 2026 16:26:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20ZRangeByScore=20ZR?= =?UTF-8?q?emRangeByScore=20ZRangeAndRemByScore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 +- go.sum | 2 ++ wrapper.go | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 70d9237..c7d4c0c 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.24.0 toolchain go1.24.2 require ( - git.zhangdeman.cn/zhangdeman/consts v0.0.0-20260127050054-349cdcde813a + git.zhangdeman.cn/zhangdeman/consts v0.0.0-20260413082525-fb90982b1256 git.zhangdeman.cn/zhangdeman/util v0.0.0-20260105024213-3d76b1bcde5a git.zhangdeman.cn/zhangdeman/wrapper v0.0.0-20260321023345-6c6e467e3a14 github.com/go-redis/redismock/v9 v9.2.0 diff --git a/go.sum b/go.sum index 5147e7b..44281b8 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ git.zhangdeman.cn/zhangdeman/consts v0.0.0-20260127050054-349cdcde813a h1:4apFwfRDdGBkSybcLWzjIYjz8i6yR28Wyt7iBK3K+Po= git.zhangdeman.cn/zhangdeman/consts v0.0.0-20260127050054-349cdcde813a/go.mod h1:5p8CEKGBxi7qPtTXDI3HDmqKAfIm5i/aBWdrbkbdNjc= +git.zhangdeman.cn/zhangdeman/consts v0.0.0-20260413082525-fb90982b1256 h1:zYkRoH86j+4BoVGCWUY6zA+FIQNmul/c8whmmYK3bT4= +git.zhangdeman.cn/zhangdeman/consts v0.0.0-20260413082525-fb90982b1256/go.mod h1:5p8CEKGBxi7qPtTXDI3HDmqKAfIm5i/aBWdrbkbdNjc= git.zhangdeman.cn/zhangdeman/op_type v0.0.0-20251013024601-da007da2fb42 h1:VjYrb4adud7FHeiYS9XA0B/tOaJjfRejzQAlwimrrDc= git.zhangdeman.cn/zhangdeman/op_type v0.0.0-20251013024601-da007da2fb42/go.mod h1:VHb9qmhaPDAQDcS6vUiDCamYjZ4R5lD1XtVsh55KsMI= git.zhangdeman.cn/zhangdeman/serialize v0.0.0-20260112135254-c9ba29f9f674 h1:75JJ09HPqWi9qm7XD+vV6p5TaCMQgDsae/EbsLiE1t4= diff --git a/wrapper.go b/wrapper.go index aa8afcb..629c721 100644 --- a/wrapper.go +++ b/wrapper.go @@ -111,3 +111,24 @@ func (w *wrapper) BLPop(ctx context.Context, instanceFlag string, key []string, paramList = append(paramList, timeout) return Client.Exec(ctx, instanceFlag, consts.RedisCommandBlpop, paramList...) } + +// ZRangeByScore 按分值获取数据 +func (w *wrapper) ZRangeByScore(ctx context.Context, instanceFlag string, key string, startScore int64, endScore int64) *define.RedisResult { + return Client.Exec(ctx, instanceFlag, consts.RedisCommandZrangeByScore, key, startScore, endScore, "WITHSCORES") +} + +// ZRemRangeByScore 删除集合中分值区间的数据 +func (w *wrapper) ZRemRangeByScore(ctx context.Context, instanceFlag string, key string, startScore int64, endScore int64) *define.RedisResult { + return Client.Exec(ctx, instanceFlag, consts.RedisCommandZRemRangeByScore, key, startScore, endScore) +} + +// ZRangeAndRemByScore 获取集合到期数据并删除 +// 本质: ZRange + ZRemRangeByScore +func (w *wrapper) ZRangeAndRemByScore(ctx context.Context, instanceFlag string, key string, startScore int64, endScore int64) *define.RedisResult { + rangeRes := w.ZRangeByScore(ctx, instanceFlag, key, startScore, endScore) + if nil == rangeRes.Err { + // 读取成功, 删除 + w.ZRemRangeByScore(ctx, instanceFlag, key, startScore, endScore) + } + return rangeRes +}