今天发现,使用redis-py从redis中获取的数据竟然是加密的。

conn = redis.Redis(host='redis_serverip', port=6379, password='redis_password', db=0)

conn.set('string-key1', 'value1')

result = conn.get('string-key1')
print('result:', result)
print('result type:', type(result))
print() result_decoded = result.decode('utf-8')
print('result_decoded:', result_decoded)
print('result_decoded type:', type(result_decoded))
print() result_str = str(result)
print('result_str:', result_str)
print('result_str type:', type(result_str))
print() print('test int in redis...\n') conn.set('string-key2', 100)
result = conn.get('string-key2')
print('result:', result)
print('result type:', type(result))
print() result_decoded = int(result)
print('result_decoded:', result_decoded)
print('result_decoded type:', type(result_decoded))

输出:

result: b'value1'
result type: <class 'bytes'>

result_decoded: value1
result_decoded type: <class 'str'>

result_str: b'value1'
result_str type: <class 'str'>

test int in redis...

result: b'100'
result type: <class 'bytes'>

result_decoded: 100
result_decoded type: <class 'int'>

可以看出:

如果传入str,传出的是bytes,需要通过decode('utf-8')进行恢复。

如果传入int,传出的是bytes,需要通过int()进行恢复。

另一种解决办法是在创建redis client时,进行decode设置。

conn = redis.Redis(host='redis_serverip', port=6379, password='redis_password', db=0, decode_responses=True)

conn.set('string-key3', 'value3')

result = conn.get('string-key3')
print('result:', result)
print('result type:', type(result))
print() print('test int in redis...\n') conn.set('string-key4', 100) result = conn.get('string-key4')
print('result:', result)
print('result type:', type(result))
print() result_decoded = int(result)
print('result_decoded:', result_decoded)
print('result_decoded type:', type(result_decoded))

输出:

result: value3
result type: <class 'str'>

test int in redis...

result: 100
result type: <class 'str'>

result_decoded: 100
result_decoded type: <class 'int'>

这种情况下,str是正常的,int需要注意一下。

参考资料:

Problem with hash get/set

redis-py中的坑的更多相关文章

  1. 分布式爬虫scrapy-redis中settings.py中的配置信息

    SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 使用scrapy-redis的调度器 ITEM_PIPELINES = { 'sc ...

  2. php安装扩展redis淌过的坑

    php安装扩展redis淌过的坑 php扩展 redis cd /usr/local/src/ wget https://github.com/nicolasff/phpredis/archive/2 ...

  3. Torch-RNN运行过程中的坑 [2](Lua的string sub函数,读取中文失败,乱码?)

    0.踩坑背景 仍然是torch-rnn/LanguageModel.lua文件中的一些问题,仍然是这个狗血的LM:encode_string函数: function LM:encode_string( ...

  4. linux上部署redis实现与Python上的redis交互(有坑)

    1.概念 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件 2.linux安装redis 2.1yum源安装redis(不推荐) #前提得配置好阿里 ...

  5. 饿了么这样跳过Redis Cluster遇到的“坑”

    内容来源:2017 年 8 月 12 日,饿了么高级Python工程师黄光星在“CRUG 2017北京活动”进行<Redis Cluster运维方案>演讲分享.IT 大咖说(微信id:it ...

  6. 决策树python建模中的坑 :ValueError: Expected 2D array, got 1D array instead:

    决策树python建模中的坑 代码 #coding=utf-8 from sklearn.feature_extraction import DictVectorizerimport csvfrom ...

  7. python调用py中rar的路径问题。

    1.python调用py,在py中的os.getcwd()获取的不是py的路径,可以通过os.path.split(os.path.realpath(__file__))[0]来获取py的路径. 2. ...

  8. Django 中 如何使用 settings.py 中的常量

    在用django 框架开发 python web 程序的时候 , 在模板页面经常会用到 settings.py 中设置的常量,比如MEDIA_URL, 我尝试过在模板页面用类似如下的方式 程序代码 { ...

  9. PHP redis Api 中文文档

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/ow ...

  10. django访问sqlserver中的坑

    首先不用说先安装django-sqlserver    pip install django-sqlserver 然后在settings.py中修改'ENGINE': 'sqlserver_ado', ...

随机推荐

  1. rdd简单操作

    1.原始数据 Key value Transformations(example: ((1, 2), (3, 4), (3, 6)))  2. flatMap测试示例 object FlatMapTr ...

  2. PyCharm 项目打开窗口设置为当前还是新开一个怎么办?

     前言:       我找这个设置找了好久,后来在一篇博文中才找到,现在记录下来一下,顺便带图解释一下   设置步骤: File -> Setting -> Appearance & ...

  3. Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统

    Silverlight 2.5D RPG游戏技巧与特效处理:(十一)AI系统 作者: 深蓝色右手  来源: 博客园  发布时间: 2011-04-19 11:18  阅读: 1282 次  推荐: 0 ...

  4. ASE课程总结 by 冯晓云

    开始的开始,采访往届ASE班的blog:http://www.cnblogs.com/legs/p/4894362.html 和北航软工M1检查:http://www.cnblogs.com/legs ...

  5. stand up meeting for beta release plan 12/16/2015

    今天我们开会讨论一下beta版需要的feature,其中待定的feature是可选做的,如果有时间.其他都是必须实现的. 因为做插件的计划失败了,所以我们现在是pdf阅读器和取词查词加入生词本这两部分 ...

  6. HashMap之KeySet分析

    本篇涵盖 1.HashMap并不是用keySet来存储key的原因及证明 2.keySet方法返回后的remove.add操作原理 一.方法作用 概括一下 1.keySet方法返回map中包含的键的集 ...

  7. 如果这篇文章说不清epoll的本质,那就过来掐死我吧!

    转载自:https://www.toutiao.com/i6683264188661367309/ 目录 一.从网卡接收数据说起 二.如何知道接收了数据? 三.进程阻塞为什么不占用cpu资源? 四.内 ...

  8. (一)C# Windows Mobile 半透明窗体

    Windows Mobile,个人心中臻至完美的系统. 不忍自己对WM的钻研成果消逝,故留作纪念. 系列开篇,便是一个曾令自己困扰很久的问题:如何实现半透明窗体. 如果了解Win32编程,其实很简单. ...

  9. Java 使用正则表达式和IO实现爬虫以及503解决

    我这边找了个小说网站: 基本套路: 第一步:获取小说每一章的url地址 第二步:获取章节url内容并使用正则表达式提取需要的内容 第三步:多线程封装,实现如下效果 最后测试. 代码: 内容获取封装: ...

  10. javascript-文件File转换成base64格式

    不能直接访问用户计算机中的文件,一直都是Web应用开发中的一大障碍.2000年以前,处理文件的唯一方式就是在表单中加入<input type="file">字段,仅此而 ...