SADD (original) (raw)

  1. Docs Docs
  2. Commands
  3. 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 CLI

redis> SADD myset "Hello" "World"
(integer) 2
redis> SADD myset "World"
(integer) 0
redis> SMEMBERS myset
1) "Hello"
2) "World"

Are you tired of using redis-cli? Try Redis Insight - the developer GUI for Redis.

Get Redis Insight

Python

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'}

Node.js


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.quit();

Java-Sync

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();
    }
}

Go

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]

}

Give these commands a try in the interactive console:

SADD myset "Hello" "World" SADD myset "World" SMEMBERS myset

RESP2/RESP3 Reply

Integer reply: the number of elements that were added to the set, not including all the elements already present in the set.

History