SADD
          
        
        
        
        
        
        
        Syntax
        SADD key member [member ...]
- Available since:
- Redis Open Source 1.0.0
- Time complexity:
- O(1) for each element added, so O(N) to add N elements when the command is called with multiple arguments.
- ACL categories:
- 
              
                @write,@set,@fast,
Add the specified members to the set stored at key.
Specified members that are already a member of this set are ignored.
If key does not exist, a new set is created before adding the specified
members.
An error is returned when the value stored at key is not a set.
Examples
redis> SADD myset "Hello" "World"
(integer) 2
redis> SADD myset "World"
(integer) 0
redis> SMEMBERS myset
1) "Hello"
2) "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'}
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();
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.UnifiedJedis;
public class CmdsSetExample {
    public void run() {
        UnifiedJedis jedis = new UnifiedJedis("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();
    }
}
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]
}
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
    }
}
<?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"]
    }
}
Give these commands a try in the interactive console:
Return information
        Integer reply: the number of elements that were added to the set, not including all the elements already present in the set.
      
    
      
      
      
      
    
  History
- Starting with Redis version 2.4.0: Accepts multiple memberarguments.