doctests/dt_set.py (84 lines of code) (raw):
# EXAMPLE: sets_tutorial
# HIDE_START
"""
Code samples for Set doc pages:
https://redis.io/docs/latest/develop/data-types/sets/
"""
import redis
r = redis.Redis(decode_responses=True)
# HIDE_END
# REMOVE_START
r.delete("bikes:racing:france")
r.delete("bikes:racing:usa")
# REMOVE_END
# STEP_START sadd
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
# STEP_END
# REMOVE_START
assert res1 == 1
assert res2 == 0
assert res3 == 2
assert res4 == 2
# REMOVE_END
# STEP_START sismember
# HIDE_START
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
r.sadd("bikes:racing:usa", "bike:1", "bike:4")
# HIDE_END
res5 = r.sismember("bikes:racing:usa", "bike:1")
print(res5) # >>> 1
res6 = r.sismember("bikes:racing:usa", "bike:2")
print(res6) # >>> 0
# STEP_END
# REMOVE_START
assert res5 == 1
assert res6 == 0
# REMOVE_END
# STEP_START sinter
# HIDE_START
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
r.sadd("bikes:racing:usa", "bike:1", "bike:4")
# HIDE_END
res7 = r.sinter("bikes:racing:france", "bikes:racing:usa")
print(res7) # >>> {'bike:1'}
# STEP_END
# REMOVE_START
assert res7 == {"bike:1"}
# REMOVE_END
# STEP_START scard
# HIDE_START
r.sadd("bikes:racing:france", "bike:1", "bike:2", "bike:3")
# HIDE_END
res8 = r.scard("bikes:racing:france")
print(res8) # >>> 3
# STEP_END
# REMOVE_START
assert res8 == 3
r.delete("bikes:racing:france")
# REMOVE_END
# STEP_START sadd_smembers
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'}
# STEP_END
# REMOVE_START
assert res9 == 3
assert res10 == {'bike:1', 'bike:2', 'bike:3'}
# REMOVE_END
# STEP_START smismember
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]
# STEP_END
# REMOVE_START
assert res11 == 1
assert res12 == [1, 1, 0]
# REMOVE_END
# STEP_START sdiff
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'}
# STEP_END
# REMOVE_START
assert res13 == {'bike:2', 'bike:3'}
r.delete("bikes:racing:france")
r.delete("bikes:racing:usa")
# REMOVE_END
# STEP_START multisets
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'}
# STEP_END
# REMOVE_START
assert res13 == {'bike:1'}
assert res14 == {'bike:1', 'bike:2', 'bike:3', 'bike:4'}
assert res15 == {}
assert res16 == {'bike:4'}
assert res17 == {'bike:2', 'bike:3'}
r.delete("bikes:racing:france")
r.delete("bikes:racing:usa")
r.delete("bikes:racing:italy")
# REMOVE_END
# STEP_START srem
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
# STEP_END
# REMOVE_START
assert res18 == 1
# none of the other results are deterministic
# REMOVE_END