mirror of https://github.com/go-redis/redis.git
Merge branch 'master' into os-add-ts-insertion-filters
This commit is contained in:
commit
132a9ca70c
2
Makefile
2
Makefile
|
@ -31,7 +31,7 @@ build:
|
||||||
|
|
||||||
testdata/redis:
|
testdata/redis:
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
wget -qO- https://download.redis.io/releases/redis-7.4-rc1.tar.gz | tar xvz --strip-components=1 -C $@
|
wget -qO- https://download.redis.io/releases/redis-7.4-rc2.tar.gz | tar xvz --strip-components=1 -C $@
|
||||||
|
|
||||||
testdata/redis/src/redis-server: testdata/redis
|
testdata/redis/src/redis-server: testdata/redis
|
||||||
cd $< && make all
|
cd $< && make all
|
||||||
|
|
|
@ -2486,35 +2486,40 @@ var _ = Describe("Commands", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HExpire", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HExpire", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
res, err := client.HExpire(ctx, "no_such_key", 10, "field1", "field2", "field3").Result()
|
res, err := client.HExpire(ctx, "no_such_key", 10*time.Second, "field1", "field2", "field3").Result()
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(res).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err = client.HExpire(ctx, "myhash", 10, "key1", "key2", "key200").Result()
|
res, err = client.HExpire(ctx, "myhash", 10*time.Second, "key1", "key2", "key200").Result()
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(res).To(Equal([]int64{1, 1, -2}))
|
Expect(res).To(Equal([]int64{1, 1, -2}))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HPExpire", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HPExpire", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
_, err := client.HPExpire(ctx, "no_such_key", 10, "field1", "field2", "field3").Result()
|
res, err := client.HPExpire(ctx, "no_such_key", 10*time.Second, "field1", "field2", "field3").Result()
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(res).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err := client.HPExpire(ctx, "myhash", 10, "key1", "key2", "key200").Result()
|
res, err = client.HPExpire(ctx, "myhash", 10*time.Second, "key1", "key2", "key200").Result()
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(res).To(Equal([]int64{1, 1, -2}))
|
Expect(res).To(Equal([]int64{1, 1, -2}))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HExpireAt", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HExpireAt", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
|
resEmpty, err := client.HExpireAt(ctx, "no_such_key", time.Now().Add(10*time.Second), "field1", "field2", "field3").Result()
|
||||||
_, err := client.HExpireAt(ctx, "no_such_key", time.Now().Add(10*time.Second), "field1", "field2", "field3").Result()
|
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(resEmpty).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
|
@ -2526,9 +2531,10 @@ var _ = Describe("Commands", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HPExpireAt", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HPExpireAt", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
|
resEmpty, err := client.HPExpireAt(ctx, "no_such_key", time.Now().Add(10*time.Second), "field1", "field2", "field3").Result()
|
||||||
_, err := client.HPExpireAt(ctx, "no_such_key", time.Now().Add(10*time.Second), "field1", "field2", "field3").Result()
|
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(resEmpty).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
|
@ -2540,9 +2546,10 @@ var _ = Describe("Commands", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HPersist", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HPersist", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
|
resEmpty, err := client.HPersist(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
||||||
_, err := client.HPersist(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(resEmpty).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
|
@ -2552,7 +2559,7 @@ var _ = Describe("Commands", func() {
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(res).To(Equal([]int64{-1, -1, -2}))
|
Expect(res).To(Equal([]int64{-1, -1, -2}))
|
||||||
|
|
||||||
res, err = client.HExpire(ctx, "myhash", 10, "key1", "key200").Result()
|
res, err = client.HExpire(ctx, "myhash", 10*time.Second, "key1", "key200").Result()
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(res).To(Equal([]int64{1, -2}))
|
Expect(res).To(Equal([]int64{1, -2}))
|
||||||
|
|
||||||
|
@ -2562,15 +2569,16 @@ var _ = Describe("Commands", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HExpireTime", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HExpireTime", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
|
resEmpty, err := client.HExpireTime(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
||||||
_, err := client.HExpireTime(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(resEmpty).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err := client.HExpire(ctx, "myhash", 10, "key1", "key200").Result()
|
res, err := client.HExpire(ctx, "myhash", 10*time.Second, "key1", "key200").Result()
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(res).To(Equal([]int64{1, -2}))
|
Expect(res).To(Equal([]int64{1, -2}))
|
||||||
|
|
||||||
|
@ -2580,9 +2588,10 @@ var _ = Describe("Commands", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HPExpireTime", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HPExpireTime", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
|
resEmpty, err := client.HPExpireTime(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
||||||
_, err := client.HPExpireTime(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(resEmpty).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
|
@ -2599,15 +2608,16 @@ var _ = Describe("Commands", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HTTL", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HTTL", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
|
resEmpty, err := client.HTTL(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
||||||
_, err := client.HTTL(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(resEmpty).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err := client.HExpire(ctx, "myhash", 10, "key1", "key200").Result()
|
res, err := client.HExpire(ctx, "myhash", 10*time.Second, "key1", "key200").Result()
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(res).To(Equal([]int64{1, -2}))
|
Expect(res).To(Equal([]int64{1, -2}))
|
||||||
|
|
||||||
|
@ -2617,15 +2627,16 @@ var _ = Describe("Commands", func() {
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should HPTTL", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
It("should HPTTL", Label("hash-expiration", "NonRedisEnterprise"), func() {
|
||||||
|
resEmpty, err := client.HPTTL(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
||||||
_, err := client.HPTTL(ctx, "no_such_key", "field1", "field2", "field3").Result()
|
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
|
Expect(resEmpty).To(BeEquivalentTo([]int64{-2, -2, -2}))
|
||||||
|
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
sadd := client.HSet(ctx, "myhash", fmt.Sprintf("key%d", i), "hello")
|
||||||
Expect(sadd.Err()).NotTo(HaveOccurred())
|
Expect(sadd.Err()).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err := client.HExpire(ctx, "myhash", 10, "key1", "key200").Result()
|
res, err := client.HExpire(ctx, "myhash", 10*time.Second, "key1", "key200").Result()
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(res).To(Equal([]int64{1, -2}))
|
Expect(res).To(Equal([]int64{1, -2}))
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,19 @@ type HashCmdable interface {
|
||||||
HVals(ctx context.Context, key string) *StringSliceCmd
|
HVals(ctx context.Context, key string) *StringSliceCmd
|
||||||
HRandField(ctx context.Context, key string, count int) *StringSliceCmd
|
HRandField(ctx context.Context, key string, count int) *StringSliceCmd
|
||||||
HRandFieldWithValues(ctx context.Context, key string, count int) *KeyValueSliceCmd
|
HRandFieldWithValues(ctx context.Context, key string, count int) *KeyValueSliceCmd
|
||||||
|
HExpire(ctx context.Context, key string, expiration time.Duration, fields ...string) *IntSliceCmd
|
||||||
|
HExpireWithArgs(ctx context.Context, key string, expiration time.Duration, expirationArgs HExpireArgs, fields ...string) *IntSliceCmd
|
||||||
|
HPExpire(ctx context.Context, key string, expiration time.Duration, fields ...string) *IntSliceCmd
|
||||||
|
HPExpireWithArgs(ctx context.Context, key string, expiration time.Duration, expirationArgs HExpireArgs, fields ...string) *IntSliceCmd
|
||||||
|
HExpireAt(ctx context.Context, key string, tm time.Time, fields ...string) *IntSliceCmd
|
||||||
|
HExpireAtWithArgs(ctx context.Context, key string, tm time.Time, expirationArgs HExpireArgs, fields ...string) *IntSliceCmd
|
||||||
|
HPExpireAt(ctx context.Context, key string, tm time.Time, fields ...string) *IntSliceCmd
|
||||||
|
HPExpireAtWithArgs(ctx context.Context, key string, tm time.Time, expirationArgs HExpireArgs, fields ...string) *IntSliceCmd
|
||||||
|
HPersist(ctx context.Context, key string, fields ...string) *IntSliceCmd
|
||||||
|
HExpireTime(ctx context.Context, key string, fields ...string) *IntSliceCmd
|
||||||
|
HPExpireTime(ctx context.Context, key string, fields ...string) *IntSliceCmd
|
||||||
|
HTTL(ctx context.Context, key string, fields ...string) *IntSliceCmd
|
||||||
|
HPTTL(ctx context.Context, key string, fields ...string) *IntSliceCmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c cmdable) HDel(ctx context.Context, key string, fields ...string) *IntCmd {
|
func (c cmdable) HDel(ctx context.Context, key string, fields ...string) *IntCmd {
|
||||||
|
@ -202,7 +215,7 @@ type HExpireArgs struct {
|
||||||
// The command constructs an argument list starting with "HEXPIRE", followed by the key, duration, any conditional flags, and the specified fields.
|
// The command constructs an argument list starting with "HEXPIRE", followed by the key, duration, any conditional flags, and the specified fields.
|
||||||
// For more information - https://redis.io/commands/hexpire/
|
// For more information - https://redis.io/commands/hexpire/
|
||||||
func (c cmdable) HExpire(ctx context.Context, key string, expiration time.Duration, fields ...string) *IntSliceCmd {
|
func (c cmdable) HExpire(ctx context.Context, key string, expiration time.Duration, fields ...string) *IntSliceCmd {
|
||||||
args := []interface{}{"HEXPIRE", key, expiration, "FIELDS", len(fields)}
|
args := []interface{}{"HEXPIRE", key, formatSec(ctx, expiration), "FIELDS", len(fields)}
|
||||||
|
|
||||||
for _, field := range fields {
|
for _, field := range fields {
|
||||||
args = append(args, field)
|
args = append(args, field)
|
||||||
|
@ -217,7 +230,7 @@ func (c cmdable) HExpire(ctx context.Context, key string, expiration time.Durati
|
||||||
// The command constructs an argument list starting with "HEXPIRE", followed by the key, duration, any conditional flags, and the specified fields.
|
// The command constructs an argument list starting with "HEXPIRE", followed by the key, duration, any conditional flags, and the specified fields.
|
||||||
// For more information - https://redis.io/commands/hexpire/
|
// For more information - https://redis.io/commands/hexpire/
|
||||||
func (c cmdable) HExpireWithArgs(ctx context.Context, key string, expiration time.Duration, expirationArgs HExpireArgs, fields ...string) *IntSliceCmd {
|
func (c cmdable) HExpireWithArgs(ctx context.Context, key string, expiration time.Duration, expirationArgs HExpireArgs, fields ...string) *IntSliceCmd {
|
||||||
args := []interface{}{"HEXPIRE", key, expiration}
|
args := []interface{}{"HEXPIRE", key, formatSec(ctx, expiration)}
|
||||||
|
|
||||||
// only if one argument is true, we can add it to the args
|
// only if one argument is true, we can add it to the args
|
||||||
// if more than one argument is true, it will cause an error
|
// if more than one argument is true, it will cause an error
|
||||||
|
|
Loading…
Reference in New Issue