列表操作:
如:[102, 0, 43, 102, 43]
lpush左插入
rpush
blpop,加了b的都会阻塞,当没有数据的时候,会阻塞住,加timeout就可以设置阻塞的时间,返回None
brpop
lpop左边获取
rpop右边获取
lrange
顾头顾尾
lindex:
val1 = conn.lindex('k3', -1) ##根据索引来取值
print(val1)
lrange:
result = conn.lrange('k3', 0, 100)
##循环打印出0,到100的值出来
print(result)
lpop: 每取出一个值就减少一个值,可以打印取出的值
value = conn.lpop('k3') ##取出最后一个值出来,从左边取数据出来,取出第一个数据出来,一个一个的取值出来
print(value)
##rpop从右边拿出值出来
blpop:当没有数据的时候停住(可以设置timeout)
# val=conn.blpop('k3')##从左边开始取数据出来,一个一数据减少,当没有数据的时候,停住,一直到有数据的时候才可以
# val=conn.blpop('k3',timeout=10)##设置超时时间,当没有数据的时候,等待10秒就结束,还没有数据就结束
# print(val)
lpush: 从左边放值进去
# res=conn.lpush('k3',18)#从左边开始加数据进去,rpush右边放值进去
一次放多个值进去
conn.lpush('k4', *[1, 3, 54, 546, 565, 767343, 34']#一次传多个值进去
队列,往里面放,在往里面取出来,先进先出
栈,后进先出
conn = redis.Redis(host='127.0.0.1', port=6379, max_connections=1000)
例子:
scan_iter
列表没有iter,字典,集合都有iter,循环打印出来
列表生成迭代器:
def iter(key, count=2): ##当没有传参数count进来的时候,就会用默认的参数,如果传了的话,就会用传的参数
index = 0
while True:
val = conn.lrange(key, index, index + count - 1)
if not val:
break
index += count ##每一次加2进去,循环迭代生成出全部的值出来
yield val
# for i in val:
# yield i##循环打印出来,当每执行一次的时候,就打印出结果来
print('*' * 100)
val1 = iter('k3', count=2)
for i in val1:
print(i)
例子:
def fun():
for i in range(1, 100):
# return i
yield i
obj = fun()
print(obj)
for i in obj:
print(i)
开启事务:
pipe = conn.pipeline(transaction=True)
pipe.multi() ##可以多个
# 里面的字典,列表的操作都可以在这里执行,集合
pipe.lpush('k4', 43)
print(pipe.lpush('k4', 0))
pipe.execute()
print(conn.lrange('k4', 0, 100))
# 开启事务,一次发送多个命令