Sets
What is a Redis Set?
Section titled “What is a Redis Set?”A Redis Set is an unordered collection of unique strings. Adding a member that already exists is a no-op — Redis does not create duplicates. This makes Sets ideal for tracking tags, visited pages, or any group where each value should appear exactly once.
SADD and SREM — adding and removing members
Section titled “SADD and SREM — adding and removing members”SADD key member [member ...] adds one or more members. It returns the count of new members added (duplicates are not counted).
SREM key member [member ...] removes members and returns how many were actually present.
127.0.0.1:6379> SADD article:1:tags "redis" "database" "caching"(integer) 3127.0.0.1:6379> SADD article:1:tags "redis"(integer) 0127.0.0.1:6379> SREM article:1:tags "caching"(integer) 1127.0.0.1:6379> SREM article:1:tags "nosql"(integer) 0SADD article:1:tags "redis" "database" "caching"
SADD article:1:tags "redis"
SREM article:1:tags "caching"
SREM article:1:tags "nosql"SMEMBERS and SCARD — inspecting a Set
Section titled “SMEMBERS and SCARD — inspecting a Set”SMEMBERS key returns all members (order is not guaranteed). SCARD key returns the cardinality (number of members) without fetching them all.
127.0.0.1:6379> SADD user:42:interests "music" "hiking" "redis" "coffee"(integer) 4127.0.0.1:6379> SMEMBERS user:42:interests1) "coffee"2) "redis"3) "music"4) "hiking"127.0.0.1:6379> SCARD user:42:interests(integer) 4SADD user:42:interests "music" "hiking" "redis" "coffee"
SMEMBERS user:42:interests
SCARD user:42:interestsSISMEMBER — membership check
Section titled “SISMEMBER — membership check”SISMEMBER key member returns 1 if the member exists, 0 if not. This is an O(1) lookup regardless of Set size.
127.0.0.1:6379> SADD seen:urls "https://redis.io" "https://astro.build"(integer) 2127.0.0.1:6379> SISMEMBER seen:urls "https://redis.io"(integer) 1127.0.0.1:6379> SISMEMBER seen:urls "https://example.com"(integer) 0SADD seen:urls "https://redis.io" "https://astro.build"
SISMEMBER seen:urls "https://redis.io"
SISMEMBER seen:urls "https://example.com"SRANDMEMBER and SPOP — random access
Section titled “SRANDMEMBER and SPOP — random access”SRANDMEMBER key [count] returns random members without removing them.
SPOP key [count] removes and returns random members. Both are useful for sampling, prizes, or random assignments.
127.0.0.1:6379> SADD prize:pool "alpha" "beta" "gamma" "delta" "epsilon"(integer) 5127.0.0.1:6379> SRANDMEMBER prize:pool 21) "delta"2) "gamma"127.0.0.1:6379> SCARD prize:pool(integer) 5127.0.0.1:6379> SPOP prize:pool 11) "alpha"127.0.0.1:6379> SCARD prize:pool(integer) 4SADD prize:pool "alpha" "beta" "gamma" "delta" "epsilon"
SRANDMEMBER prize:pool 2
SCARD prize:pool
SPOP prize:pool 1
SCARD prize:pool