python - 检查 redis get key 是否可用,否则 python 脚本

标签 python redis

我目前正在为我自己的 3d 打印机使用 redis 设计一个自动 FIFO 队列,我是 python 脚本和 redis 的新手。如果您有更好的想法,我们将不胜感激。

我在创建用于检查键值是否可用的 python 脚本时遇到了问题。

目前我的python脚本是

import redis
import os
import time

r = redis.StrictRedis(host='172.16.114.54', port=6379, db=0)

if r.lrange('stlfile',0 ,0) == None:
        print 'there is no key'
else:
        print r.lrange('stlfile',0 ,0)

输出:

root@user:~/scripts# python autoslice.py
['172.16.114.162/registered/uploads/teemo.stl']

虽然我的 redis 有这些值

172.16.114.54:6379> lrange stlfile 0 -1
1) "172.16.114.162/registered/uploads/teemo.stl"
2) "172.16.114.162/registered/uploads/hunter_knife.stl"

我目前可以执行 r.lrange('STLfile', 0,0) 并且我的第一个键值将输出。

第一个问题: 我如何编写 python 脚本来检查值是否存在或是否出现“nil”?我应该进行字符串检查吗?

第二个问题: 我的值 r.lrange('STLfile', 0,0) 出现了,这是我想要的但没有 ['xxx'](引号),我该如何删除他们自动? (只留下xxx值)

我曾尝试使用它删除我的报价但无济于事 python How can I strip first and last double quotes

string = string[1:-1]

>>>r = redis.StrictRedis(host='172.16.114.54', port=6379, db=0)
>>>string = r.lrange ('stlfile', 0, 0)
>>>x = string[1:-1]
>>>print x
[]

不太清楚为什么我的输出是 [] 而不是不带引号的字符串

最佳答案

1) 您可以针对 None

测试您的返回值
if key_value == None:
   print 'there was no key'
else:
   print 'key_value was', key_value

2) 是什么让您认为返回值有引号?你确定是这样吗?看看这个:

    ~ mgregory$ python
Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> one = "a"
>>> print one
a
>>> one
'a'
>>> result = [one]
>>> print result
['a']
>>> value = result[0]
>>> print value
a
>>> 

请注意,从 redis.StrictRedis() 返回的值不是字符串,而是数组。

我们知道这一点是因为 x 是一个数组 - 当您最终打印它时它是一个空数组。

它为空并不奇怪,因为它从一个元素开始,然后从中减去两个元素。

如果你真的认为来自redis的项目确实有引号,那么你需要做

result = r.lrange ('stlfile', 0, 0)
string = result[0]
x = string[1:-1]
print x

我预测这会导致您的字符串缺少第一个和最后一个字符 - 我不相信来自 redis 的结果中实际上有引号。

也许您的问题的核心是您认为结果是一个字符串,而实际上它是一个数组....

关于python - 检查 redis get key 是否可用,否则 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29641563/

相关文章:

Python Redis 队列 (rq) - 如何避免为每个作业预加载 ML 模型?

python - 将数据框的每个切片保存到特定的 Excel 工作表中

python - 高效生成斯特恩双原子序列

node.js - Express 和 Redis - 如果该用户存在 session ,则不允许访问

node.js - XMPP/Jabber 与 Redis Pub/Sub 的实时聊天服务器对比

node.js - Memcache v/s redis 用于维护持久 session ?

python - 使用 source 命令运行 bash 脚本时出现问题

python - 获取每月数据库的每日平均值

javascript - 需要外部输入的 Node.js 单例模块模式

python - Heroku 的 Python 找不到要导入的 redis(redistogo)