LRANGE
LRANGE key start stop
- Available since:
- Redis Open Source 1.0.0
- Time complexity:
- O(S+N) where S is the distance of start offset from HEAD for small lists, from nearest end (HEAD or TAIL) for large lists; and N is the number of elements in the specified range.
- ACL categories:
-
@read,@list,@slow, - Compatibility:
- Redis Software and Redis Cloud compatibility
Returns the specified elements of the list stored at key.
The offsets start and stop are zero-based indexes, with 0 being the first
element of the list (the head of the list), 1 being the next element and so
on.
These offsets can also be negative numbers indicating offsets starting at the
end of the list.
For example, -1 is the last element of the list, -2 the penultimate, and so
on.
Required arguments
key
The name of the key that holds the list.
start
The zero-based start index. Negative indexes count from the tail.
stop
The zero-based stop index (inclusive). Negative indexes count from the tail.
Examples
res4 = r.rpush("mylist", "one");
print(res4) # >>> 1
res5 = r.rpush("mylist", "two")
print(res5) # >>> 2
res6 = r.rpush("mylist", "three")
print(res6) # >>> 3
res7 = r.lrange('mylist', 0, 0)
print(res7) # >>> [ 'one' ]
res8 = r.lrange('mylist', -3, 2)
print(res8) # >>> [ 'one', 'two', 'three' ]
res9 = r.lrange('mylist', -100, 100)
print(res9) # >>> [ 'one', 'two', 'three' ]
res10 = r.lrange('mylist', 5, 10)
print(res10) # >>> []
import redis
r = redis.Redis(decode_responses=True)
res1 = r.lpush("mylist", "world")
print(res1) # >>> 1
res2 = r.lpush("mylist", "hello")
print(res2) # >>> 2
res3 = r.lrange("mylist", 0, -1)
print(res3) # >>> [ "hello", "world" ]
res4 = r.rpush("mylist", "one");
print(res4) # >>> 1
res5 = r.rpush("mylist", "two")
print(res5) # >>> 2
res6 = r.rpush("mylist", "three")
print(res6) # >>> 3
res7 = r.lrange('mylist', 0, 0)
print(res7) # >>> [ 'one' ]
res8 = r.lrange('mylist', -3, 2)
print(res8) # >>> [ 'one', 'two', 'three' ]
res9 = r.lrange('mylist', -100, 100)
print(res9) # >>> [ 'one', 'two', 'three' ]
res10 = r.lrange('mylist', 5, 10)
print(res10) # >>> []
res11 = r.lpush("mylist", "World")
print(res11) # >>> 1
res12 = r.lpush("mylist", "Hello")
print(res12) # >>> 2
res13 = r.llen("mylist")
print(res13) # >>> 2
res14 = r.rpush("mylist", "hello")
print(res14) # >>> 1
res15 = r.rpush("mylist", "world")
print(res15) # >>> 2
res16 = r.lrange("mylist", 0, -1)
print(res16) # >>> [ "hello", "world" ]
res17 = r.rpush("mylist", *["one", "two", "three", "four", "five"])
print(res17) # >>> 5
res18 = r.lpop("mylist")
print(res18) # >>> "one"
res19 = r.lpop("mylist", 2)
print(res19) # >>> ['two', 'three']
res17 = r.lrange("mylist", 0, -1)
print(res17) # >>> [ "four", "five" ]
res18 = r.rpush("mylist", *["one", "two", "three", "four", "five"])
print(res18) # >>> 5
res19 = r.rpop("mylist")
print(res19) # >>> "five"
res20 = r.rpop("mylist", 2)
print(res20) # >>> ['four', 'three']
res21 = r.lrange("mylist", 0, -1)
print(res21) # >>> [ "one", "two" ]
const res4 = await client.rPush('mylist', 'one');
console.log(res4); // 1
const res5 = await client.rPush('mylist', 'two');
console.log(res5); // 2
const res6 = await client.rPush('mylist', 'three');
console.log(res6); // 3
const res7 = await client.lRange('mylist', 0, 0);
console.log(res7); // [ 'one' ]
const res8 = await client.lRange('mylist', -3, 2);
console.log(res8); // [ 'one', 'two', 'three' ]
const res9 = await client.lRange('mylist', -100, 100);
console.log(res9); // [ 'one', 'two', 'three' ]
const res10 = await client.lRange('mylist', 5, 10);
console.log(res10); // []
import assert from 'node:assert';
import { createClient } from 'redis';
const client = createClient();
await client.connect().catch(console.error);
const res1 = await client.lPush('mylist', 'world');
console.log(res1); // 1
const res2 = await client.lPush('mylist', 'hello');
console.log(res2); // 2
const res3 = await client.lRange('mylist', 0, -1);
console.log(res3); // [ 'hello', 'world' ]
const res4 = await client.rPush('mylist', 'one');
console.log(res4); // 1
const res5 = await client.rPush('mylist', 'two');
console.log(res5); // 2
const res6 = await client.rPush('mylist', 'three');
console.log(res6); // 3
const res7 = await client.lRange('mylist', 0, 0);
console.log(res7); // [ 'one' ]
const res8 = await client.lRange('mylist', -3, 2);
console.log(res8); // [ 'one', 'two', 'three' ]
const res9 = await client.lRange('mylist', -100, 100);
console.log(res9); // [ 'one', 'two', 'three' ]
const res10 = await client.lRange('mylist', 5, 10);
console.log(res10); // []
const res11 = await client.lPush('mylist', 'World');
console.log(res11); // 1
const res12 = await client.lPush('mylist', 'Hello');
console.log(res12); // 2
const res13 = await client.lLen('mylist');
console.log(res13); // 2
const res14 = await client.rPush('mylist', 'hello');
console.log(res14); // 1
const res15 = await client.rPush('mylist', 'world');
console.log(res15); // 2
const res16 = await client.lRange('mylist', 0, -1);
console.log(res16); // [ 'hello', 'world' ]
const res17 = await client.rPush('mylist', ["one", "two", "three", "four", "five"]);
console.log(res17); // 5
const res18 = await client.lPop('mylist');
console.log(res18); // 'one'
const res19 = await client.lPopCount('mylist', 2);
console.log(res19); // [ 'two', 'three' ]
const res20 = await client.lRange('mylist', 0, -1);
console.log(res20); // [ 'four', 'five' ]
const res21 = await client.rPush('mylist', ["one", "two", "three", "four", "five"]);
console.log(res21); // 5
const res22 = await client.rPop('mylist');
console.log(res22); // 'five'
const res23 = await client.rPopCount('mylist', 2);
console.log(res23); // [ 'four', 'three' ]
const res24 = await client.lRange('mylist', 0, -1);
console.log(res24); // [ 'one', 'two' ]
await client.close();
const res4 = await redis.rpush('mylist', 'one');
console.log(res4); // >>> 1
const res5 = await redis.rpush('mylist', 'two');
console.log(res5); // >>> 2
const res6 = await redis.rpush('mylist', 'three');
console.log(res6); // >>> 3
const res7 = await redis.lrange('mylist', 0, 0);
console.log(res7); // >>> ['one']
const res8 = await redis.lrange('mylist', -3, 2);
console.log(res8); // >>> ['one', 'two', 'three']
const res9 = await redis.lrange('mylist', -100, 100);
console.log(res9); // >>> ['one', 'two', 'three']
const res10 = await redis.lrange('mylist', 5, 10);
console.log(res10); // >>> []
import assert from 'node:assert';
import { Redis } from 'ioredis';
const redis = new Redis();
const res1 = await redis.lpush('mylist', 'world');
console.log(res1); // >>> 1
const res2 = await redis.lpush('mylist', 'hello');
console.log(res2); // >>> 2
const res3 = await redis.lrange('mylist', 0, -1);
console.log(res3); // >>> ['hello', 'world']
const res4 = await redis.rpush('mylist', 'one');
console.log(res4); // >>> 1
const res5 = await redis.rpush('mylist', 'two');
console.log(res5); // >>> 2
const res6 = await redis.rpush('mylist', 'three');
console.log(res6); // >>> 3
const res7 = await redis.lrange('mylist', 0, 0);
console.log(res7); // >>> ['one']
const res8 = await redis.lrange('mylist', -3, 2);
console.log(res8); // >>> ['one', 'two', 'three']
const res9 = await redis.lrange('mylist', -100, 100);
console.log(res9); // >>> ['one', 'two', 'three']
const res10 = await redis.lrange('mylist', 5, 10);
console.log(res10); // >>> []
const res11 = await redis.lpush('mylist', 'World');
console.log(res11); // >>> 1
const res12 = await redis.lpush('mylist', 'Hello');
console.log(res12); // >>> 2
const res13 = await redis.llen('mylist');
console.log(res13); // >>> 2
const res14 = await redis.rpush('mylist', 'hello');
console.log(res14); // >>> 1
const res15 = await redis.rpush('mylist', 'world');
console.log(res15); // >>> 2
const res16 = await redis.lrange('mylist', 0, -1);
console.log(res16); // >>> ['hello', 'world']
const res17 = await redis.rpush('mylist', 'one', 'two', 'three', 'four', 'five');
console.log(res17); // >>> 5
const res18 = await redis.lpop('mylist');
console.log(res18); // >>> one
const res19 = await redis.lpop('mylist', 2);
console.log(res19); // >>> ['two', 'three']
const res20 = await redis.lrange('mylist', 0, -1);
console.log(res20); // >>> ['four', 'five']
const res21 = await redis.rpush('mylist', 'one', 'two', 'three', 'four', 'five');
console.log(res21); // >>> 5
const res22 = await redis.rpop('mylist');
console.log(res22); // >>> five
const res23 = await redis.rpop('mylist', 2);
console.log(res23); // >>> ['four', 'three']
const res24 = await redis.lrange('mylist', 0, -1);
console.log(res24); // >>> ['one', 'two']
redis.disconnect();
long lRangeResult1 = jedis.rpush("mylist", "one", "two", "three");
System.out.println(lRangeResult1); // >>> 3
List<String> lRangeResult2 = jedis.lrange("mylist", 0, 0);
System.out.println(lRangeResult2); // >>> [one]
List<String> lRangeResult3 = jedis.lrange("mylist", -3, 2);
System.out.println(lRangeResult3); // >>> [one, two, three]
List<String> lRangeResult4 = jedis.lrange("mylist", -100, 100);
System.out.println(lRangeResult4); // >>> [one, two, three]
List<String> lRangeResult5 = jedis.lrange("mylist", 5, 10);
System.out.println(lRangeResult5); // >>> []
import java.util.List;
import redis.clients.jedis.RedisClient;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CmdsListExample {
public void run() {
RedisClient jedis = RedisClient.create("redis://localhost:6379");
long lLenResult1 = jedis.lpush("mylist", "World");
System.out.println(lLenResult1); // >>> 1
long lLenResult2 = jedis.lpush("mylist", "Hello");
System.out.println(lLenResult2); // >>> 2
long lLenResult3 = jedis.llen("mylist");
System.out.println(lLenResult3); // >>> 2
long lPopResult1 = jedis.rpush(
"mylist", "one", "two", "three", "four", "five"
);
System.out.println(lPopResult1); // >>> 5
String lPopResult2 = jedis.lpop("mylist");
System.out.println(lPopResult2); // >>> one
List<String> lPopResult3 = jedis.lpop("mylist", 2);
System.out.println(lPopResult3); // >>> [two, three]
List<String> lPopResult4 = jedis.lrange("mylist", 0, -1);
System.out.println(lPopResult4); // >>> [four, five]
long lPushResult1 = jedis.lpush("mylist", "World");
System.out.println(lPushResult1); // >>> 1
long lPushResult2 = jedis.lpush("mylist", "Hello");
System.out.println(lPushResult2); // >>> 2
List<String> lPushResult3 = jedis.lrange("mylist", 0, -1);
System.out.println(lPushResult3);
// >>> [Hello, World]
long lRangeResult1 = jedis.rpush("mylist", "one", "two", "three");
System.out.println(lRangeResult1); // >>> 3
List<String> lRangeResult2 = jedis.lrange("mylist", 0, 0);
System.out.println(lRangeResult2); // >>> [one]
List<String> lRangeResult3 = jedis.lrange("mylist", -3, 2);
System.out.println(lRangeResult3); // >>> [one, two, three]
List<String> lRangeResult4 = jedis.lrange("mylist", -100, 100);
System.out.println(lRangeResult4); // >>> [one, two, three]
List<String> lRangeResult5 = jedis.lrange("mylist", 5, 10);
System.out.println(lRangeResult5); // >>> []
long rPopResult1 = jedis.rpush(
"mylist", "one", "two", "three", "four", "five"
);
System.out.println(rPopResult1); // >>> 5
String rPopResult2 = jedis.rpop("mylist");
System.out.println(rPopResult2); // >>> five
List<String> rPopResult3 = jedis.rpop("mylist", 2);
System.out.println(rPopResult3); // >>> [four, three]
List<String> rPopResult4 = jedis.lrange("mylist", 0, -1);
System.out.println(rPopResult4); // >>> [one, two]
long rPushResult1 = jedis.rpush("mylist", "hello");
System.out.println(rPushResult1); // >>> 1
long rPushResult2 = jedis.rpush("mylist", "world");
System.out.println(rPushResult2); // >>> 2
List<String> rPushResult3 = jedis.lrange("mylist", 0, -1);
System.out.println(rPushResult3); // >>> [hello, world]
jedis.close();
}
}
CompletableFuture<Void> lrange = asyncCommands.rpush("mylist", "one").thenCompose(res4 -> {
System.out.println(res4); // >>> 1
return asyncCommands.rpush("mylist", "two");
}).thenCompose(res5 -> {
System.out.println(res5); // >>> 2
return asyncCommands.rpush("mylist", "three");
}).thenCompose(res6 -> {
System.out.println(res6); // >>> 3
return asyncCommands.lrange("mylist", 0, 0);
}).thenCompose(res7 -> {
System.out.println(res7); // >>> [one]
return asyncCommands.lrange("mylist", -3, 2);
}).thenCompose(res8 -> {
System.out.println(res8); // >>> [one, two, three]
return asyncCommands.lrange("mylist", -100, 100);
}).thenCompose(res9 -> {
System.out.println(res9); // >>> [one, two, three]
return asyncCommands.lrange("mylist", 5, 10);
})
.thenAccept(res10 -> System.out.println(res10)) // >>> []
.toCompletableFuture();
package io.redis.examples.async;
import io.lettuce.core.*;
import io.lettuce.core.api.async.RedisAsyncCommands;
import io.lettuce.core.api.StatefulRedisConnection;
import java.util.concurrent.CompletableFuture;
public class CmdsListExample {
public void run() {
RedisClient redisClient = RedisClient.create("redis://localhost:6379");
try (StatefulRedisConnection<String, String> connection = redisClient.connect()) {
RedisAsyncCommands<String, String> asyncCommands = connection.async();
CompletableFuture<Void> lpush = asyncCommands.lpush("mylist", "world").thenCompose(res1 -> {
System.out.println(res1); // >>> 1
return asyncCommands.lpush("mylist", "hello");
}).thenCompose(res2 -> {
System.out.println(res2); // >>> 2
return asyncCommands.lrange("mylist", 0, -1);
})
.thenAccept(res3 -> System.out.println(res3)) // >>> [hello, world]
.toCompletableFuture();
lpush.join();
CompletableFuture<Void> lrange = asyncCommands.rpush("mylist", "one").thenCompose(res4 -> {
System.out.println(res4); // >>> 1
return asyncCommands.rpush("mylist", "two");
}).thenCompose(res5 -> {
System.out.println(res5); // >>> 2
return asyncCommands.rpush("mylist", "three");
}).thenCompose(res6 -> {
System.out.println(res6); // >>> 3
return asyncCommands.lrange("mylist", 0, 0);
}).thenCompose(res7 -> {
System.out.println(res7); // >>> [one]
return asyncCommands.lrange("mylist", -3, 2);
}).thenCompose(res8 -> {
System.out.println(res8); // >>> [one, two, three]
return asyncCommands.lrange("mylist", -100, 100);
}).thenCompose(res9 -> {
System.out.println(res9); // >>> [one, two, three]
return asyncCommands.lrange("mylist", 5, 10);
})
.thenAccept(res10 -> System.out.println(res10)) // >>> []
.toCompletableFuture();
lrange.join();
CompletableFuture<Void> llen = asyncCommands.lpush("mylist", "World").thenCompose(res11 -> {
System.out.println(res11); // >>> 1
return asyncCommands.lpush("mylist", "Hello");
}).thenCompose(res12 -> {
System.out.println(res12); // >>> 2
return asyncCommands.llen("mylist");
})
.thenAccept(res13 -> System.out.println(res13)) // >>> 2
.toCompletableFuture();
llen.join();
CompletableFuture<Void> rpush = asyncCommands.rpush("mylist", "hello").thenCompose(res14 -> {
System.out.println(res14); // >>> 1
return asyncCommands.rpush("mylist", "world");
}).thenCompose(res15 -> {
System.out.println(res15); // >>> 2
return asyncCommands.lrange("mylist", 0, -1);
})
.thenAccept(res16 -> System.out.println(res16)) // >>> [hello, world]
.toCompletableFuture();
rpush.join();
CompletableFuture<Void> lpop = asyncCommands.rpush("mylist", "one", "two", "three", "four", "five")
.thenCompose(res17 -> {
System.out.println(res17); // >>> 5
return asyncCommands.lpop("mylist");
}).thenCompose(res18 -> {
System.out.println(res18); // >>> one
return asyncCommands.lpop("mylist", 2);
}).thenCompose(res19 -> {
System.out.println(res19); // >>> [two, three]
return asyncCommands.lrange("mylist", 0, -1);
})
.thenAccept(res17_final -> System.out.println(res17_final)) // >>> [four, five]
.toCompletableFuture();
lpop.join();
CompletableFuture<Void> rpop = asyncCommands.rpush("mylist", "one", "two", "three", "four", "five")
.thenCompose(res18 -> {
System.out.println(res18); // >>> 5
return asyncCommands.rpop("mylist");
}).thenCompose(res19 -> {
System.out.println(res19); // >>> five
return asyncCommands.rpop("mylist", 2);
}).thenCompose(res20 -> {
System.out.println(res20); // >>> [four, three]
return asyncCommands.lrange("mylist", 0, -1);
})
.thenAccept(res21 -> System.out.println(res21)) // >>> [one, two]
.toCompletableFuture();
rpop.join();
} finally {
redisClient.shutdown();
}
}
}
Mono<Void> lrange = reactiveCommands.rpush("mylist", "one").doOnNext(res4 -> {
System.out.println(res4); // >>> 1
}).flatMap(res4 -> reactiveCommands.rpush("mylist", "two")).doOnNext(res5 -> {
System.out.println(res5); // >>> 2
}).flatMap(res5 -> reactiveCommands.rpush("mylist", "three")).doOnNext(res6 -> {
System.out.println(res6); // >>> 3
}).flatMap(res6 -> reactiveCommands.lrange("mylist", 0, 0).collectList()).doOnNext(res7 -> {
System.out.println(res7); // >>> [one]
}).flatMap(res7 -> reactiveCommands.lrange("mylist", -3, 2).collectList()).doOnNext(res8 -> {
System.out.println(res8); // >>> [one, two, three]
}).flatMap(res8 -> reactiveCommands.lrange("mylist", -100, 100).collectList()).doOnNext(res9 -> {
System.out.println(res9); // >>> [one, two, three]
}).flatMap(res9 -> reactiveCommands.lrange("mylist", 5, 10).collectList()).doOnNext(res10 -> {
System.out.println(res10); // >>> []
}).then();
package io.redis.examples.reactive;
import io.lettuce.core.*;
import io.lettuce.core.api.reactive.RedisReactiveCommands;
import io.lettuce.core.api.StatefulRedisConnection;
import reactor.core.publisher.Mono;
public class CmdsListExample {
public void run() {
RedisClient redisClient = RedisClient.create("redis://localhost:6379");
try (StatefulRedisConnection<String, String> connection = redisClient.connect()) {
RedisReactiveCommands<String, String> reactiveCommands = connection.reactive();
Mono<Void> lpush = reactiveCommands.lpush("mylist", "world").doOnNext(res1 -> {
System.out.println(res1); // >>> 1
}).flatMap(res1 -> reactiveCommands.lpush("mylist", "hello")).doOnNext(res2 -> {
System.out.println(res2); // >>> 2
}).flatMap(res2 -> reactiveCommands.lrange("mylist", 0, -1).collectList()).doOnNext(res3 -> {
System.out.println(res3); // >>> [hello, world]
}).then();
lpush.block();
reactiveCommands.del("mylist").block();
Mono<Void> lrange = reactiveCommands.rpush("mylist", "one").doOnNext(res4 -> {
System.out.println(res4); // >>> 1
}).flatMap(res4 -> reactiveCommands.rpush("mylist", "two")).doOnNext(res5 -> {
System.out.println(res5); // >>> 2
}).flatMap(res5 -> reactiveCommands.rpush("mylist", "three")).doOnNext(res6 -> {
System.out.println(res6); // >>> 3
}).flatMap(res6 -> reactiveCommands.lrange("mylist", 0, 0).collectList()).doOnNext(res7 -> {
System.out.println(res7); // >>> [one]
}).flatMap(res7 -> reactiveCommands.lrange("mylist", -3, 2).collectList()).doOnNext(res8 -> {
System.out.println(res8); // >>> [one, two, three]
}).flatMap(res8 -> reactiveCommands.lrange("mylist", -100, 100).collectList()).doOnNext(res9 -> {
System.out.println(res9); // >>> [one, two, three]
}).flatMap(res9 -> reactiveCommands.lrange("mylist", 5, 10).collectList()).doOnNext(res10 -> {
System.out.println(res10); // >>> []
}).then();
lrange.block();
reactiveCommands.del("mylist").block();
Mono<Void> llen = reactiveCommands.lpush("mylist", "World").doOnNext(res11 -> {
System.out.println(res11); // >>> 1
}).flatMap(res11 -> reactiveCommands.lpush("mylist", "Hello")).doOnNext(res12 -> {
System.out.println(res12); // >>> 2
}).flatMap(res12 -> reactiveCommands.llen("mylist")).doOnNext(res13 -> {
System.out.println(res13); // >>> 2
}).then();
llen.block();
reactiveCommands.del("mylist").block();
Mono<Void> rpush = reactiveCommands.rpush("mylist", "hello").doOnNext(res14 -> {
System.out.println(res14); // >>> 1
}).flatMap(res14 -> reactiveCommands.rpush("mylist", "world")).doOnNext(res15 -> {
System.out.println(res15); // >>> 2
}).flatMap(res15 -> reactiveCommands.lrange("mylist", 0, -1).collectList()).doOnNext(res16 -> {
System.out.println(res16); // >>> [hello, world]
}).then();
rpush.block();
reactiveCommands.del("mylist").block();
Mono<Void> lpop = reactiveCommands.rpush("mylist", "one", "two", "three", "four", "five").doOnNext(res17 -> {
System.out.println(res17); // >>> 5
}).flatMap(res17 -> reactiveCommands.lpop("mylist")).doOnNext(res18 -> {
System.out.println(res18); // >>> one
}).flatMap(res18 -> reactiveCommands.lpop("mylist", 2).collectList()).doOnNext(res19 -> {
System.out.println(res19); // >>> [two, three]
}).flatMap(res19 -> reactiveCommands.lrange("mylist", 0, -1).collectList()).doOnNext(res17_final -> {
System.out.println(res17_final); // >>> [four, five]
}).then();
lpop.block();
reactiveCommands.del("mylist").block();
Mono<Void> rpop = reactiveCommands.rpush("mylist", "one", "two", "three", "four", "five").doOnNext(res18 -> {
System.out.println(res18); // >>> 5
}).flatMap(res18 -> reactiveCommands.rpop("mylist")).doOnNext(res19 -> {
System.out.println(res19); // >>> five
}).flatMap(res19 -> reactiveCommands.rpop("mylist", 2).collectList()).doOnNext(res20 -> {
System.out.println(res20); // >>> [four, three]
}).flatMap(res20 -> reactiveCommands.lrange("mylist", 0, -1).collectList()).doOnNext(res21 -> {
System.out.println(res21); // >>> [one, two]
}).then();
rpop.block();
reactiveCommands.del("mylist").block();
} finally {
redisClient.shutdown();
}
}
}
RPushResult, err := rdb.RPush(ctx, "mylist",
"one", "two", "three",
).Result()
if err != nil {
panic(err)
}
fmt.Println(RPushResult) // >>> 3
lRangeResult1, err := rdb.LRange(ctx, "mylist", 0, 0).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult1) // >>> [one]
lRangeResult2, err := rdb.LRange(ctx, "mylist", -3, 2).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult2) // >>> [one two three]
lRangeResult3, err := rdb.LRange(ctx, "mylist", -100, 100).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult3) // >>> [one two three]
lRangeResult4, err := rdb.LRange(ctx, "mylist", 5, 10).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult4) // >>> []
package example_commands_test
import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
)
func ExampleClient_cmd_llen() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
lPushResult1, err := rdb.LPush(ctx, "mylist", "World").Result()
if err != nil {
panic(err)
}
fmt.Println(lPushResult1) // >>> 1
lPushResult2, err := rdb.LPush(ctx, "mylist", "Hello").Result()
if err != nil {
panic(err)
}
fmt.Println(lPushResult2) // >>> 2
lLenResult, err := rdb.LLen(ctx, "mylist").Result()
if err != nil {
panic(err)
}
fmt.Println(lLenResult) // >>> 2
}
func ExampleClient_cmd_lpop() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
RPushResult, err := rdb.RPush(ctx,
"mylist", "one", "two", "three", "four", "five",
).Result()
if err != nil {
panic(err)
}
fmt.Println(RPushResult) // >>> 5
lPopResult, err := rdb.LPop(ctx, "mylist").Result()
if err != nil {
panic(err)
}
fmt.Println(lPopResult) // >>> one
lPopCountResult, err := rdb.LPopCount(ctx, "mylist", 2).Result()
if err != nil {
panic(err)
}
fmt.Println(lPopCountResult) // >>> [two three]
lRangeResult, err := rdb.LRange(ctx, "mylist", 0, -1).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult) // >>> [four five]
}
func ExampleClient_cmd_lpush() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
lPushResult1, err := rdb.LPush(ctx, "mylist", "World").Result()
if err != nil {
panic(err)
}
fmt.Println(lPushResult1) // >>> 1
lPushResult2, err := rdb.LPush(ctx, "mylist", "Hello").Result()
if err != nil {
panic(err)
}
fmt.Println(lPushResult2) // >>> 2
lRangeResult, err := rdb.LRange(ctx, "mylist", 0, -1).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult) // >>> [Hello World]
}
func ExampleClient_cmd_lrange() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
RPushResult, err := rdb.RPush(ctx, "mylist",
"one", "two", "three",
).Result()
if err != nil {
panic(err)
}
fmt.Println(RPushResult) // >>> 3
lRangeResult1, err := rdb.LRange(ctx, "mylist", 0, 0).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult1) // >>> [one]
lRangeResult2, err := rdb.LRange(ctx, "mylist", -3, 2).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult2) // >>> [one two three]
lRangeResult3, err := rdb.LRange(ctx, "mylist", -100, 100).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult3) // >>> [one two three]
lRangeResult4, err := rdb.LRange(ctx, "mylist", 5, 10).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult4) // >>> []
}
func ExampleClient_cmd_rpop() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
rPushResult, err := rdb.RPush(ctx, "mylist",
"one", "two", "three", "four", "five",
).Result()
if err != nil {
panic(err)
}
fmt.Println(rPushResult) // >>> 5
rPopResult, err := rdb.RPop(ctx, "mylist").Result()
if err != nil {
panic(err)
}
fmt.Println(rPopResult) // >>> five
rPopCountResult, err := rdb.RPopCount(ctx, "mylist", 2).Result()
if err != nil {
panic(err)
}
fmt.Println(rPopCountResult) // >>> [four three]
lRangeResult, err := rdb.LRange(ctx, "mylist", 0, -1).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult) // >>> [one two]
}
func ExampleClient_cmd_rpush() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
rPushResult1, err := rdb.RPush(ctx, "mylist", "Hello").Result()
if err != nil {
panic(err)
}
fmt.Println(rPushResult1) // >>> 1
rPushResult2, err := rdb.RPush(ctx, "mylist", "World").Result()
if err != nil {
panic(err)
}
fmt.Println(rPushResult2) // >>> 2
lRangeResult, err := rdb.LRange(ctx, "mylist", 0, -1).Result()
if err != nil {
panic(err)
}
fmt.Println(lRangeResult) // >>> [Hello World]
}
long lRangeResult1 = db.ListRightPush("mylist", ["one", "two", "three"]);
Console.WriteLine(lRangeResult1); // >>> 3
RedisValue[] lRangeResult2 = db.ListRange("mylist", 0, 0);
Console.WriteLine($"[{string.Join(", ", lRangeResult2)}]");
// >>> [one]
RedisValue[] lRangeResult3 = db.ListRange("mylist", -3, 2);
Console.WriteLine($"[{string.Join(", ", lRangeResult3)}]");
// >>> [one, two, three]
RedisValue[] lRangeResult4 = db.ListRange("mylist", -100, 100);
Console.WriteLine($"[{string.Join(", ", lRangeResult4)}]");
// >>> [one, two, three]
RedisValue[] lRangeResult5 = db.ListRange("mylist", 5, 10);
Console.WriteLine($"[{string.Join(", ", lRangeResult5)}]");
// >>> []
using NRedisStack.Tests;
using StackExchange.Redis;
public class CmdsListExample
{
public void Run()
{
var muxer = ConnectionMultiplexer.Connect("localhost:6379");
var db = muxer.GetDatabase();
long lLenResult1 = db.ListLeftPush("mylist", "World");
Console.WriteLine(lLenResult1); // >>> 1
long lLenResult2 = db.ListLeftPush("mylist", "Hello");
Console.WriteLine(lLenResult2); // >>> 2
long lLenResult3 = db.ListLength("mylist");
Console.WriteLine(lLenResult3); // >>> 2
// Tests for 'llen' step.
long lPopResult1 = db.ListRightPush("mylist", ["one", "two", "three", "four", "five"]);
Console.WriteLine(lPopResult1); // >>> 5
RedisValue lPopResult2 = db.ListLeftPop("mylist");
Console.WriteLine(lPopResult2); // >>> one
RedisValue[] lPopResult3 = db.ListLeftPop("mylist", 2);
Console.WriteLine($"[{string.Join(", ", lPopResult3)}]");
// >>> [two, three]
RedisValue[] lPopResult4 = db.ListRange("mylist", 0, -1);
Console.WriteLine($"[{string.Join(", ", lPopResult4)}]");
// >>> [four, five]
// Tests for 'lpop' step.
long lPushResult1 = db.ListLeftPush("mylist", "World");
Console.WriteLine(lPushResult1); // >>> 1
long lPushResult2 = db.ListLeftPush("mylist", "Hello");
Console.WriteLine(lPushResult2); // >>> 2
RedisValue[] lPushResult3 = db.ListRange("mylist", 0, -1);
Console.WriteLine($"[{string.Join(", ", lPushResult3)}]");
// >>> [Hello, World]
// Tests for 'lpush' step.
long lRangeResult1 = db.ListRightPush("mylist", ["one", "two", "three"]);
Console.WriteLine(lRangeResult1); // >>> 3
RedisValue[] lRangeResult2 = db.ListRange("mylist", 0, 0);
Console.WriteLine($"[{string.Join(", ", lRangeResult2)}]");
// >>> [one]
RedisValue[] lRangeResult3 = db.ListRange("mylist", -3, 2);
Console.WriteLine($"[{string.Join(", ", lRangeResult3)}]");
// >>> [one, two, three]
RedisValue[] lRangeResult4 = db.ListRange("mylist", -100, 100);
Console.WriteLine($"[{string.Join(", ", lRangeResult4)}]");
// >>> [one, two, three]
RedisValue[] lRangeResult5 = db.ListRange("mylist", 5, 10);
Console.WriteLine($"[{string.Join(", ", lRangeResult5)}]");
// >>> []
// Tests for 'lrange' step.
long rPopResult1 = db.ListRightPush("mylist", ["one", "two", "three", "four", "five"]);
Console.WriteLine(rPopResult1); // >>> 5
RedisValue rPopResult2 = db.ListRightPop("mylist");
Console.WriteLine(rPopResult2); // >>> five
RedisValue[] rPopResult3 = db.ListRightPop("mylist", 2);
Console.WriteLine($"[{string.Join(", ", rPopResult3)}]");
// >>> [four, three]
RedisValue[] rPopResult4 = db.ListRange("mylist", 0, -1);
Console.WriteLine($"[{string.Join(", ", rPopResult4)}]");
// >>> [one, two]
// Tests for 'rpop' step.
long rPushResult1 = db.ListRightPush("mylist", "hello");
Console.WriteLine(rPushResult1); // >>> 1
long rPushResult2 = db.ListRightPush("mylist", "world");
Console.WriteLine(rPushResult2); // >>> 2
RedisValue[] rPushResult3 = db.ListRange("mylist", 0, -1);
Console.WriteLine($"[{string.Join(", ", rPushResult3)}]");
// >>> [hello, world]
// Tests for 'rpush' step.
}
}
$res4 = $r->rpush('mylist', 'one');
echo $res4 . PHP_EOL;
// >>> 1
$res5 = $r->rpush('mylist', 'two');
echo $res5 . PHP_EOL;
// >>> 2
$res6 = $r->rpush('mylist', 'three');
echo $res6 . PHP_EOL;
// >>> 3
$res7 = $r->lrange('mylist', 0, 0);
echo json_encode($res7) . PHP_EOL;
// >>> ["one"]
$res8 = $r->lrange('mylist', -3, 2);
echo json_encode($res8) . PHP_EOL;
// >>> ["one","two","three"]
$res9 = $r->lrange('mylist', -100, 100);
echo json_encode($res9) . PHP_EOL;
// >>> ["one","two","three"]
$res10 = $r->lrange('mylist', 5, 10);
echo json_encode($res10) . PHP_EOL;
// >>> []
<?php
require 'vendor/autoload.php';
use Predis\Client as PredisClient;
class CmdListTest
{
public function testCmdList() {
$r = new PredisClient([
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'database' => 0,
]);
$res1 = $r->lpush('mylist', 'world');
echo $res1 . PHP_EOL;
// >>> 1
$res2 = $r->lpush('mylist', 'hello');
echo $res2 . PHP_EOL;
// >>> 2
$res3 = $r->lrange('mylist', 0, -1);
echo json_encode($res3) . PHP_EOL;
// >>> ["hello","world"]
$res4 = $r->rpush('mylist', 'one');
echo $res4 . PHP_EOL;
// >>> 1
$res5 = $r->rpush('mylist', 'two');
echo $res5 . PHP_EOL;
// >>> 2
$res6 = $r->rpush('mylist', 'three');
echo $res6 . PHP_EOL;
// >>> 3
$res7 = $r->lrange('mylist', 0, 0);
echo json_encode($res7) . PHP_EOL;
// >>> ["one"]
$res8 = $r->lrange('mylist', -3, 2);
echo json_encode($res8) . PHP_EOL;
// >>> ["one","two","three"]
$res9 = $r->lrange('mylist', -100, 100);
echo json_encode($res9) . PHP_EOL;
// >>> ["one","two","three"]
$res10 = $r->lrange('mylist', 5, 10);
echo json_encode($res10) . PHP_EOL;
// >>> []
$res11 = $r->lpush('mylist', 'World');
echo $res11 . PHP_EOL;
// >>> 1
$res12 = $r->lpush('mylist', 'Hello');
echo $res12 . PHP_EOL;
// >>> 2
$res13 = $r->llen('mylist');
echo $res13 . PHP_EOL;
// >>> 2
$res14 = $r->rpush('mylist', 'hello');
echo $res14 . PHP_EOL;
// >>> 1
$res15 = $r->rpush('mylist', 'world');
echo $res15 . PHP_EOL;
// >>> 2
$res16 = $r->lrange('mylist', 0, -1);
echo json_encode($res16) . PHP_EOL;
// >>> ["hello","world"]
$res17 = $r->rpush('mylist', 'one', 'two', 'three', 'four', 'five');
echo $res17 . PHP_EOL;
// >>> 5
$res18 = $r->lpop('mylist');
echo $res18 . PHP_EOL;
// >>> one
$res19 = $r->lpop('mylist', 2);
echo json_encode($res19) . PHP_EOL;
// >>> ["two","three"]
$res20 = $r->lrange('mylist', 0, -1);
echo json_encode($res20) . PHP_EOL;
// >>> ["four","five"]
$res21 = $r->rpush('mylist', 'one', 'two', 'three', 'four', 'five');
echo $res21 . PHP_EOL;
// >>> 5
$res22 = $r->rpop('mylist');
echo $res22 . PHP_EOL;
// >>> five
$res23 = $r->rpop('mylist', 2);
echo json_encode($res23) . PHP_EOL;
// >>> ["four","three"]
$res24 = $r->lrange('mylist', 0, -1);
echo json_encode($res24) . PHP_EOL;
// >>> ["one","two"]
}
}
res4 = r.rpush('mylist', 'one')
puts res4 # >>> 1
res5 = r.rpush('mylist', 'two')
puts res5 # >>> 2
res6 = r.rpush('mylist', 'three')
puts res6 # >>> 3
res7 = r.lrange('mylist', 0, 0)
puts res7.inspect # >>> ["one"]
res8 = r.lrange('mylist', -3, 2)
puts res8.inspect # >>> ["one", "two", "three"]
res9 = r.lrange('mylist', -100, 100)
puts res9.inspect # >>> ["one", "two", "three"]
res10 = r.lrange('mylist', 5, 10)
puts res10.inspect # >>> []
require 'redis'
r = Redis.new
res1 = r.lpush('mylist', 'world')
puts res1 # >>> 1
res2 = r.lpush('mylist', 'hello')
puts res2 # >>> 2
res3 = r.lrange('mylist', 0, -1)
puts res3.inspect # >>> ["hello", "world"]
res4 = r.rpush('mylist', 'one')
puts res4 # >>> 1
res5 = r.rpush('mylist', 'two')
puts res5 # >>> 2
res6 = r.rpush('mylist', 'three')
puts res6 # >>> 3
res7 = r.lrange('mylist', 0, 0)
puts res7.inspect # >>> ["one"]
res8 = r.lrange('mylist', -3, 2)
puts res8.inspect # >>> ["one", "two", "three"]
res9 = r.lrange('mylist', -100, 100)
puts res9.inspect # >>> ["one", "two", "three"]
res10 = r.lrange('mylist', 5, 10)
puts res10.inspect # >>> []
res11 = r.lpush('mylist', 'World')
puts res11 # >>> 1
res12 = r.lpush('mylist', 'Hello')
puts res12 # >>> 2
res13 = r.llen('mylist')
puts res13 # >>> 2
res14 = r.rpush('mylist', 'hello')
puts res14 # >>> 1
res15 = r.rpush('mylist', 'world')
puts res15 # >>> 2
res16 = r.lrange('mylist', 0, -1)
puts res16.inspect # >>> ["hello", "world"]
res17 = r.rpush('mylist', ['one', 'two', 'three', 'four', 'five'])
puts res17 # >>> 5
res18 = r.lpop('mylist')
puts res18 # >>> one
res19 = r.lpop('mylist', 2)
puts res19.inspect # >>> ["two", "three"]
res20 = r.lrange('mylist', 0, -1)
puts res20.inspect # >>> ["four", "five"]
res21 = r.rpush('mylist', ['one', 'two', 'three', 'four', 'five'])
puts res21 # >>> 5
res22 = r.rpop('mylist')
puts res22 # >>> five
res23 = r.rpop('mylist', 2)
puts res23.inspect # >>> ["four", "three"]
res24 = r.lrange('mylist', 0, -1)
puts res24.inspect # >>> ["one", "two"]
let _: Result<i32, _> = r.rpush("mylist", "one");
let _: Result<i32, _> = r.rpush("mylist", "two");
let _: Result<i32, _> = r.rpush("mylist", "three");
if let Ok(res7) = r.lrange("mylist", 0, 0) {
let res7: Vec<String> = res7;
println!("{res7:?}"); // >>> ["one"]
}
if let Ok(res8) = r.lrange("mylist", -3, 2) {
let res8: Vec<String> = res8;
println!("{res8:?}"); // >>> ["one", "two", "three"]
}
if let Ok(res9) = r.lrange("mylist", -100, 100) {
let res9: Vec<String> = res9;
println!("{res9:?}"); // >>> ["one", "two", "three"]
}
if let Ok(res10) = r.lrange("mylist", 5, 10) {
let res10: Vec<String> = res10;
println!("{res10:?}"); // >>> []
}
mod cmds_list_tests {
use redis::Commands;
use std::num::NonZeroUsize;
fn run() {
let mut r = match redis::Client::open("redis://127.0.0.1") {
Ok(client) => match client.get_connection() {
Ok(conn) => conn,
Err(e) => {
println!("Failed to connect to Redis: {e}");
return;
}
},
Err(e) => {
println!("Failed to create Redis client: {e}");
return;
}
};
if let Ok(res1) = r.lpush("mylist", "world") {
let res1: i32 = res1;
println!("{res1}"); // >>> 1
}
if let Ok(res2) = r.lpush("mylist", "hello") {
let res2: i32 = res2;
println!("{res2}"); // >>> 2
}
if let Ok(res3) = r.lrange("mylist", 0, -1) {
let res3: Vec<String> = res3;
println!("{res3:?}"); // >>> ["hello", "world"]
}
let _: Result<i32, _> = r.rpush("mylist", "one");
let _: Result<i32, _> = r.rpush("mylist", "two");
let _: Result<i32, _> = r.rpush("mylist", "three");
if let Ok(res7) = r.lrange("mylist", 0, 0) {
let res7: Vec<String> = res7;
println!("{res7:?}"); // >>> ["one"]
}
if let Ok(res8) = r.lrange("mylist", -3, 2) {
let res8: Vec<String> = res8;
println!("{res8:?}"); // >>> ["one", "two", "three"]
}
if let Ok(res9) = r.lrange("mylist", -100, 100) {
let res9: Vec<String> = res9;
println!("{res9:?}"); // >>> ["one", "two", "three"]
}
if let Ok(res10) = r.lrange("mylist", 5, 10) {
let res10: Vec<String> = res10;
println!("{res10:?}"); // >>> []
}
if let Ok(res11) = r.lpush("mylist", "World") {
let res11: i32 = res11;
println!("{res11}"); // >>> 1
}
if let Ok(res12) = r.lpush("mylist", "Hello") {
let res12: i32 = res12;
println!("{res12}"); // >>> 2
}
if let Ok(res13) = r.llen("mylist") {
let res13: i32 = res13;
println!("{res13}"); // >>> 2
}
if let Ok(res14) = r.rpush("mylist", "hello") {
let res14: i32 = res14;
println!("{res14}"); // >>> 1
}
if let Ok(res15) = r.rpush("mylist", "world") {
let res15: i32 = res15;
println!("{res15}"); // >>> 2
}
if let Ok(res16) = r.lrange("mylist", 0, -1) {
let res16: Vec<String> = res16;
println!("{res16:?}"); // >>> ["hello", "world"]
}
if let Ok(res17) = r.rpush("mylist", &["one", "two", "three", "four", "five"]) {
let res17: i32 = res17;
println!("{res17}"); // >>> 5
}
if let Ok(res18) = r.lpop("mylist", None) {
let res18: String = res18;
println!("{res18}"); // >>> one
}
if let Ok(res19) = r.lpop("mylist", NonZeroUsize::new(2)) {
let res19: Vec<String> = res19;
println!("{res19:?}"); // >>> ["two", "three"]
}
if let Ok(res20) = r.lrange("mylist", 0, -1) {
let res20: Vec<String> = res20;
println!("{res20:?}"); // >>> ["four", "five"]
}
if let Ok(res21) = r.rpush("mylist", &["one", "two", "three", "four", "five"]) {
let res21: i32 = res21;
println!("{res21}"); // >>> 5
}
if let Ok(res22) = r.rpop("mylist", None) {
let res22: String = res22;
println!("{res22}"); // >>> five
}
if let Ok(res23) = r.rpop("mylist", NonZeroUsize::new(2)) {
let res23: Vec<String> = res23;
println!("{res23:?}"); // >>> ["four", "three"]
}
if let Ok(res24) = r.lrange("mylist", 0, -1) {
let res24: Vec<String> = res24;
println!("{res24:?}"); // >>> ["one", "two"]
}
}
}
let _: Result<i32, _> = r.rpush("mylist", "one").await;
let _: Result<i32, _> = r.rpush("mylist", "two").await;
let _: Result<i32, _> = r.rpush("mylist", "three").await;
if let Ok(res7) = r.lrange("mylist", 0, 0).await {
let res7: Vec<String> = res7;
println!("{res7:?}"); // >>> ["one"]
}
if let Ok(res8) = r.lrange("mylist", -3, 2).await {
let res8: Vec<String> = res8;
println!("{res8:?}"); // >>> ["one", "two", "three"]
}
if let Ok(res9) = r.lrange("mylist", -100, 100).await {
let res9: Vec<String> = res9;
println!("{res9:?}"); // >>> ["one", "two", "three"]
}
if let Ok(res10) = r.lrange("mylist", 5, 10).await {
let res10: Vec<String> = res10;
println!("{res10:?}"); // >>> []
}
mod cmds_list_tests {
use redis::AsyncCommands;
use std::num::NonZeroUsize;
async fn run() {
let mut r = match redis::Client::open("redis://127.0.0.1") {
Ok(client) => match client.get_multiplexed_async_connection().await {
Ok(conn) => conn,
Err(e) => {
println!("Failed to connect to Redis: {e}");
return;
}
},
Err(e) => {
println!("Failed to create Redis client: {e}");
return;
}
};
if let Ok(res1) = r.lpush("mylist", "world").await {
let res1: i32 = res1;
println!("{res1}"); // >>> 1
}
if let Ok(res2) = r.lpush("mylist", "hello").await {
let res2: i32 = res2;
println!("{res2}"); // >>> 2
}
if let Ok(res3) = r.lrange("mylist", 0, -1).await {
let res3: Vec<String> = res3;
println!("{res3:?}"); // >>> ["hello", "world"]
}
let _: Result<i32, _> = r.rpush("mylist", "one").await;
let _: Result<i32, _> = r.rpush("mylist", "two").await;
let _: Result<i32, _> = r.rpush("mylist", "three").await;
if let Ok(res7) = r.lrange("mylist", 0, 0).await {
let res7: Vec<String> = res7;
println!("{res7:?}"); // >>> ["one"]
}
if let Ok(res8) = r.lrange("mylist", -3, 2).await {
let res8: Vec<String> = res8;
println!("{res8:?}"); // >>> ["one", "two", "three"]
}
if let Ok(res9) = r.lrange("mylist", -100, 100).await {
let res9: Vec<String> = res9;
println!("{res9:?}"); // >>> ["one", "two", "three"]
}
if let Ok(res10) = r.lrange("mylist", 5, 10).await {
let res10: Vec<String> = res10;
println!("{res10:?}"); // >>> []
}
if let Ok(res11) = r.lpush("mylist", "World").await {
let res11: i32 = res11;
println!("{res11}"); // >>> 1
}
if let Ok(res12) = r.lpush("mylist", "Hello").await {
let res12: i32 = res12;
println!("{res12}"); // >>> 2
}
if let Ok(res13) = r.llen("mylist").await {
let res13: i32 = res13;
println!("{res13}"); // >>> 2
}
if let Ok(res14) = r.rpush("mylist", "hello").await {
let res14: i32 = res14;
println!("{res14}"); // >>> 1
}
if let Ok(res15) = r.rpush("mylist", "world").await {
let res15: i32 = res15;
println!("{res15}"); // >>> 2
}
if let Ok(res16) = r.lrange("mylist", 0, -1).await {
let res16: Vec<String> = res16;
println!("{res16:?}"); // >>> ["hello", "world"]
}
if let Ok(res17) = r.rpush("mylist", &["one", "two", "three", "four", "five"]).await {
let res17: i32 = res17;
println!("{res17}"); // >>> 5
}
if let Ok(res18) = r.lpop("mylist", None).await {
let res18: String = res18;
println!("{res18}"); // >>> one
}
if let Ok(res19) = r.lpop("mylist", NonZeroUsize::new(2)).await {
let res19: Vec<String> = res19;
println!("{res19:?}"); // >>> ["two", "three"]
}
if let Ok(res20) = r.lrange("mylist", 0, -1).await {
let res20: Vec<String> = res20;
println!("{res20:?}"); // >>> ["four", "five"]
}
if let Ok(res21) = r.rpush("mylist", &["one", "two", "three", "four", "five"]).await {
let res21: i32 = res21;
println!("{res21}"); // >>> 5
}
if let Ok(res22) = r.rpop("mylist", None).await {
let res22: String = res22;
println!("{res22}"); // >>> five
}
if let Ok(res23) = r.rpop("mylist", NonZeroUsize::new(2)).await {
let res23: Vec<String> = res23;
println!("{res23:?}"); // >>> ["four", "three"]
}
if let Ok(res24) = r.lrange("mylist", 0, -1).await {
let res24: Vec<String> = res24;
println!("{res24:?}"); // >>> ["one", "two"]
}
}
}
Details
Consistency with range functions in various programming languages
Note that if you have a list of numbers from 0 to 100, LRANGE list 0 10 will
return 11 elements, that is, the rightmost item is included.
This may or may not be consistent with the behavior of range-related functions
in your programming language of choice (think Ruby's Range.new, Array#slice
or Python's range() function).
Out-of-range indexes
Out of range indexes will not produce an error.
If start is larger than the end of the list, an empty list is returned.
If stop is larger than the actual end of the list, Redis will treat it like
the last element of the list.
Redis Software and Redis Cloud compatibility
| Redis Software |
Redis Cloud |
Notes |
|---|---|---|
| ✅ Standard |
✅ Standard |