Redis sets
Introduction to Redis sets
A Redis set is an unordered collection of unique strings (members). You can use Redis sets to efficiently:
- Track unique items (e.g., track all unique IP addresses accessing a given blog post).
- Represent relations (e.g., the set of all users with a given role).
- Perform common set operations such as intersection, unions, and differences.
Basic commands
SADD
adds a new member to a set.SREM
removes the specified member from the set.SISMEMBER
tests a string for set membership.SINTER
returns the set of members that two or more sets have in common (i.e., the intersection).SCARD
returns the size (a.k.a. cardinality) of a set.
See the complete list of set commands.
Examples
-
Store the sets of bikes racing in France and the USA. Note that if you add a member that already exists, it will be ignored.
> SADD bikes:racing:france bike:1 (integer) 1 > SADD bikes:racing:france bike:1 (integer) 0 > SADD bikes:racing:france bike:2 bike:3 (integer) 2 > SADD bikes:racing:usa bike:1 bike:4 (integer) 2
Are you tired of using redis-cli? Try Redis Insight - the developer GUI for Redis.""" Code samples for Set doc pages: https://redis.io/docs/latest/develop/data-types/sets/ """ import redis r = redis.Redis(decode_responses=True) res1 = r.sadd("bikes:racing:france", "bike:1") print(res1) # >>> 1 res2 = r.sadd("bikes:racing:france", "bike:1") print(res2) # >>> 0 res3 = r.sadd("bikes:racing:france", "bike:2", "bike:3") print(res3) # >>> 2 res4 = r.sadd("bikes:racing:usa", "bike:1", "bike:4") print(res4) # >>> 2 r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res5 = r.sismember("bikes:racing:usa", "bike:1") print(res5) # >>> 1 res6 = r.sismember("bikes:racing:usa", "bike:2") print(res6) # >>> 0 r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res7 = r.sinter("bikes:racing:france", "bikes:racing:usa") print(res7) # >>> {'bike:1'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") res8 = r.scard("bikes:racing:france") print(res8) # >>> 3 res9 = r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") print(res9) # >>> 3 res10 = r.smembers("bikes:racing:france") print(res10) # >>> {'bike:1', 'bike:2', 'bike:3'} res11 = r.sismember("bikes:racing:france", "bike:1") print(res11) # >>> 1 res12 = r.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4") print(res12) # >>> [1, 1, 0] r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res13 = r.sdiff("bikes:racing:france", "bikes:racing:usa") print(res13) # >>> {'bike:2', 'bike:3'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") r.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4") res13 = r.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res13) # >>> {'bike:1'} res14 = r.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res14) # >>> {'bike:1', 'bike:2', 'bike:3', 'bike:4'} res15 = r.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res15) # >>> {} res16 = r.sdiff("bikes:racing:usa", "bikes:racing:france") print(res16) # >>> {'bike:4'} res17 = r.sdiff("bikes:racing:france", "bikes:racing:usa") print(res17) # >>> {'bike:2', 'bike:3'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5") res18 = r.srem("bikes:racing:france", "bike:1") print(res18) # >>> 1 res19 = r.spop("bikes:racing:france") print(res19) # >>> bike:3 res20 = r.smembers("bikes:racing:france") print(res20) # >>> {'bike:2', 'bike:4', 'bike:5'} res21 = r.srandmember("bikes:racing:france") print(res21) # >>> bike:4
import assert from 'assert'; import { createClient } from 'redis'; const client = await createClient(); await client.connect(); const res1 = await client.sAdd('bikes:racing:france', 'bike:1') console.log(res1) // >>> 1 const res2 = await client.sAdd('bikes:racing:france', 'bike:1') console.log(res2) // >>> 0 const res3 = await client.sAdd('bikes:racing:france', ['bike:2', 'bike:3']) console.log(res3) // >>> 2 const res4 = await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) console.log(res4) // >>> 2 await client.del('bikes:racing:france') await client.del('bikes:racing:usa') await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') const res5 = await client.sIsMember('bikes:racing:usa', 'bike:1') console.log(res5) // >>> true const res6 = await client.sIsMember('bikes:racing:usa', 'bike:2') console.log(res6) // >>> false await client.del('bikes:racing:france') await client.del('bikes:racing:usa') await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') const res7 = await client.sInter('bikes:racing:france', 'bikes:racing:usa') console.log(res7) // >>> {'bike:1'} await client.del('bikes:racing:france') await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) const res8 = await client.sCard('bikes:racing:france') console.log(res8) // >>> 3 const res9 = await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) console.log(res9) // >>> 3 const res10 = await client.sMembers('bikes:racing:france') console.log(res10) // >>> ['bike:1', 'bike:2', 'bike:3'] const res11 = await client.sIsMember('bikes:racing:france', 'bike:1') console.log(res11) // >>> true const res12 = await client.smIsMember('bikes:racing:france', ['bike:2', 'bike:3', 'bike:4']) console.log(res12) // >>> [true, true, false] await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) const res13 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) console.log(res13) // >>> [ 'bike:2', 'bike:3' ] await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) await client.sAdd('bikes:racing:italy', ['bike:1', 'bike:2', 'bike:3', 'bike:4']) const res14 = await client.sInter( ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] ) console.log(res14) // >>> ['bike:1'] const res15 = await client.sUnion( ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] ) console.log(res15) // >>> ['bike:1', 'bike:2', 'bike:3', 'bike:4'] const res16 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy']) console.log(res16) // >>> [] const res17 = await client.sDiff(['bikes:racing:usa', 'bikes:racing:france']) console.log(res17) // >>> ['bike:4'] const res18 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) console.log(res18) // >>> ['bike:2', 'bike:3'] debugger; await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5']) const res19 = await client.sRem('bikes:racing:france', 'bike:1') console.log(res19) // >>> 1 const res20 = await client.sPop('bikes:racing:france') console.log(res20) // >>> bike:3 or other random value const res21 = await client.sMembers('bikes:racing:france') console.log(res21) // >>> ['bike:2', 'bike:4', 'bike:5']; depends on previous result const res22 = await client.sRandMember('bikes:racing:france') console.log(res22) // >>> bike:4 or other random value
package io.redis.examples; import redis.clients.jedis.UnifiedJedis; import org.junit.Test; import java.util.List; import java.util.Set; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertEquals; public class SetsExample { public void run() { UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379"); long res1 = jedis.sadd("bikes:racing:france", "bike:1"); System.out.println(res1); // >>> 1 long res2 = jedis.sadd("bikes:racing:france", "bike:1"); System.out.println(res2); // >>> 0 long res3 = jedis.sadd("bikes:racing:france", "bike:2", "bike:3"); System.out.println(res3); // >>> 2 long res4 = jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); System.out.println(res4); // >>> 2 jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); boolean res5 = jedis.sismember("bikes:racing:usa", "bike:1"); System.out.println(res5); // >>> true boolean res6 = jedis.sismember("bikes:racing:usa", "bike:2"); System.out.println(res6); // >>> false jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); Set<String> res7 = jedis.sinter("bikes:racing:france", "bikes:racing:usa"); System.out.println(res7); // >>> [bike:1] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); long res8 = jedis.scard("bikes:racing:france"); System.out.println(res8); // >>> 3 long res9 = jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); System.out.println(res9); // >>> 3 Set<String> res10 = jedis.smembers("bikes:racing:france"); System.out.println(res10); // >>> [bike:1, bike:2, bike:3] boolean res11 = jedis.sismember("bikes:racing:france", "bike:1"); System.out.println(res11); // >>> true List<Boolean> res12 = jedis.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4"); System.out.println(res12); // >>> [true,true,false] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); Set<String> res13 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa"); System.out.println(res13); // >>> [bike:2, bike:3] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); jedis.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4"); Set<String> res14 = jedis.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res14); // >>> [bike:1] Set<String> res15 = jedis.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res15); // >>> [bike:1, bike:2, bike:3, bike:4] Set<String> res16 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res16); // >>> [] Set<String> res17 = jedis.sdiff("bikes:racing:usa", "bikes:racing:france"); System.out.println(res17); // >>> [bike:4] Set<String> res18 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa"); System.out.println(res18); // >>> [bike:2, bike:3] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"); long res19 = jedis.srem("bikes:racing:france", "bike:1"); System.out.println(res18); // >>> 1 String res20 = jedis.spop("bikes:racing:france"); System.out.println(res20); // >>> bike:3 Set<String> res21 = jedis.smembers("bikes:racing:france"); System.out.println(res21); // >>> [bike:2, bike:4, bike:5] String res22 = jedis.srandmember("bikes:racing:france"); System.out.println(res22); // >>> bike:4 jedis.close(); } }
package example_commands_test import ( "context" "fmt" "github.com/redis/go-redis/v9" ) func ExampleClient_sadd() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) res1, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res1) // >>> 1 res2, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res2) // >>> 0 res3, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:2", "bike:3").Result() if err != nil { panic(err) } fmt.Println(res3) // >>> 2 res4, err := rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } fmt.Println(res4) // >>> 2 } func ExampleClient_sismember() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } res5, err := rdb.SIsMember(ctx, "bikes:racing:usa", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res5) // >>> true res6, err := rdb.SIsMember(ctx, "bikes:racing:usa", "bike:2").Result() if err != nil { panic(err) } fmt.Println(res6) // >>> false } func ExampleClient_sinter() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } res7, err := rdb.SInter(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res7) // >>> [bike:1] } func ExampleClient_scard() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } res8, err := rdb.SCard(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res8) // >>> 3 } func ExampleClient_saddsmembers() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) res9, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } fmt.Println(res9) // >>> 3 res10, err := rdb.SMembers(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res10) // >>> [bike:1 bike:2 bike:3] } func ExampleClient_smismember() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } res11, err := rdb.SIsMember(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res11) // >>> true res12, err := rdb.SMIsMember(ctx, "bikes:racing:france", "bike:2", "bike:3", "bike:4").Result() if err != nil { panic(err) } fmt.Println(res12) // >>> [true true false] } func ExampleClient_sdiff() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() res13, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res13) // >>> [bike:2 bike:3] } func ExampleClient_multisets() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4").Result() if err != nil { panic(err) } res14, err := rdb.SInter(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res14) // >>> [bike:1] res15, err := rdb.SUnion(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res15) // >>> [bike:1 bike:2 bike:3 bike:4] res16, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res16) // >>> [] res17, err := rdb.SDiff(ctx, "bikes:racing:usa", "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res17) // >>> [bike:4] res18, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res18) // >>> [bike:2 bike:3] } func ExampleClient_srem() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5").Result() if err != nil { panic(err) } res19, err := rdb.SRem(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res19) // >>> 1 res20, err := rdb.SPop(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res20) // >>> <random element> res21, err := rdb.SMembers(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res21) // >>> <remaining elements> res22, err := rdb.SRandMember(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res22) // >>> <random element> // Testable examples not available because the test output // is not deterministic. }
using System.Data.Common; using NRedisStack.Tests; using StackExchange.Redis; public class SetsExample { public void run() { var muxer = ConnectionMultiplexer.Connect("localhost:6379"); var db = muxer.GetDatabase(); long res1 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" }); Console.WriteLine(res1); // >>> 1 long res2 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" }); Console.WriteLine(res2); // >>> 0 long res3 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3" }); Console.WriteLine(res3); // >>> 2 long res4 = db.SetAdd("bikes:racing:usa", new RedisValue[] { "bike:1", "bike:4" }); Console.WriteLine(res4); // >>> 2 // Tests for 'sadd' step. bool res5 = db.SetContains("bikes:racing:france", "bike:1"); Console.WriteLine(res5); // >>> True bool res6 = db.SetContains("bikes:racing:usa", "bike:2"); Console.WriteLine(res6); // >>> False // Tests for 'sismember' step. long res7 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res8 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); RedisValue[] res9 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res9)); // >>> bike:1 // Tests for 'sinter' step. long res10 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res11 = db.SetLength("bikes:racing:france"); Console.WriteLine(res11); // >>> 3 // Tests for 'scard' step. long res12 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); RedisValue[] res13 = db.SetMembers("bikes:racing:france"); Console.WriteLine(string.Join(", ", res13)); // >>> bike:3, bike:2, bike:1 // Tests for 'sadd_smembers' step. bool res14 = db.SetContains("bikes:racing:france", "bike:1"); Console.WriteLine(res14); // >>> true bool[] res15 = db.SetContains("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3", "bike:4" }); Console.WriteLine(string.Join(", ", res15)); // >>> True, True, False // Tests for 'smismember' step. long res16 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res17 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); RedisValue[] res18 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res18)); // >>> bike:2, bike:3 // Tests for 'sdiff' step. long res19 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res20 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); long res21 = db.SetAdd("{bikes:racing}:italy", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4" }); RedisValue[] res22 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res22)); // >>> bike:1 RedisValue[] res23 = db.SetCombine(SetOperation.Union, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res23)); // >>> bike:1, bike:2, bike:3, bike:4 RedisValue[] res24 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res24)); // >>> <empty set> RedisValue[] res25 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:usa", "{bikes:racing}:france" }); Console.WriteLine(string.Join(", ", res25)); // >>> bike:4 RedisValue[] res26 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res26)); // >>> bike:2, bike:3 // Tests for 'multisets' step. long res27 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" }); bool res28 = db.SetRemove("bikes:racing:france", "bike:1"); Console.WriteLine(res28); // >>> True RedisValue res29 = db.SetPop("bikes:racing:france"); Console.WriteLine(res29); // >>> bike:3 RedisValue[] res30 = db.SetMembers("bikes:racing:france"); Console.WriteLine(string.Join(", ", res30)); // >>> bike:2, bike:4, bike:5 RedisValue res31 = db.SetRandomMember("bikes:racing:france"); Console.WriteLine(res31); // >>> bike:4 // Tests for 'srem' step. } }
-
Check whether bike:1 or bike:2 are racing in the US.
> SISMEMBER bikes:racing:usa bike:1 (integer) 1 > SISMEMBER bikes:racing:usa bike:2 (integer) 0
Are you tired of using redis-cli? Try Redis Insight - the developer GUI for Redis.""" Code samples for Set doc pages: https://redis.io/docs/latest/develop/data-types/sets/ """ import redis r = redis.Redis(decode_responses=True) res1 = r.sadd("bikes:racing:france", "bike:1") print(res1) # >>> 1 res2 = r.sadd("bikes:racing:france", "bike:1") print(res2) # >>> 0 res3 = r.sadd("bikes:racing:france", "bike:2", "bike:3") print(res3) # >>> 2 res4 = r.sadd("bikes:racing:usa", "bike:1", "bike:4") print(res4) # >>> 2 r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res5 = r.sismember("bikes:racing:usa", "bike:1") print(res5) # >>> 1 res6 = r.sismember("bikes:racing:usa", "bike:2") print(res6) # >>> 0 r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res7 = r.sinter("bikes:racing:france", "bikes:racing:usa") print(res7) # >>> {'bike:1'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") res8 = r.scard("bikes:racing:france") print(res8) # >>> 3 res9 = r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") print(res9) # >>> 3 res10 = r.smembers("bikes:racing:france") print(res10) # >>> {'bike:1', 'bike:2', 'bike:3'} res11 = r.sismember("bikes:racing:france", "bike:1") print(res11) # >>> 1 res12 = r.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4") print(res12) # >>> [1, 1, 0] r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res13 = r.sdiff("bikes:racing:france", "bikes:racing:usa") print(res13) # >>> {'bike:2', 'bike:3'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") r.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4") res13 = r.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res13) # >>> {'bike:1'} res14 = r.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res14) # >>> {'bike:1', 'bike:2', 'bike:3', 'bike:4'} res15 = r.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res15) # >>> {} res16 = r.sdiff("bikes:racing:usa", "bikes:racing:france") print(res16) # >>> {'bike:4'} res17 = r.sdiff("bikes:racing:france", "bikes:racing:usa") print(res17) # >>> {'bike:2', 'bike:3'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5") res18 = r.srem("bikes:racing:france", "bike:1") print(res18) # >>> 1 res19 = r.spop("bikes:racing:france") print(res19) # >>> bike:3 res20 = r.smembers("bikes:racing:france") print(res20) # >>> {'bike:2', 'bike:4', 'bike:5'} res21 = r.srandmember("bikes:racing:france") print(res21) # >>> bike:4
import assert from 'assert'; import { createClient } from 'redis'; const client = await createClient(); await client.connect(); const res1 = await client.sAdd('bikes:racing:france', 'bike:1') console.log(res1) // >>> 1 const res2 = await client.sAdd('bikes:racing:france', 'bike:1') console.log(res2) // >>> 0 const res3 = await client.sAdd('bikes:racing:france', ['bike:2', 'bike:3']) console.log(res3) // >>> 2 const res4 = await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) console.log(res4) // >>> 2 await client.del('bikes:racing:france') await client.del('bikes:racing:usa') await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') const res5 = await client.sIsMember('bikes:racing:usa', 'bike:1') console.log(res5) // >>> true const res6 = await client.sIsMember('bikes:racing:usa', 'bike:2') console.log(res6) // >>> false await client.del('bikes:racing:france') await client.del('bikes:racing:usa') await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') const res7 = await client.sInter('bikes:racing:france', 'bikes:racing:usa') console.log(res7) // >>> {'bike:1'} await client.del('bikes:racing:france') await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) const res8 = await client.sCard('bikes:racing:france') console.log(res8) // >>> 3 const res9 = await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) console.log(res9) // >>> 3 const res10 = await client.sMembers('bikes:racing:france') console.log(res10) // >>> ['bike:1', 'bike:2', 'bike:3'] const res11 = await client.sIsMember('bikes:racing:france', 'bike:1') console.log(res11) // >>> true const res12 = await client.smIsMember('bikes:racing:france', ['bike:2', 'bike:3', 'bike:4']) console.log(res12) // >>> [true, true, false] await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) const res13 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) console.log(res13) // >>> [ 'bike:2', 'bike:3' ] await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) await client.sAdd('bikes:racing:italy', ['bike:1', 'bike:2', 'bike:3', 'bike:4']) const res14 = await client.sInter( ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] ) console.log(res14) // >>> ['bike:1'] const res15 = await client.sUnion( ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] ) console.log(res15) // >>> ['bike:1', 'bike:2', 'bike:3', 'bike:4'] const res16 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy']) console.log(res16) // >>> [] const res17 = await client.sDiff(['bikes:racing:usa', 'bikes:racing:france']) console.log(res17) // >>> ['bike:4'] const res18 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) console.log(res18) // >>> ['bike:2', 'bike:3'] debugger; await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5']) const res19 = await client.sRem('bikes:racing:france', 'bike:1') console.log(res19) // >>> 1 const res20 = await client.sPop('bikes:racing:france') console.log(res20) // >>> bike:3 or other random value const res21 = await client.sMembers('bikes:racing:france') console.log(res21) // >>> ['bike:2', 'bike:4', 'bike:5']; depends on previous result const res22 = await client.sRandMember('bikes:racing:france') console.log(res22) // >>> bike:4 or other random value
package io.redis.examples; import redis.clients.jedis.UnifiedJedis; import org.junit.Test; import java.util.List; import java.util.Set; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertEquals; public class SetsExample { public void run() { UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379"); long res1 = jedis.sadd("bikes:racing:france", "bike:1"); System.out.println(res1); // >>> 1 long res2 = jedis.sadd("bikes:racing:france", "bike:1"); System.out.println(res2); // >>> 0 long res3 = jedis.sadd("bikes:racing:france", "bike:2", "bike:3"); System.out.println(res3); // >>> 2 long res4 = jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); System.out.println(res4); // >>> 2 jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); boolean res5 = jedis.sismember("bikes:racing:usa", "bike:1"); System.out.println(res5); // >>> true boolean res6 = jedis.sismember("bikes:racing:usa", "bike:2"); System.out.println(res6); // >>> false jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); Set<String> res7 = jedis.sinter("bikes:racing:france", "bikes:racing:usa"); System.out.println(res7); // >>> [bike:1] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); long res8 = jedis.scard("bikes:racing:france"); System.out.println(res8); // >>> 3 long res9 = jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); System.out.println(res9); // >>> 3 Set<String> res10 = jedis.smembers("bikes:racing:france"); System.out.println(res10); // >>> [bike:1, bike:2, bike:3] boolean res11 = jedis.sismember("bikes:racing:france", "bike:1"); System.out.println(res11); // >>> true List<Boolean> res12 = jedis.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4"); System.out.println(res12); // >>> [true,true,false] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); Set<String> res13 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa"); System.out.println(res13); // >>> [bike:2, bike:3] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); jedis.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4"); Set<String> res14 = jedis.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res14); // >>> [bike:1] Set<String> res15 = jedis.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res15); // >>> [bike:1, bike:2, bike:3, bike:4] Set<String> res16 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res16); // >>> [] Set<String> res17 = jedis.sdiff("bikes:racing:usa", "bikes:racing:france"); System.out.println(res17); // >>> [bike:4] Set<String> res18 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa"); System.out.println(res18); // >>> [bike:2, bike:3] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"); long res19 = jedis.srem("bikes:racing:france", "bike:1"); System.out.println(res18); // >>> 1 String res20 = jedis.spop("bikes:racing:france"); System.out.println(res20); // >>> bike:3 Set<String> res21 = jedis.smembers("bikes:racing:france"); System.out.println(res21); // >>> [bike:2, bike:4, bike:5] String res22 = jedis.srandmember("bikes:racing:france"); System.out.println(res22); // >>> bike:4 jedis.close(); } }
package example_commands_test import ( "context" "fmt" "github.com/redis/go-redis/v9" ) func ExampleClient_sadd() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) res1, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res1) // >>> 1 res2, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res2) // >>> 0 res3, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:2", "bike:3").Result() if err != nil { panic(err) } fmt.Println(res3) // >>> 2 res4, err := rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } fmt.Println(res4) // >>> 2 } func ExampleClient_sismember() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } res5, err := rdb.SIsMember(ctx, "bikes:racing:usa", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res5) // >>> true res6, err := rdb.SIsMember(ctx, "bikes:racing:usa", "bike:2").Result() if err != nil { panic(err) } fmt.Println(res6) // >>> false } func ExampleClient_sinter() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } res7, err := rdb.SInter(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res7) // >>> [bike:1] } func ExampleClient_scard() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } res8, err := rdb.SCard(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res8) // >>> 3 } func ExampleClient_saddsmembers() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) res9, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } fmt.Println(res9) // >>> 3 res10, err := rdb.SMembers(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res10) // >>> [bike:1 bike:2 bike:3] } func ExampleClient_smismember() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } res11, err := rdb.SIsMember(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res11) // >>> true res12, err := rdb.SMIsMember(ctx, "bikes:racing:france", "bike:2", "bike:3", "bike:4").Result() if err != nil { panic(err) } fmt.Println(res12) // >>> [true true false] } func ExampleClient_sdiff() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() res13, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res13) // >>> [bike:2 bike:3] } func ExampleClient_multisets() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4").Result() if err != nil { panic(err) } res14, err := rdb.SInter(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res14) // >>> [bike:1] res15, err := rdb.SUnion(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res15) // >>> [bike:1 bike:2 bike:3 bike:4] res16, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res16) // >>> [] res17, err := rdb.SDiff(ctx, "bikes:racing:usa", "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res17) // >>> [bike:4] res18, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res18) // >>> [bike:2 bike:3] } func ExampleClient_srem() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5").Result() if err != nil { panic(err) } res19, err := rdb.SRem(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res19) // >>> 1 res20, err := rdb.SPop(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res20) // >>> <random element> res21, err := rdb.SMembers(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res21) // >>> <remaining elements> res22, err := rdb.SRandMember(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res22) // >>> <random element> // Testable examples not available because the test output // is not deterministic. }
using System.Data.Common; using NRedisStack.Tests; using StackExchange.Redis; public class SetsExample { public void run() { var muxer = ConnectionMultiplexer.Connect("localhost:6379"); var db = muxer.GetDatabase(); long res1 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" }); Console.WriteLine(res1); // >>> 1 long res2 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" }); Console.WriteLine(res2); // >>> 0 long res3 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3" }); Console.WriteLine(res3); // >>> 2 long res4 = db.SetAdd("bikes:racing:usa", new RedisValue[] { "bike:1", "bike:4" }); Console.WriteLine(res4); // >>> 2 // Tests for 'sadd' step. bool res5 = db.SetContains("bikes:racing:france", "bike:1"); Console.WriteLine(res5); // >>> True bool res6 = db.SetContains("bikes:racing:usa", "bike:2"); Console.WriteLine(res6); // >>> False // Tests for 'sismember' step. long res7 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res8 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); RedisValue[] res9 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res9)); // >>> bike:1 // Tests for 'sinter' step. long res10 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res11 = db.SetLength("bikes:racing:france"); Console.WriteLine(res11); // >>> 3 // Tests for 'scard' step. long res12 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); RedisValue[] res13 = db.SetMembers("bikes:racing:france"); Console.WriteLine(string.Join(", ", res13)); // >>> bike:3, bike:2, bike:1 // Tests for 'sadd_smembers' step. bool res14 = db.SetContains("bikes:racing:france", "bike:1"); Console.WriteLine(res14); // >>> true bool[] res15 = db.SetContains("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3", "bike:4" }); Console.WriteLine(string.Join(", ", res15)); // >>> True, True, False // Tests for 'smismember' step. long res16 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res17 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); RedisValue[] res18 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res18)); // >>> bike:2, bike:3 // Tests for 'sdiff' step. long res19 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res20 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); long res21 = db.SetAdd("{bikes:racing}:italy", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4" }); RedisValue[] res22 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res22)); // >>> bike:1 RedisValue[] res23 = db.SetCombine(SetOperation.Union, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res23)); // >>> bike:1, bike:2, bike:3, bike:4 RedisValue[] res24 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res24)); // >>> <empty set> RedisValue[] res25 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:usa", "{bikes:racing}:france" }); Console.WriteLine(string.Join(", ", res25)); // >>> bike:4 RedisValue[] res26 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res26)); // >>> bike:2, bike:3 // Tests for 'multisets' step. long res27 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" }); bool res28 = db.SetRemove("bikes:racing:france", "bike:1"); Console.WriteLine(res28); // >>> True RedisValue res29 = db.SetPop("bikes:racing:france"); Console.WriteLine(res29); // >>> bike:3 RedisValue[] res30 = db.SetMembers("bikes:racing:france"); Console.WriteLine(string.Join(", ", res30)); // >>> bike:2, bike:4, bike:5 RedisValue res31 = db.SetRandomMember("bikes:racing:france"); Console.WriteLine(res31); // >>> bike:4 // Tests for 'srem' step. } }
-
Which bikes are competing in both races?
> SINTER bikes:racing:france bikes:racing:usa 1) "bike:1"
Are you tired of using redis-cli? Try Redis Insight - the developer GUI for Redis.""" Code samples for Set doc pages: https://redis.io/docs/latest/develop/data-types/sets/ """ import redis r = redis.Redis(decode_responses=True) res1 = r.sadd("bikes:racing:france", "bike:1") print(res1) # >>> 1 res2 = r.sadd("bikes:racing:france", "bike:1") print(res2) # >>> 0 res3 = r.sadd("bikes:racing:france", "bike:2", "bike:3") print(res3) # >>> 2 res4 = r.sadd("bikes:racing:usa", "bike:1", "bike:4") print(res4) # >>> 2 r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res5 = r.sismember("bikes:racing:usa", "bike:1") print(res5) # >>> 1 res6 = r.sismember("bikes:racing:usa", "bike:2") print(res6) # >>> 0 r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res7 = r.sinter("bikes:racing:france", "bikes:racing:usa") print(res7) # >>> {'bike:1'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") res8 = r.scard("bikes:racing:france") print(res8) # >>> 3 res9 = r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") print(res9) # >>> 3 res10 = r.smembers("bikes:racing:france") print(res10) # >>> {'bike:1', 'bike:2', 'bike:3'} res11 = r.sismember("bikes:racing:france", "bike:1") print(res11) # >>> 1 res12 = r.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4") print(res12) # >>> [1, 1, 0] r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res13 = r.sdiff("bikes:racing:france", "bikes:racing:usa") print(res13) # >>> {'bike:2', 'bike:3'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") r.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4") res13 = r.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res13) # >>> {'bike:1'} res14 = r.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res14) # >>> {'bike:1', 'bike:2', 'bike:3', 'bike:4'} res15 = r.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res15) # >>> {} res16 = r.sdiff("bikes:racing:usa", "bikes:racing:france") print(res16) # >>> {'bike:4'} res17 = r.sdiff("bikes:racing:france", "bikes:racing:usa") print(res17) # >>> {'bike:2', 'bike:3'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5") res18 = r.srem("bikes:racing:france", "bike:1") print(res18) # >>> 1 res19 = r.spop("bikes:racing:france") print(res19) # >>> bike:3 res20 = r.smembers("bikes:racing:france") print(res20) # >>> {'bike:2', 'bike:4', 'bike:5'} res21 = r.srandmember("bikes:racing:france") print(res21) # >>> bike:4
import assert from 'assert'; import { createClient } from 'redis'; const client = await createClient(); await client.connect(); const res1 = await client.sAdd('bikes:racing:france', 'bike:1') console.log(res1) // >>> 1 const res2 = await client.sAdd('bikes:racing:france', 'bike:1') console.log(res2) // >>> 0 const res3 = await client.sAdd('bikes:racing:france', ['bike:2', 'bike:3']) console.log(res3) // >>> 2 const res4 = await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) console.log(res4) // >>> 2 await client.del('bikes:racing:france') await client.del('bikes:racing:usa') await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') const res5 = await client.sIsMember('bikes:racing:usa', 'bike:1') console.log(res5) // >>> true const res6 = await client.sIsMember('bikes:racing:usa', 'bike:2') console.log(res6) // >>> false await client.del('bikes:racing:france') await client.del('bikes:racing:usa') await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') const res7 = await client.sInter('bikes:racing:france', 'bikes:racing:usa') console.log(res7) // >>> {'bike:1'} await client.del('bikes:racing:france') await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) const res8 = await client.sCard('bikes:racing:france') console.log(res8) // >>> 3 const res9 = await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) console.log(res9) // >>> 3 const res10 = await client.sMembers('bikes:racing:france') console.log(res10) // >>> ['bike:1', 'bike:2', 'bike:3'] const res11 = await client.sIsMember('bikes:racing:france', 'bike:1') console.log(res11) // >>> true const res12 = await client.smIsMember('bikes:racing:france', ['bike:2', 'bike:3', 'bike:4']) console.log(res12) // >>> [true, true, false] await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) const res13 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) console.log(res13) // >>> [ 'bike:2', 'bike:3' ] await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) await client.sAdd('bikes:racing:italy', ['bike:1', 'bike:2', 'bike:3', 'bike:4']) const res14 = await client.sInter( ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] ) console.log(res14) // >>> ['bike:1'] const res15 = await client.sUnion( ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] ) console.log(res15) // >>> ['bike:1', 'bike:2', 'bike:3', 'bike:4'] const res16 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy']) console.log(res16) // >>> [] const res17 = await client.sDiff(['bikes:racing:usa', 'bikes:racing:france']) console.log(res17) // >>> ['bike:4'] const res18 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) console.log(res18) // >>> ['bike:2', 'bike:3'] debugger; await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5']) const res19 = await client.sRem('bikes:racing:france', 'bike:1') console.log(res19) // >>> 1 const res20 = await client.sPop('bikes:racing:france') console.log(res20) // >>> bike:3 or other random value const res21 = await client.sMembers('bikes:racing:france') console.log(res21) // >>> ['bike:2', 'bike:4', 'bike:5']; depends on previous result const res22 = await client.sRandMember('bikes:racing:france') console.log(res22) // >>> bike:4 or other random value
package io.redis.examples; import redis.clients.jedis.UnifiedJedis; import org.junit.Test; import java.util.List; import java.util.Set; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertEquals; public class SetsExample { public void run() { UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379"); long res1 = jedis.sadd("bikes:racing:france", "bike:1"); System.out.println(res1); // >>> 1 long res2 = jedis.sadd("bikes:racing:france", "bike:1"); System.out.println(res2); // >>> 0 long res3 = jedis.sadd("bikes:racing:france", "bike:2", "bike:3"); System.out.println(res3); // >>> 2 long res4 = jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); System.out.println(res4); // >>> 2 jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); boolean res5 = jedis.sismember("bikes:racing:usa", "bike:1"); System.out.println(res5); // >>> true boolean res6 = jedis.sismember("bikes:racing:usa", "bike:2"); System.out.println(res6); // >>> false jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); Set<String> res7 = jedis.sinter("bikes:racing:france", "bikes:racing:usa"); System.out.println(res7); // >>> [bike:1] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); long res8 = jedis.scard("bikes:racing:france"); System.out.println(res8); // >>> 3 long res9 = jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); System.out.println(res9); // >>> 3 Set<String> res10 = jedis.smembers("bikes:racing:france"); System.out.println(res10); // >>> [bike:1, bike:2, bike:3] boolean res11 = jedis.sismember("bikes:racing:france", "bike:1"); System.out.println(res11); // >>> true List<Boolean> res12 = jedis.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4"); System.out.println(res12); // >>> [true,true,false] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); Set<String> res13 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa"); System.out.println(res13); // >>> [bike:2, bike:3] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); jedis.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4"); Set<String> res14 = jedis.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res14); // >>> [bike:1] Set<String> res15 = jedis.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res15); // >>> [bike:1, bike:2, bike:3, bike:4] Set<String> res16 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res16); // >>> [] Set<String> res17 = jedis.sdiff("bikes:racing:usa", "bikes:racing:france"); System.out.println(res17); // >>> [bike:4] Set<String> res18 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa"); System.out.println(res18); // >>> [bike:2, bike:3] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"); long res19 = jedis.srem("bikes:racing:france", "bike:1"); System.out.println(res18); // >>> 1 String res20 = jedis.spop("bikes:racing:france"); System.out.println(res20); // >>> bike:3 Set<String> res21 = jedis.smembers("bikes:racing:france"); System.out.println(res21); // >>> [bike:2, bike:4, bike:5] String res22 = jedis.srandmember("bikes:racing:france"); System.out.println(res22); // >>> bike:4 jedis.close(); } }
package example_commands_test import ( "context" "fmt" "github.com/redis/go-redis/v9" ) func ExampleClient_sadd() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) res1, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res1) // >>> 1 res2, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res2) // >>> 0 res3, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:2", "bike:3").Result() if err != nil { panic(err) } fmt.Println(res3) // >>> 2 res4, err := rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } fmt.Println(res4) // >>> 2 } func ExampleClient_sismember() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } res5, err := rdb.SIsMember(ctx, "bikes:racing:usa", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res5) // >>> true res6, err := rdb.SIsMember(ctx, "bikes:racing:usa", "bike:2").Result() if err != nil { panic(err) } fmt.Println(res6) // >>> false } func ExampleClient_sinter() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } res7, err := rdb.SInter(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res7) // >>> [bike:1] } func ExampleClient_scard() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } res8, err := rdb.SCard(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res8) // >>> 3 } func ExampleClient_saddsmembers() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) res9, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } fmt.Println(res9) // >>> 3 res10, err := rdb.SMembers(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res10) // >>> [bike:1 bike:2 bike:3] } func ExampleClient_smismember() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } res11, err := rdb.SIsMember(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res11) // >>> true res12, err := rdb.SMIsMember(ctx, "bikes:racing:france", "bike:2", "bike:3", "bike:4").Result() if err != nil { panic(err) } fmt.Println(res12) // >>> [true true false] } func ExampleClient_sdiff() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() res13, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res13) // >>> [bike:2 bike:3] } func ExampleClient_multisets() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4").Result() if err != nil { panic(err) } res14, err := rdb.SInter(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res14) // >>> [bike:1] res15, err := rdb.SUnion(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res15) // >>> [bike:1 bike:2 bike:3 bike:4] res16, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res16) // >>> [] res17, err := rdb.SDiff(ctx, "bikes:racing:usa", "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res17) // >>> [bike:4] res18, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res18) // >>> [bike:2 bike:3] } func ExampleClient_srem() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5").Result() if err != nil { panic(err) } res19, err := rdb.SRem(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res19) // >>> 1 res20, err := rdb.SPop(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res20) // >>> <random element> res21, err := rdb.SMembers(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res21) // >>> <remaining elements> res22, err := rdb.SRandMember(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res22) // >>> <random element> // Testable examples not available because the test output // is not deterministic. }
using System.Data.Common; using NRedisStack.Tests; using StackExchange.Redis; public class SetsExample { public void run() { var muxer = ConnectionMultiplexer.Connect("localhost:6379"); var db = muxer.GetDatabase(); long res1 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" }); Console.WriteLine(res1); // >>> 1 long res2 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" }); Console.WriteLine(res2); // >>> 0 long res3 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3" }); Console.WriteLine(res3); // >>> 2 long res4 = db.SetAdd("bikes:racing:usa", new RedisValue[] { "bike:1", "bike:4" }); Console.WriteLine(res4); // >>> 2 // Tests for 'sadd' step. bool res5 = db.SetContains("bikes:racing:france", "bike:1"); Console.WriteLine(res5); // >>> True bool res6 = db.SetContains("bikes:racing:usa", "bike:2"); Console.WriteLine(res6); // >>> False // Tests for 'sismember' step. long res7 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res8 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); RedisValue[] res9 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res9)); // >>> bike:1 // Tests for 'sinter' step. long res10 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res11 = db.SetLength("bikes:racing:france"); Console.WriteLine(res11); // >>> 3 // Tests for 'scard' step. long res12 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); RedisValue[] res13 = db.SetMembers("bikes:racing:france"); Console.WriteLine(string.Join(", ", res13)); // >>> bike:3, bike:2, bike:1 // Tests for 'sadd_smembers' step. bool res14 = db.SetContains("bikes:racing:france", "bike:1"); Console.WriteLine(res14); // >>> true bool[] res15 = db.SetContains("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3", "bike:4" }); Console.WriteLine(string.Join(", ", res15)); // >>> True, True, False // Tests for 'smismember' step. long res16 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res17 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); RedisValue[] res18 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res18)); // >>> bike:2, bike:3 // Tests for 'sdiff' step. long res19 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res20 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); long res21 = db.SetAdd("{bikes:racing}:italy", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4" }); RedisValue[] res22 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res22)); // >>> bike:1 RedisValue[] res23 = db.SetCombine(SetOperation.Union, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res23)); // >>> bike:1, bike:2, bike:3, bike:4 RedisValue[] res24 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res24)); // >>> <empty set> RedisValue[] res25 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:usa", "{bikes:racing}:france" }); Console.WriteLine(string.Join(", ", res25)); // >>> bike:4 RedisValue[] res26 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res26)); // >>> bike:2, bike:3 // Tests for 'multisets' step. long res27 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" }); bool res28 = db.SetRemove("bikes:racing:france", "bike:1"); Console.WriteLine(res28); // >>> True RedisValue res29 = db.SetPop("bikes:racing:france"); Console.WriteLine(res29); // >>> bike:3 RedisValue[] res30 = db.SetMembers("bikes:racing:france"); Console.WriteLine(string.Join(", ", res30)); // >>> bike:2, bike:4, bike:5 RedisValue res31 = db.SetRandomMember("bikes:racing:france"); Console.WriteLine(res31); // >>> bike:4 // Tests for 'srem' step. } }
-
How many bikes are racing in France?
> SCARD bikes:racing:france (integer) 3
Are you tired of using redis-cli? Try Redis Insight - the developer GUI for Redis.""" Code samples for Set doc pages: https://redis.io/docs/latest/develop/data-types/sets/ """ import redis r = redis.Redis(decode_responses=True) res1 = r.sadd("bikes:racing:france", "bike:1") print(res1) # >>> 1 res2 = r.sadd("bikes:racing:france", "bike:1") print(res2) # >>> 0 res3 = r.sadd("bikes:racing:france", "bike:2", "bike:3") print(res3) # >>> 2 res4 = r.sadd("bikes:racing:usa", "bike:1", "bike:4") print(res4) # >>> 2 r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res5 = r.sismember("bikes:racing:usa", "bike:1") print(res5) # >>> 1 res6 = r.sismember("bikes:racing:usa", "bike:2") print(res6) # >>> 0 r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res7 = r.sinter("bikes:racing:france", "bikes:racing:usa") print(res7) # >>> {'bike:1'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") res8 = r.scard("bikes:racing:france") print(res8) # >>> 3 res9 = r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") print(res9) # >>> 3 res10 = r.smembers("bikes:racing:france") print(res10) # >>> {'bike:1', 'bike:2', 'bike:3'} res11 = r.sismember("bikes:racing:france", "bike:1") print(res11) # >>> 1 res12 = r.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4") print(res12) # >>> [1, 1, 0] r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") res13 = r.sdiff("bikes:racing:france", "bikes:racing:usa") print(res13) # >>> {'bike:2', 'bike:3'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3") r.sadd("bikes:racing:usa", "bike:1", "bike:4") r.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4") res13 = r.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res13) # >>> {'bike:1'} res14 = r.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res14) # >>> {'bike:1', 'bike:2', 'bike:3', 'bike:4'} res15 = r.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy") print(res15) # >>> {} res16 = r.sdiff("bikes:racing:usa", "bikes:racing:france") print(res16) # >>> {'bike:4'} res17 = r.sdiff("bikes:racing:france", "bikes:racing:usa") print(res17) # >>> {'bike:2', 'bike:3'} r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5") res18 = r.srem("bikes:racing:france", "bike:1") print(res18) # >>> 1 res19 = r.spop("bikes:racing:france") print(res19) # >>> bike:3 res20 = r.smembers("bikes:racing:france") print(res20) # >>> {'bike:2', 'bike:4', 'bike:5'} res21 = r.srandmember("bikes:racing:france") print(res21) # >>> bike:4
import assert from 'assert'; import { createClient } from 'redis'; const client = await createClient(); await client.connect(); const res1 = await client.sAdd('bikes:racing:france', 'bike:1') console.log(res1) // >>> 1 const res2 = await client.sAdd('bikes:racing:france', 'bike:1') console.log(res2) // >>> 0 const res3 = await client.sAdd('bikes:racing:france', ['bike:2', 'bike:3']) console.log(res3) // >>> 2 const res4 = await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) console.log(res4) // >>> 2 await client.del('bikes:racing:france') await client.del('bikes:racing:usa') await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') const res5 = await client.sIsMember('bikes:racing:usa', 'bike:1') console.log(res5) // >>> true const res6 = await client.sIsMember('bikes:racing:usa', 'bike:2') console.log(res6) // >>> false await client.del('bikes:racing:france') await client.del('bikes:racing:usa') await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') const res7 = await client.sInter('bikes:racing:france', 'bikes:racing:usa') console.log(res7) // >>> {'bike:1'} await client.del('bikes:racing:france') await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) const res8 = await client.sCard('bikes:racing:france') console.log(res8) // >>> 3 const res9 = await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) console.log(res9) // >>> 3 const res10 = await client.sMembers('bikes:racing:france') console.log(res10) // >>> ['bike:1', 'bike:2', 'bike:3'] const res11 = await client.sIsMember('bikes:racing:france', 'bike:1') console.log(res11) // >>> true const res12 = await client.smIsMember('bikes:racing:france', ['bike:2', 'bike:3', 'bike:4']) console.log(res12) // >>> [true, true, false] await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) const res13 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) console.log(res13) // >>> [ 'bike:2', 'bike:3' ] await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) await client.sAdd('bikes:racing:italy', ['bike:1', 'bike:2', 'bike:3', 'bike:4']) const res14 = await client.sInter( ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] ) console.log(res14) // >>> ['bike:1'] const res15 = await client.sUnion( ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] ) console.log(res15) // >>> ['bike:1', 'bike:2', 'bike:3', 'bike:4'] const res16 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy']) console.log(res16) // >>> [] const res17 = await client.sDiff(['bikes:racing:usa', 'bikes:racing:france']) console.log(res17) // >>> ['bike:4'] const res18 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) console.log(res18) // >>> ['bike:2', 'bike:3'] debugger; await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5']) const res19 = await client.sRem('bikes:racing:france', 'bike:1') console.log(res19) // >>> 1 const res20 = await client.sPop('bikes:racing:france') console.log(res20) // >>> bike:3 or other random value const res21 = await client.sMembers('bikes:racing:france') console.log(res21) // >>> ['bike:2', 'bike:4', 'bike:5']; depends on previous result const res22 = await client.sRandMember('bikes:racing:france') console.log(res22) // >>> bike:4 or other random value
package io.redis.examples; import redis.clients.jedis.UnifiedJedis; import org.junit.Test; import java.util.List; import java.util.Set; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertEquals; public class SetsExample { public void run() { UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379"); long res1 = jedis.sadd("bikes:racing:france", "bike:1"); System.out.println(res1); // >>> 1 long res2 = jedis.sadd("bikes:racing:france", "bike:1"); System.out.println(res2); // >>> 0 long res3 = jedis.sadd("bikes:racing:france", "bike:2", "bike:3"); System.out.println(res3); // >>> 2 long res4 = jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); System.out.println(res4); // >>> 2 jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); boolean res5 = jedis.sismember("bikes:racing:usa", "bike:1"); System.out.println(res5); // >>> true boolean res6 = jedis.sismember("bikes:racing:usa", "bike:2"); System.out.println(res6); // >>> false jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); Set<String> res7 = jedis.sinter("bikes:racing:france", "bikes:racing:usa"); System.out.println(res7); // >>> [bike:1] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); long res8 = jedis.scard("bikes:racing:france"); System.out.println(res8); // >>> 3 long res9 = jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); System.out.println(res9); // >>> 3 Set<String> res10 = jedis.smembers("bikes:racing:france"); System.out.println(res10); // >>> [bike:1, bike:2, bike:3] boolean res11 = jedis.sismember("bikes:racing:france", "bike:1"); System.out.println(res11); // >>> true List<Boolean> res12 = jedis.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4"); System.out.println(res12); // >>> [true,true,false] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); Set<String> res13 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa"); System.out.println(res13); // >>> [bike:2, bike:3] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3"); jedis.sadd("bikes:racing:usa", "bike:1", "bike:4"); jedis.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4"); Set<String> res14 = jedis.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res14); // >>> [bike:1] Set<String> res15 = jedis.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res15); // >>> [bike:1, bike:2, bike:3, bike:4] Set<String> res16 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy"); System.out.println(res16); // >>> [] Set<String> res17 = jedis.sdiff("bikes:racing:usa", "bikes:racing:france"); System.out.println(res17); // >>> [bike:4] Set<String> res18 = jedis.sdiff("bikes:racing:france", "bikes:racing:usa"); System.out.println(res18); // >>> [bike:2, bike:3] jedis.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"); long res19 = jedis.srem("bikes:racing:france", "bike:1"); System.out.println(res18); // >>> 1 String res20 = jedis.spop("bikes:racing:france"); System.out.println(res20); // >>> bike:3 Set<String> res21 = jedis.smembers("bikes:racing:france"); System.out.println(res21); // >>> [bike:2, bike:4, bike:5] String res22 = jedis.srandmember("bikes:racing:france"); System.out.println(res22); // >>> bike:4 jedis.close(); } }
package example_commands_test import ( "context" "fmt" "github.com/redis/go-redis/v9" ) func ExampleClient_sadd() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) res1, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res1) // >>> 1 res2, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res2) // >>> 0 res3, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:2", "bike:3").Result() if err != nil { panic(err) } fmt.Println(res3) // >>> 2 res4, err := rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } fmt.Println(res4) // >>> 2 } func ExampleClient_sismember() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } res5, err := rdb.SIsMember(ctx, "bikes:racing:usa", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res5) // >>> true res6, err := rdb.SIsMember(ctx, "bikes:racing:usa", "bike:2").Result() if err != nil { panic(err) } fmt.Println(res6) // >>> false } func ExampleClient_sinter() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } res7, err := rdb.SInter(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res7) // >>> [bike:1] } func ExampleClient_scard() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } res8, err := rdb.SCard(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res8) // >>> 3 } func ExampleClient_saddsmembers() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) res9, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } fmt.Println(res9) // >>> 3 res10, err := rdb.SMembers(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res10) // >>> [bike:1 bike:2 bike:3] } func ExampleClient_smismember() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } res11, err := rdb.SIsMember(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res11) // >>> true res12, err := rdb.SMIsMember(ctx, "bikes:racing:france", "bike:2", "bike:3", "bike:4").Result() if err != nil { panic(err) } fmt.Println(res12) // >>> [true true false] } func ExampleClient_sdiff() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() res13, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res13) // >>> [bike:2 bike:3] } func ExampleClient_multisets() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:usa", "bike:1", "bike:4").Result() if err != nil { panic(err) } _, err = rdb.SAdd(ctx, "bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4").Result() if err != nil { panic(err) } res14, err := rdb.SInter(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res14) // >>> [bike:1] res15, err := rdb.SUnion(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res15) // >>> [bike:1 bike:2 bike:3 bike:4] res16, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy").Result() if err != nil { panic(err) } fmt.Println(res16) // >>> [] res17, err := rdb.SDiff(ctx, "bikes:racing:usa", "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res17) // >>> [bike:4] res18, err := rdb.SDiff(ctx, "bikes:racing:france", "bikes:racing:usa").Result() if err != nil { panic(err) } fmt.Println(res18) // >>> [bike:2 bike:3] } func ExampleClient_srem() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password docs DB: 0, // use default DB }) _, err := rdb.SAdd(ctx, "bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5").Result() if err != nil { panic(err) } res19, err := rdb.SRem(ctx, "bikes:racing:france", "bike:1").Result() if err != nil { panic(err) } fmt.Println(res19) // >>> 1 res20, err := rdb.SPop(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res20) // >>> <random element> res21, err := rdb.SMembers(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res21) // >>> <remaining elements> res22, err := rdb.SRandMember(ctx, "bikes:racing:france").Result() if err != nil { panic(err) } fmt.Println(res22) // >>> <random element> // Testable examples not available because the test output // is not deterministic. }
using System.Data.Common; using NRedisStack.Tests; using StackExchange.Redis; public class SetsExample { public void run() { var muxer = ConnectionMultiplexer.Connect("localhost:6379"); var db = muxer.GetDatabase(); long res1 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" }); Console.WriteLine(res1); // >>> 1 long res2 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1" }); Console.WriteLine(res2); // >>> 0 long res3 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3" }); Console.WriteLine(res3); // >>> 2 long res4 = db.SetAdd("bikes:racing:usa", new RedisValue[] { "bike:1", "bike:4" }); Console.WriteLine(res4); // >>> 2 // Tests for 'sadd' step. bool res5 = db.SetContains("bikes:racing:france", "bike:1"); Console.WriteLine(res5); // >>> True bool res6 = db.SetContains("bikes:racing:usa", "bike:2"); Console.WriteLine(res6); // >>> False // Tests for 'sismember' step. long res7 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res8 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); RedisValue[] res9 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res9)); // >>> bike:1 // Tests for 'sinter' step. long res10 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res11 = db.SetLength("bikes:racing:france"); Console.WriteLine(res11); // >>> 3 // Tests for 'scard' step. long res12 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); RedisValue[] res13 = db.SetMembers("bikes:racing:france"); Console.WriteLine(string.Join(", ", res13)); // >>> bike:3, bike:2, bike:1 // Tests for 'sadd_smembers' step. bool res14 = db.SetContains("bikes:racing:france", "bike:1"); Console.WriteLine(res14); // >>> true bool[] res15 = db.SetContains("bikes:racing:france", new RedisValue[] { "bike:2", "bike:3", "bike:4" }); Console.WriteLine(string.Join(", ", res15)); // >>> True, True, False // Tests for 'smismember' step. long res16 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res17 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); RedisValue[] res18 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res18)); // >>> bike:2, bike:3 // Tests for 'sdiff' step. long res19 = db.SetAdd("{bikes:racing}:france", new RedisValue[] { "bike:1", "bike:2", "bike:3" }); long res20 = db.SetAdd("{bikes:racing}:usa", new RedisValue[] { "bike:1", "bike:4" }); long res21 = db.SetAdd("{bikes:racing}:italy", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4" }); RedisValue[] res22 = db.SetCombine(SetOperation.Intersect, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res22)); // >>> bike:1 RedisValue[] res23 = db.SetCombine(SetOperation.Union, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res23)); // >>> bike:1, bike:2, bike:3, bike:4 RedisValue[] res24 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa", "{bikes:racing}:italy" }); Console.WriteLine(string.Join(", ", res24)); // >>> <empty set> RedisValue[] res25 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:usa", "{bikes:racing}:france" }); Console.WriteLine(string.Join(", ", res25)); // >>> bike:4 RedisValue[] res26 = db.SetCombine(SetOperation.Difference, new RedisKey[] { "{bikes:racing}:france", "{bikes:racing}:usa" }); Console.WriteLine(string.Join(", ", res26)); // >>> bike:2, bike:3 // Tests for 'multisets' step. long res27 = db.SetAdd("bikes:racing:france", new RedisValue[] { "bike:1", "bike:2", "bike:3", "bike:4", "bike:5" }); bool res28 = db.SetRemove("bikes:racing:france", "bike:1"); Console.WriteLine(res28); // >>> True RedisValue res29 = db.SetPop("bikes:racing:france"); Console.WriteLine(res29); // >>> bike:3 RedisValue[] res30 = db.SetMembers("bikes:racing:france"); Console.WriteLine(string.Join(", ", res30)); // >>> bike:2, bike:4, bike:5 RedisValue res31 = db.SetRandomMember("bikes:racing:france"); Console.WriteLine(res31); // >>> bike:4 // Tests for 'srem' step. } }
Tutorial
The SADD
command adds new elements to a set. It's also possible
to do a number of other operations against sets like testing if a given element
already exists, performing the intersection, union or difference between
multiple sets, and so forth.
> SADD bikes:racing:france bike:1 bike:2 bike:3
(integer) 3
> SMEMBERS bikes:racing:france
1) bike:3
2) bike:1
3) bike:2
"""
Code samples for Set doc pages:
https://redis.io/docs/latest/develop/data-types/sets/
"""
import redis
r = redis.Redis(decode_responses=True)
res1 = r.sadd("bikes:racing:france", "bike:1")
print(res1) # >>> 1
res2 = r.sadd("bikes:racing:france", "bike:1")
print(res2) # >>> 0
res3 = r.sadd("bikes:racing:france", "bike:2", "bike:3")
print(res3) # >>> 2
res4 = r.sadd("bikes:racing:usa", "bike:1", "bike:4")
print(res4) # >>> 2
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
r.sadd("bikes:racing:usa", "bike:1", "bike:4")
res5 = r.sismember("bikes:racing:usa", "bike:1")
print(res5) # >>> 1
res6 = r.sismember("bikes:racing:usa", "bike:2")
print(res6) # >>> 0
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
r.sadd("bikes:racing:usa", "bike:1", "bike:4")
res7 = r.sinter("bikes:racing:france", "bikes:racing:usa")
print(res7) # >>> {'bike:1'}
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
res8 = r.scard("bikes:racing:france")
print(res8) # >>> 3
res9 = r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
print(res9) # >>> 3
res10 = r.smembers("bikes:racing:france")
print(res10) # >>> {'bike:1', 'bike:2', 'bike:3'}
res11 = r.sismember("bikes:racing:france", "bike:1")
print(res11) # >>> 1
res12 = r.smismember("bikes:racing:france", "bike:2", "bike:3", "bike:4")
print(res12) # >>> [1, 1, 0]
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
r.sadd("bikes:racing:usa", "bike:1", "bike:4")
res13 = r.sdiff("bikes:racing:france", "bikes:racing:usa")
print(res13) # >>> {'bike:2', 'bike:3'}
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
r.sadd("bikes:racing:usa", "bike:1", "bike:4")
r.sadd("bikes:racing:italy", "bike:1", "bike:2", "bike:3", "bike:4")
res13 = r.sinter("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy")
print(res13) # >>> {'bike:1'}
res14 = r.sunion("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy")
print(res14) # >>> {'bike:1', 'bike:2', 'bike:3', 'bike:4'}
res15 = r.sdiff("bikes:racing:france", "bikes:racing:usa", "bikes:racing:italy")
print(res15) # >>> {}
res16 = r.sdiff("bikes:racing:usa", "bikes:racing:france")
print(res16) # >>> {'bike:4'}
res17 = r.sdiff("bikes:racing:france", "bikes:racing:usa")
print(res17) # >>> {'bike:2', 'bike:3'}
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5")
res18 = r.srem("bikes:racing:france", "bike:1")
print(res18) # >>> 1
res19 = r.spop("bikes:racing:france")
print(res19) # >>> bike:3
res20 = r.smembers("bikes:racing:france")
print(res20) # >>> {'bike:2', 'bike:4', 'bike:5'}
res21 = r.srandmember("bikes:racing:france")
print(res21) # >>> bike:4
import assert from 'assert';
import { createClient } from 'redis';
const client = await createClient();
await client.connect();
const res1 = await client.sAdd('bikes:racing:france', 'bike:1')
console.log(res1) // >>> 1
const res2 = await client.sAdd('bikes:racing:france', 'bike:1')
console.log(res2) // >>> 0
const res3 = await client.sAdd('bikes:racing:france', ['bike:2', 'bike:3'])
console.log(res3) // >>> 2
const res4 = await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4'])