redis-py调用lrange()函数触发TypeError,请求技术排查帮助
问题排查与解决方案
错误原因分析
报错TypeError("int() argument must be a string, a bytes-like object or a real number, not 'NoneType'")的核心是:你传入int()函数的参数是None值。虽然你贴的代码里写了int(0)或int(-1),但这大概率是简化后的写法——实际代码中你可能是从变量(比如配置项、用户输入)获取start/end值,而这些变量没有被正确赋值,导致传入int()的是None。
具体解决步骤
- 移除多余的
int()调用:lrange的start和end参数本身就接受整数,直接传0和-1即可,不需要额外转换。如果你是用变量传递参数,先确认变量不是None。 - 检查Redis客户端初始化:确保
redis_client是正确实例化的对象,示例代码如下:import redis # 基础初始化(根据你的Redis配置调整host/port/db) redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True) # 可选:测试连接是否正常 print(redis_client.ping()) # 输出True则连接正常 - 运行最小测试代码验证:用极简代码确认功能正常,排除其他代码干扰:
import redis redis_client = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True) # 先写入测试数据(如果已有数据可跳过) redis_client.rpush('TLV-NYC', 'sample_data_1', 'sample_data_2') # 读取列表 redis_data = redis_client.lrange('TLV-NYC', 0, -1) print(redis_data) # 应输出列表内容 - 排查变量赋值逻辑:如果上述测试代码正常,回到你的原有代码,检查传递给
lrange的start/end变量是否被正确赋值,比如是否从空的配置项、未初始化的变量中取值导致None。
内容的提问来源于stack exchange,提问作者Daniel Avigdor
相关产品推荐
相关产品推荐

