SMEMBERS
SMEMBERS key
- Available since:
- Redis Open Source 1.0.0
- Time complexity:
- O(N) where N is the set cardinality.
- ACL categories:
-
@read,@set,@slow, - Compatibility:
- Redis Software and Redis Cloud compatibility
Returns all the members of the set value stored at key.
This has the same effect as running SINTER with one argument key.
Required arguments
key
The name of the key that holds the set.
Examples
Foundational: Retrieve all members of a set using SMEMBERS (returns unordered collection, useful for iterating all set members)
res4 = r.sadd("myset", "Hello", "World")
print(res4) # >>> 2
res5 = r.smembers("myset")
print(res5) # >>> {'Hello', 'World'}
import redis
r = redis.Redis(decode_responses=True)
res1 = r.sadd("myset", "Hello", "World")
print(res1) # >>> 2
res2 = r.sadd("myset", "World")
print(res2) # >>> 0
res3 = r.smembers("myset")
print(res3) # >>> {'Hello', 'World'}
res4 = r.sadd("myset", "Hello", "World")
print(res4) # >>> 2
res5 = r.smembers("myset")
print(res5) # >>> {'Hello', 'World'}
const res4 = await client.sAdd('myset', ['Hello', 'World']);
console.log(res4); // 2
const res5 = await client.sMembers('myset')
console.log(res5); // ['Hello', 'World']
import { createClient } from 'redis';
const client = createClient();
await client.connect().catch(console.error);
const res1 = await client.sAdd('myset', ['Hello', 'World']);
console.log(res1); // 2
const res2 = await client.sAdd('myset', ['World']);
console.log(res2); // 0
const res3 = await client.sMembers('myset')
console.log(res3); // ['Hello', 'World']
const res4 = await client.sAdd('myset', ['Hello', 'World']);
console.log(res4); // 2
const res5 = await client.sMembers('myset')
console.log(res5); // ['Hello', 'World']
await client.close();
const res4 = await redis.sadd('myset', 'Hello', 'World');
console.log(res4); // >>> 2
const res5 = await redis.smembers('myset');
console.log(res5); // >>> ['Hello', 'World']
import assert from 'node:assert';
import { Redis } from 'ioredis';
const redis = new Redis();
const res1 = await redis.sadd('myset', 'Hello', 'World');
console.log(res1); // >>> 2
const res2 = await redis.sadd('myset', 'World');
console.log(res2); // >>> 0
const res3 = await redis.smembers('myset');
console.log(res3); // >>> ['Hello', 'World']
const res4 = await redis.sadd('myset', 'Hello', 'World');
console.log(res4); // >>> 2
const res5 = await redis.smembers('myset');
console.log(res5); // >>> ['Hello', 'World']
redis.disconnect();
long sMembersResult1 = jedis.sadd("myset", "Hello", "World");
System.out.println(sMembersResult1); // >>> 2
Set<String> sMembersResult2 = jedis.smembers("myset");
System.out.println(sMembersResult2.stream().sorted().collect(toList()));
// >>> [Hello, World]
import static java.util.stream.Collectors.toList;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Set;
import redis.clients.jedis.RedisClient;
public class CmdsSetExample {
public void run() {
RedisClient jedis = RedisClient.create("redis://localhost:6379");
long sAddResult1 = jedis.sadd("myset", "Hello");
System.out.println(sAddResult1); // >>> 1
long sAddResult2 = jedis.sadd("myset", "World");
System.out.println(sAddResult2); // >>> 1
long sAddResult3 = jedis.sadd("myset", "World");
System.out.println(sAddResult3); // >>> 0
Set<String> sAddResult4 = jedis.smembers("myset");
System.out.println(sAddResult4.stream().sorted().collect(toList()));
// >>> [Hello, World]
long sMembersResult1 = jedis.sadd("myset", "Hello", "World");
System.out.println(sMembersResult1); // >>> 2
Set<String> sMembersResult2 = jedis.smembers("myset");
System.out.println(sMembersResult2.stream().sorted().collect(toList()));
// >>> [Hello, World]
jedis.close();
}
}
CompletableFuture<Void> smembers = asyncCommands.sadd("myset", "Hello", "World").thenCompose(r -> {
return asyncCommands.smembers("myset");
})
.thenAccept(System.out::println)
// >>> [Hello, World]
.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;
import static java.util.stream.Collectors.toList;
public class CmdsSetExample {
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> sadd = asyncCommands.sadd("myset", "Hello").thenCompose(r -> {
System.out.println(r); // >>> 1
return asyncCommands.sadd("myset", "World");
}).thenCompose(r -> {
System.out.println(r); // >>> 1
return asyncCommands.sadd("myset", "World");
}).thenCompose(r -> {
System.out.println(r); // >>> 0
return asyncCommands.smembers("myset");
})
.thenAccept(System.out::println)
// >>> [Hello, World]
.toCompletableFuture();
sadd.join();
CompletableFuture<Void> smembers = asyncCommands.sadd("myset", "Hello", "World").thenCompose(r -> {
return asyncCommands.smembers("myset");
})
.thenAccept(System.out::println)
// >>> [Hello, World]
.toCompletableFuture();
smembers.join();
} finally {
redisClient.shutdown();
}
}
}
Mono<Void> smembers = reactiveCommands.sadd("myset", "Hello", "World").doOnNext(r -> {
System.out.println(r); // >>> 2
}).flatMap(r -> reactiveCommands.smembers("myset").collectList()).doOnNext(r -> {
System.out.println(r); // >>> [Hello, World]
}).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 CmdsSetExample {
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> sadd = reactiveCommands.sadd("myset", "Hello").doOnNext(r -> {
System.out.println(r); // >>> 1
}).flatMap(r -> reactiveCommands.sadd("myset", "World")).doOnNext(r -> {
System.out.println(r); // >>> 1
}).flatMap(r -> reactiveCommands.sadd("myset", "World")).doOnNext(r -> {
System.out.println(r); // >>> 0
}).flatMap(r -> reactiveCommands.smembers("myset").collectList()).doOnNext(r -> {
System.out.println(r); // >>> [Hello, World]
}).then();
sadd.block();
Mono<Void> smembers = reactiveCommands.sadd("myset", "Hello", "World").doOnNext(r -> {
System.out.println(r); // >>> 2
}).flatMap(r -> reactiveCommands.smembers("myset").collectList()).doOnNext(r -> {
System.out.println(r); // >>> [Hello, World]
}).then();
smembers.block();
} finally {
redisClient.shutdown();
}
}
}
sAddResult, err := rdb.SAdd(ctx, "myset", "Hello", "World").Result()
if err != nil {
panic(err)
}
fmt.Println(sAddResult) // >>> 2
sMembersResult, err := rdb.SMembers(ctx, "myset").Result()
if err != nil {
panic(err)
}
fmt.Println(sMembersResult) // >>> [Hello World]
package example_commands_test
import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
)
func ExampleClient_sadd_cmd() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
sAddResult1, err := rdb.SAdd(ctx, "myset", "Hello").Result()
if err != nil {
panic(err)
}
fmt.Println(sAddResult1) // >>> 1
sAddResult2, err := rdb.SAdd(ctx, "myset", "World").Result()
if err != nil {
panic(err)
}
fmt.Println(sAddResult2) // >>> 1
sAddResult3, err := rdb.SAdd(ctx, "myset", "World").Result()
if err != nil {
panic(err)
}
fmt.Println(sAddResult3) // >>> 0
sMembersResult, err := rdb.SMembers(ctx, "myset").Result()
if err != nil {
panic(err)
}
fmt.Println(sMembersResult) // >>> [Hello World]
}
func ExampleClient_smembers_cmd() {
ctx := context.Background()
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password docs
DB: 0, // use default DB
})
sAddResult, err := rdb.SAdd(ctx, "myset", "Hello", "World").Result()
if err != nil {
panic(err)
}
fmt.Println(sAddResult) // >>> 2
sMembersResult, err := rdb.SMembers(ctx, "myset").Result()
if err != nil {
panic(err)
}
fmt.Println(sMembersResult) // >>> [Hello World]
}
long sMembersResult1 = db.SetAdd(
"myset", ["Hello", "World"]
);
Console.WriteLine(sMembersResult1); // >>> 2
RedisValue[] sMembersResult2 = db.SetMembers("myset");
Array.Sort(sMembersResult2);
Console.WriteLine(string.Join(", ", sMembersResult2));
// >>> Hello, World
using StackExchange.Redis;
public class CmdsSetExample
{
public void Run()
{
var muxer = ConnectionMultiplexer.Connect("localhost:6379");
var db = muxer.GetDatabase();
bool sAddResult1 = db.SetAdd("myset", "Hello");
Console.WriteLine(sAddResult1); // >>> True
bool sAddResult2 = db.SetAdd("myset", "World");
Console.WriteLine(sAddResult2); // >>> True
bool sAddResult3 = db.SetAdd("myset", "World");
Console.WriteLine(sAddResult2); // >>> False
RedisValue[] sAddResult4 = db.SetMembers("myset");
Array.Sort(sAddResult4);
Console.WriteLine(string.Join(", ", sAddResult4));
// >>> Hello, World
long sMembersResult1 = db.SetAdd(
"myset", ["Hello", "World"]
);
Console.WriteLine(sMembersResult1); // >>> 2
RedisValue[] sMembersResult2 = db.SetMembers("myset");
Array.Sort(sMembersResult2);
Console.WriteLine(string.Join(", ", sMembersResult2));
// >>> Hello, World
}
}
$res4 = $r->sadd('myset', ['Hello', 'World']);
echo $res4 . PHP_EOL;
// >>> 2
$res5 = $r->smembers('myset');
sort($res5);
echo json_encode($res5) . PHP_EOL;
// >>> ["Hello","World"]
<?php
require 'vendor/autoload.php';
use Predis\Client as PredisClient;
class CmdSetTest
{
public function testCmdSet() {
$r = new PredisClient([
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'database' => 0,
]);
$res1 = $r->sadd('myset', ['Hello', 'World']);
echo $res1 . PHP_EOL;
// >>> 2
$res2 = $r->sadd('myset', ['World']);
echo $res2 . PHP_EOL;
// >>> 0
$res3 = $r->smembers('myset');
sort($res3);
echo json_encode($res3) . PHP_EOL;
// >>> ["Hello","World"]
$res4 = $r->sadd('myset', ['Hello', 'World']);
echo $res4 . PHP_EOL;
// >>> 2
$res5 = $r->smembers('myset');
sort($res5);
echo json_encode($res5) . PHP_EOL;
// >>> ["Hello","World"]
}
}
res4 = r.sadd('myset', ['Hello', 'World'])
puts res4 # >>> 2
res5 = r.smembers('myset')
puts res5.inspect # >>> ["Hello", "World"]
require 'redis'
r = Redis.new
res1 = r.sadd('myset', ['Hello', 'World'])
puts res1 # >>> 2
res2 = r.sadd('myset', ['World'])
puts res2 # >>> 0
res3 = r.smembers('myset')
puts res3.inspect # >>> ["Hello", "World"]
res4 = r.sadd('myset', ['Hello', 'World'])
puts res4 # >>> 2
res5 = r.smembers('myset')
puts res5.inspect # >>> ["Hello", "World"]
if let Ok(res4) = r.sadd("myset", &["Hello", "World"]) {
let res4: i32 = res4;
println!("{res4}"); // >>> 2
}
if let Ok(res5) = r.smembers("myset") {
let res5: HashSet<String> = res5;
println!("{res5:?}"); // >>> {"Hello", "World"}
}
mod cmds_set_tests {
use redis::Commands;
use std::collections::HashSet;
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.sadd("myset", &["Hello", "World"]) {
let res1: i32 = res1;
println!("{res1}"); // >>> 2
}
if let Ok(res2) = r.sadd("myset", "World") {
let res2: i32 = res2;
println!("{res2}"); // >>> 0
}
if let Ok(res3) = r.smembers("myset") {
let res3: HashSet<String> = res3;
println!("{res3:?}"); // >>> {"Hello", "World"}
}
if let Ok(res4) = r.sadd("myset", &["Hello", "World"]) {
let res4: i32 = res4;
println!("{res4}"); // >>> 2
}
if let Ok(res5) = r.smembers("myset") {
let res5: HashSet<String> = res5;
println!("{res5:?}"); // >>> {"Hello", "World"}
}
}
}
if let Ok(res4) = r.sadd("myset", &["Hello", "World"]).await {
let res4: i32 = res4;
println!("{res4}"); // >>> 2
}
if let Ok(res5) = r.smembers("myset").await {
let res5: HashSet<String> = res5;
println!("{res5:?}"); // >>> {"Hello", "World"}
}
mod cmds_set_tests {
use redis::AsyncCommands;
use std::collections::HashSet;
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.sadd("myset", &["Hello", "World"]).await {
let res1: i32 = res1;
println!("{res1}"); // >>> 2
}
if let Ok(res2) = r.sadd("myset", "World").await {
let res2: i32 = res2;
println!("{res2}"); // >>> 0
}
if let Ok(res3) = r.smembers("myset").await {
let res3: HashSet<String> = res3;
println!("{res3:?}"); // >>> {"Hello", "World"}
}
if let Ok(res4) = r.sadd("myset", &["Hello", "World"]).await {
let res4: i32 = res4;
println!("{res4}"); // >>> 2
}
if let Ok(res5) = r.smembers("myset").await {
let res5: HashSet<String> = res5;
println!("{res5:?}"); // >>> {"Hello", "World"}
}
}
}
Redis Software and Redis Cloud compatibility
| Redis Software |
Redis Cloud |
Notes |
|---|---|---|
| ✅ Standard |
✅ Standard |
Return information
Array reply: an array with all the members of the set.