Python向Redis写入列表数据,redis-cli显示异常问题咨询
Redis列表元素显示问题解答
没错,这绝对是redis-cli的正常显示方式,但背后的原因是你的代码写法导致列表里存的是三个独立元素,而不是你期望的单个"对象"。
让我拆解一下细节:
- 你代码里用了
r.rpush(contractTuple[0], *seq),这里的*操作符会把seq这个列表拆成三个独立的参数传递给rpush。也就是说,你相当于执行了r.rpush(key, ts, 'ask', msg.price),所以Redis的列表里会新增三个单独的元素,而不是把整个seq作为一个整体存进去。 - redis-cli在执行
lrange命令时,会把列表中的每个元素单独打印一行,所以你看到的三行输出完全符合当前数据的存储状态。
如果想把seq作为单个"对象"存储,你需要把它序列化成一个单一的字符串(Redis列表的元素只能是字符串类型),最常用的方式是用JSON序列化:
import json from datetime import datetime ts = datetime.now().timestamp() if msg.field == 2: seq = [ts, 'ask', msg.price] # 将序列转为JSON字符串 serialized_seq = json.dumps(seq) r.rpush(contractTuple[0], serialized_seq)
这样再用lrange ES 0 -1查看时,就会看到单个元素,比如:
- "[1523994426.496158,"ask",2699.5]"
之后需要使用这个数据时,只需要用json.loads()把字符串解析回原来的列表即可。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

