From 4935c434b169340eb36b341eb382692a9b8b3ca8 Mon Sep 17 00:00:00 2001 From: rfyiamcool Date: Mon, 18 Dec 2023 19:03:04 +0800 Subject: [PATCH] feat: add hstrlen command for hash Signed-off-by: rfyiamcool --- commands_test.go | 16 ++++++++++++++++ hash_commands.go | 7 +++++++ 2 files changed, 23 insertions(+) diff --git a/commands_test.go b/commands_test.go index 309ba1eb..c71b730e 100644 --- a/commands_test.go +++ b/commands_test.go @@ -2414,6 +2414,22 @@ var _ = Describe("Commands", func() { Equal([]redis.KeyValue{{Key: "key2", Value: "hello2"}}), )) }) + + It("should HStrLen", func() { + hSet := client.HSet(ctx, "hash", "key", "hello") + Expect(hSet.Err()).NotTo(HaveOccurred()) + + hStrLen := client.HStrLen(ctx, "hash", "key") + Expect(hStrLen.Err()).NotTo(HaveOccurred()) + Expect(hStrLen.Val()).NotTo(Equal(int64(len("hello")))) + + nonHStrLen := client.HGet(ctx, "hash", "key1") + Expect(nonHStrLen.Val()).To(Equal(int64(0))) + + hDel := client.HDel(ctx, "hash", "key") + Expect(hDel.Err()).NotTo(HaveOccurred()) + Expect(hDel.Val()).To(Equal(int64(1))) + }) }) Describe("hyperloglog", func() { diff --git a/hash_commands.go b/hash_commands.go index 2c62a75a..7e1286db 100644 --- a/hash_commands.go +++ b/hash_commands.go @@ -6,6 +6,7 @@ type HashCmdable interface { HDel(ctx context.Context, key string, fields ...string) *IntCmd HExists(ctx context.Context, key, field string) *BoolCmd HGet(ctx context.Context, key, field string) *StringCmd + HStrLen(ctx context.Context, key, field string) *IntCmd HGetAll(ctx context.Context, key string) *MapStringStringCmd HIncrBy(ctx context.Context, key, field string, incr int64) *IntCmd HIncrByFloat(ctx context.Context, key, field string, incr float64) *FloatCmd @@ -45,6 +46,12 @@ func (c cmdable) HGet(ctx context.Context, key, field string) *StringCmd { return cmd } +func (c cmdable) HStrLen(ctx context.Context, key, field string) *IntCmd { + cmd := NewIntCmd(ctx, "hstrlen", key, field) + _ = c(ctx, cmd) + return cmd +} + func (c cmdable) HGetAll(ctx context.Context, key string) *MapStringStringCmd { cmd := NewMapStringStringCmd(ctx, "hgetall", key) _ = c(ctx, cmd)