簡體   English   中英

檢查redis獲取密鑰是否可用,否則為python腳本

[英]Check redis get key available, if else python script

我目前正在為自己的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如何去除第一個和最后一個雙引號

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的結果中有引號。

也許您問題的核心是您認為結果是一個字符串,而實際上卻是一個數組。...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM