问题描述

今天在使用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. CSS百分比padding实现比例固定图片自适应布局

    一.CSS百分比padding都是相对宽度计算的 在默认的水平文档流方向下,CSS margin和padding属性的垂直方向的百分比值都是相对于宽度计算的,这个和top, bottom等属性的百分比 ...

  2. 新建全色或者resize(毫无价值,只是做记录)

    import glob import os,sys import shutil import numpy as np import cv2 import matplotlib.pyplot as pl ...

  3. 解决Python开发中,Pycharm中无法使用中文输入法问题

    Pycharm是开发Python程序的利器,但有时会遇到无法输入中文的情况.表现为:在Ubuntu系统可以正常输入中文,却在Pycharm内写注释的时候,切换不出中文.下面演示如何解决此问题. 1.在 ...

  4. 安装QTP之后造成环境变量java冲突问题的解决方案

    参考:http://www.cnblogs.com/yhcreak/p/6340125.html

  5. springboot中Thymeleaf和Freemarker模板引擎的区别

    前言这两个都是属于模板引擎,但是各有各的好处,enn,在市面上比较多的也就是jsp.freemarker.velocity.thymeleaf等页面方案.Thymeleaf和Freemarker的区别 ...

  6. Jquery的一些总结点

    $("#a").attr("hidden", false); //显现内容

  7. 14 opencv读取XML

    https://blog.csdn.net/A_L_A_N/article/details/83272772 FileStorage类 FileStorage类将各种OpenCV数据结构的数据存储为X ...

  8. vbs与其他语言进行交互编程(外存传参)

    vbs没有自定义排序函数.无需自己造轮子,可以用其他语言来完成这个任务(在传递数据比较简单的情况下,例如只传递数组). 首先用5分钟写一个C++排序的代码.命名为“mysort.cpp”: #incl ...

  9. ORB-SLAM2 地图加载

    一.前面说了ORB-SLAM地图的保存部分,继续说地图如何加载,因为加载部分相比保存要稍微复杂一些,所以要多说一点. 二.ORB-SLAM2地图加载构成 首先同样是在头文件中声明加载函数,包含地图点和 ...

  10. keras.preprocessing.text.Tokenizer

    说明:num_words的参数设置,对应着sequences_to_matrix方法返回的arrray的shape[1],用于约束返回数组的第2个维度.对texts_to_sequences(text ...