doctests/dt_list.py (182 lines of code) (raw):
# EXAMPLE: list_tutorial
# HIDE_START
"""
Code samples for List doc pages:
https://redis.io/docs/latest/develop/data-types/lists/
"""
import redis
r = redis.Redis(decode_responses=True)
# HIDE_END
# REMOVE_START
r.delete("bikes:repairs")
r.delete("bikes:finished")
# REMOVE_END
# STEP_START queue
res1 = r.lpush("bikes:repairs", "bike:1")
print(res1) # >>> 1
res2 = r.lpush("bikes:repairs", "bike:2")
print(res2) # >>> 2
res3 = r.rpop("bikes:repairs")
print(res3) # >>> bike:1
res4 = r.rpop("bikes:repairs")
print(res4) # >>> bike:2
# STEP_END
# REMOVE_START
assert res1 == 1
assert res2 == 2
assert res3 == "bike:1"
assert res4 == "bike:2"
# REMOVE_END
# STEP_START stack
res5 = r.lpush("bikes:repairs", "bike:1")
print(res5) # >>> 1
res6 = r.lpush("bikes:repairs", "bike:2")
print(res6) # >>> 2
res7 = r.lpop("bikes:repairs")
print(res7) # >>> bike:2
res8 = r.lpop("bikes:repairs")
print(res8) # >>> bike:1
# STEP_END
# REMOVE_START
assert res5 == 1
assert res6 == 2
assert res7 == "bike:2"
assert res8 == "bike:1"
# REMOVE_END
# STEP_START llen
res9 = r.llen("bikes:repairs")
print(res9) # >>> 0
# STEP_END
# REMOVE_START
assert res9 == 0
# REMOVE_END
# STEP_START lmove_lrange
res10 = r.lpush("bikes:repairs", "bike:1")
print(res10) # >>> 1
res11 = r.lpush("bikes:repairs", "bike:2")
print(res11) # >>> 2
res12 = r.lmove("bikes:repairs", "bikes:finished", "LEFT", "LEFT")
print(res12) # >>> 'bike:2'
res13 = r.lrange("bikes:repairs", 0, -1)
print(res13) # >>> ['bike:1']
res14 = r.lrange("bikes:finished", 0, -1)
print(res14) # >>> ['bike:2']
# STEP_END
# REMOVE_START
assert res10 == 1
assert res11 == 2
assert res12 == "bike:2"
assert res13 == ["bike:1"]
assert res14 == ["bike:2"]
r.delete("bikes:repairs")
# REMOVE_END
# STEP_START lpush_rpush
res15 = r.rpush("bikes:repairs", "bike:1")
print(res15) # >>> 1
res16 = r.rpush("bikes:repairs", "bike:2")
print(res16) # >>> 2
res17 = r.lpush("bikes:repairs", "bike:important_bike")
print(res17) # >>> 3
res18 = r.lrange("bikes:repairs", 0, -1)
print(res18) # >>> ['bike:important_bike', 'bike:1', 'bike:2']
# STEP_END
# REMOVE_START
assert res15 == 1
assert res16 == 2
assert res17 == 3
assert res18 == ["bike:important_bike", "bike:1", "bike:2"]
r.delete("bikes:repairs")
# REMOVE_END
# STEP_START variadic
res19 = r.rpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
print(res19) # >>> 3
res20 = r.lpush("bikes:repairs", "bike:important_bike", "bike:very_important_bike")
print(res20) # >>> 5
res21 = r.lrange("bikes:repairs", 0, -1)
print(
res21
) # >>> ['bike:very_important_bike', 'bike:important_bike', 'bike:1', ...
# STEP_END
# REMOVE_START
assert res19 == 3
assert res20 == 5
assert res21 == [
"bike:very_important_bike",
"bike:important_bike",
"bike:1",
"bike:2",
"bike:3",
]
r.delete("bikes:repairs")
# REMOVE_END
# STEP_START lpop_rpop
res22 = r.rpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
print(res22) # >>> 3
res23 = r.rpop("bikes:repairs")
print(res23) # >>> 'bike:3'
res24 = r.lpop("bikes:repairs")
print(res24) # >>> 'bike:1'
res25 = r.rpop("bikes:repairs")
print(res25) # >>> 'bike:2'
res26 = r.rpop("bikes:repairs")
print(res26) # >>> None
# STEP_END
# REMOVE_START
assert res22 == 3
assert res23 == "bike:3"
assert res24 == "bike:1"
assert res25 == "bike:2"
assert res26 is None
# REMOVE_END
# STEP_START ltrim
res27 = r.rpush("bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5")
print(res27) # >>> 5
res28 = r.ltrim("bikes:repairs", 0, 2)
print(res28) # >>> True
res29 = r.lrange("bikes:repairs", 0, -1)
print(res29) # >>> ['bike:1', 'bike:2', 'bike:3']
# STEP_END
# REMOVE_START
assert res27 == 5
assert res28 is True
assert res29 == ["bike:1", "bike:2", "bike:3"]
r.delete("bikes:repairs")
# REMOVE_END
# STEP_START ltrim_end_of_list
res27 = r.rpush("bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5")
print(res27) # >>> 5
res28 = r.ltrim("bikes:repairs", -3, -1)
print(res28) # >>> True
res29 = r.lrange("bikes:repairs", 0, -1)
print(res29) # >>> ['bike:3', 'bike:4', 'bike:5']
# STEP_END
# REMOVE_START
assert res27 == 5
assert res28 is True
assert res29 == ["bike:3", "bike:4", "bike:5"]
r.delete("bikes:repairs")
# REMOVE_END
# STEP_START brpop
res31 = r.rpush("bikes:repairs", "bike:1", "bike:2")
print(res31) # >>> 2
res32 = r.brpop("bikes:repairs", timeout=1)
print(res32) # >>> ('bikes:repairs', 'bike:2')
res33 = r.brpop("bikes:repairs", timeout=1)
print(res33) # >>> ('bikes:repairs', 'bike:1')
res34 = r.brpop("bikes:repairs", timeout=1)
print(res34) # >>> None
# STEP_END
# REMOVE_START
assert res31 == 2
assert res32 == ("bikes:repairs", "bike:2")
assert res33 == ("bikes:repairs", "bike:1")
assert res34 is None
r.delete("bikes:repairs")
r.delete("new_bikes")
# REMOVE_END
# STEP_START rule_1
res35 = r.delete("new_bikes")
print(res35) # >>> 0
res36 = r.lpush("new_bikes", "bike:1", "bike:2", "bike:3")
print(res36) # >>> 3
# STEP_END
# REMOVE_START
assert res35 == 0
assert res36 == 3
r.delete("new_bikes")
# REMOVE_END
# STEP_START rule_1.1
res37 = r.set("new_bikes", "bike:1")
print(res37) # >>> True
res38 = r.type("new_bikes")
print(res38) # >>> 'string'
try:
res39 = r.lpush("new_bikes", "bike:2", "bike:3")
# >>> redis.exceptions.ResponseError:
# >>> WRONGTYPE Operation against a key holding the wrong kind of value
except redis.exceptions.ResponseError as e:
print(e)
# STEP_END
# REMOVE_START
assert res37 is True
assert res38 == "string"
r.delete("new_bikes")
# REMOVE_END
# STEP_START rule_2
r.lpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
print(res36) # >>> 3
res40 = r.exists("bikes:repairs")
print(res40) # >>> 1
res41 = r.lpop("bikes:repairs")
print(res41) # >>> 'bike:3'
res42 = r.lpop("bikes:repairs")
print(res42) # >>> 'bike:2'
res43 = r.lpop("bikes:repairs")
print(res43) # >>> 'bike:1'
res44 = r.exists("bikes:repairs")
print(res44) # >>> False
# STEP_END
# REMOVE_START
assert res40 == 1
assert res41 == "bike:3"
assert res42 == "bike:2"
assert res43 == "bike:1"
assert res44 == 0
r.delete("bikes:repairs")
# REMOVE_END
# STEP_START rule_3
res45 = r.delete("bikes:repairs")
print(res45) # >>> 0
res46 = r.llen("bikes:repairs")
print(res46) # >>> 0
res47 = r.lpop("bikes:repairs")
print(res47) # >>> None
# STEP_END
# REMOVE_START
assert res45 == 0
assert res46 == 0
assert res47 is None
# REMOVE_END
# STEP_START ltrim.1
res48 = r.lpush("bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5")
print(res48) # >>> 5
res49 = r.ltrim("bikes:repairs", 0, 2)
print(res49) # >>> True
res50 = r.lrange("bikes:repairs", 0, -1)
print(res50) # >>> ['bike:5', 'bike:4', 'bike:3']
# STEP_END
# REMOVE_START
assert res48 == 5
assert res49 is True
assert res50 == ["bike:5", "bike:4", "bike:3"]
r.delete("bikes:repairs")
# REMOVE_END