问题描述

今天在使用python的redis客户端时碰到了这样的报错:redis.exceptions.ResponseError: value is not an integer or out of range,是在使用setex函数时出的问题。

问题分析

明明在我的开发环境上跑的好好着,怎么到测试环境就有问题了?然后试着看了下我的开发环境和测试环境的redis客户端版本,一个是2.x,一个是3.x,测试环境的redis客户端是新安装的,那就把3.x卸了装个2.x吧,再跑的就ok了,看来是版本差异。本着将问题追踪到底的宗旨,去PyPI上找redis客户端的更新文档,一般这种在使用上出现了较大差异的都是大版本更新,直接找到3.0的更新文档,看到了下面这样的说明。

大意就是3.0的客户端已经废弃了Redis这个类,将之前的StrictRedis类改名为Redis,这样在使用SETEX方法时,参数的顺序已经变了(name, time, value),不再是之前的(name, value,time),那么Redis这个类和StrictRedis类有什么区别呢?如下:

StrictRedis:用于实现大部分官方的命令,并使用官方的语法和命令(比如,SET命令对应与StrictRedis.set方法)

Redis:是StrictRedis的子类,用于向后兼容旧版本的redis-py。

简单的说,官方推荐使用StrictRedis类,不推荐Redis类,原因是他和咱们在redis-cli操作有些不一样,主要不一样是下面这三个方面。

1、LREM:参数 'num' 和 'value' 的顺序交换了一下,cli是 lrem queueName 0 'string' , 这里的0时所有的意思, 但是Redis这个类,把0和string的位置调换了;

2、ZADD:实现时 score 和 value 的顺序不小心弄反了,后来有人用了,就这样了;

3、SETEX:time 和 value 的顺序反了。

解决方法

所以解决办法就有两种,第一种,按照3.x中的规定修改setex函数的参数顺序,第二种,换回2.x,当然还是推荐第一种办法。

redis报错: redis.exceptions.ResponseError: value is not an integer or out of range的更多相关文章

  1. mac brew install redis 报错

    mac brew install redis 报错 /usr/local/opt/php55/bin/phpize /usr/local/opt/php55/bin/phpize: line 61: ...

  2. redis报错Windows error 0x70(a large memory)

    redis报错Windows error 0x70 redis 嫌弃你内存不够了,就给你不开第二个实例. The Windows version of Redis allocates a large ...

  3. filebeat output redis 报错 i/o timeout

    filebeat output  redis 报错 i/o timeout 先把报错内容贴出来. ERROR redis/client. go: Failed to RPUSH to redis li ...

  4. window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error

    window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error 解决: 如果没有配置环境,在安 ...

  5. Redis报错 : (error) NOAUTH Authentication required.

    原文:Redis报错 : (error) NOAUTH Authentication required. 这个错误是因为没有用密码登陆认证 , 先输入密码试试 . 127.0.0.1:6379> ...

  6. Windows安装redis报错处理(转!)

    要谈则谈,要打便打! ---2019.5.9,贸易战 转自:http://www.yayihouse.com/yayishuwu/chapter/1297 安装redis报错信息 [9204] 15 ...

  7. redis报错解决

    1.Connecting to node 127.0.0.17000 [ERR] Sorry, can't connect to node 192.168.1.917000 redis集群:Conne ...

  8. 安装Redis-cluster-gem install redis报错的解决方案

    错误描述: [root@eshop-cache01 local]# gem install redis ERROR: Loading command: install (LoadError) cann ...

  9. docker启动redis报错 oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo

    docker启动redis报错 1:C 17 Jun 08:18:04.613 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo1:C 17 Jun 08 ...

随机推荐

  1. [日常] 免费的文本比较工具Meld使用

    需要在linux桌面环境进行文件比较的时候,发现的一款文本比较工具,并且还有windows版本.之前一直在windows下使用的是beyond compare这个的破解版,这个软件本身是收费的而且还非 ...

  2. [视频教程] ubuntu系统下以守护进程方式安装使用Redis

    直接访问redis的中国官网,在下载部分,可以看到安装和使用的方式.wget http://download.redis.io/releases/redis-5.0.4.tar.gztar xzf r ...

  3. 自定义MVC三

    完成t_mvc_book表的增删改查1.通用分页的jar.自定义mvc框架.自定义标签 导入jar.导入之前写好的pageTag.自定义mvc.xml pageTag private static f ...

  4. 1.Python网络编程_UDP(简略版)

    # -*- coding: utf-8 -*- #2019-11-24 import socket def recv(): udp_socket=socket.socket(socket.AF_INE ...

  5. ORM对象关系映射:

    django配置orm: django使用mysql数据库: 首先cmd创建库 settings配置mysql数据库: DATABASES = { 'default': { 'ENGINE': 'dj ...

  6. 【Eureka篇三】Eureka如何管理服务调用(6)

    在Eureka Client启动时,将自身的服务的信息发送到Eureka Server.然后进行2调用当前服务器节点中的其他服务信息,保存到Eureka Client中.当服务间相互调用其它服务时,在 ...

  7. 【Eureka篇三】EurekaServer服务注册中心(1)

    注:在前面[Rest微服务案例(二)]的基础上进行操作. 1. 新建Maven Module,子模块名称为microservicecloud-eureka-7001,packaging为jar模式 & ...

  8. 洛谷 P5596 【XR-4】题

    洛谷 P5596 [XR-4]题 洛谷传送门 题目描述 小 X 遇到了一道题: 给定自然数 a,ba,b,求满足下列条件的自然数对 (x,y)(x,y) 的个数: y^2 - x^2 = ax + b ...

  9. Potyczki Algorythmiczne 2019

    Runda próbna: A + B 设$f[i]$表示两数相加得到前$i$位的方案数,由$f[i-1]$和$f[i-2]$转移得到. #include<cstdio> #include ...

  10. 这几款我私藏的Markdown编辑器,今天分享给你

    相信很多人都使用 Markdown 来编写文章,Markdown 语法简洁,使用起来很是方便,而且各大平台几乎都已支持 Markdown 语法 那么,如何选择一款趁手的 Markdown 编辑器,就是 ...