Browse Source

feat: 支持redis的LTrim方法 (#1443)

shenbaise9527 3 years ago
parent
commit
13db7a1931
2 changed files with 17 additions and 0 deletions
  1. 12 0
      core/stores/redis/redis.go
  2. 5 0
      core/stores/redis/redis_test.go

+ 12 - 0
core/stores/redis/redis.go

@@ -880,6 +880,18 @@ func (s *Redis) Lrem(key string, count int, value string) (val int, err error) {
 	return
 	return
 }
 }
 
 
+// Ltrim is the implementation of redis ltrim command.
+func (s *Redis) Ltrim(key string, start, stop int64) error {
+	return s.brk.DoWithAcceptable(func() error {
+		conn, err := getRedis(s)
+		if err != nil {
+			return err
+		}
+
+		return conn.LTrim(key, start, stop).Err()
+	}, acceptable)
+}
+
 // Mget is the implementation of redis mget command.
 // Mget is the implementation of redis mget command.
 func (s *Redis) Mget(keys ...string) (val []string, err error) {
 func (s *Redis) Mget(keys ...string) (val []string, err error) {
 	err = s.brk.DoWithAcceptable(func() error {
 	err = s.brk.DoWithAcceptable(func() error {

+ 5 - 0
core/stores/redis/redis_test.go

@@ -361,6 +361,11 @@ func TestRedis_List(t *testing.T) {
 		vals, err = client.Lrange("key", 0, 10)
 		vals, err = client.Lrange("key", 0, 10)
 		assert.Nil(t, err)
 		assert.Nil(t, err)
 		assert.EqualValues(t, []string{"value2", "value3", "value4"}, vals)
 		assert.EqualValues(t, []string{"value2", "value3", "value4"}, vals)
+		err = client.Ltrim("key", 0, 1)
+		assert.Nil(t, err)
+		vals, err = client.Lrange("key", 0, 10)
+		assert.Nil(t, err)
+		assert.EqualValues(t, []string{"value2", "value3"}, vals)
 	})
 	})
 }
 }