# 建立连接
conn = get_redis_connection('default')
# 存
conn.rpush(key_name, str({"api_key":"1234"})) # 将 {"api_key":"1234"}这个字典作为value 存入键为key_name的列表中
#即:key_name:[{"api_key":"1234"},{"two_key":"4567"},...]
# 取
data = conn.blpop(key_name) # data是一个二进制元组,(b'key_name, b'{"api_key":"1234"})
#所以如果想得到value值,得先进行解包
key_name, value_dict= data
value_dict = b'{"api_key":"1234"}
#需要强调一下,任何从redis取出来的数据,都是二进制,要先进行二进制解码
value_dict = value_dict.decode("UTF-8")
#解码后value_dict的类型是string, 如果想要得到其中字典的值,就需要进行转换
value_dict = eval(value_dict) # eval可以智能地根据字符串中的数据类型进行转换。
再说一下conn.blpop
它是在redis中对应的key,如果有value,就弹出来并返回(就是redis中取出来后就删了,再想去取是取不到的,有一个弹一个)。
如果没有value,那么就会阻塞,直到有人往里面存数据,即存即取。
可以设置超时时间,在60s后还是没有等到数据存入,那么就返回None.
data = conn.blpop(key_name,timeout=60)
对于队列顺序,如果需求是先进先出,使用rpush去存。
如果需求是先进后出,使用lpush去存