Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中redis的hset()_Python_Redis_Hashset - Fatal编程技术网

python中redis的hset()

python中redis的hset(),python,redis,hashset,Python,Redis,Hashset,我还有一个问题: 我在python中为Redis服务器使用hset()过程。描述了该过程 好的,现在我无法理解参数值。。。从一方面来说,它应该是一个数字0或1,无论如何,我也可以使用其他数字作为这个参数(我还发现网络中有其他值的例子)。例如,我定义下一个定义: def setHashKeyValue(key, value, number): assert (key != None), "Please, get a key" #assert (number

我还有一个问题:

我在python中为Redis服务器使用
hset()
过程。描述了该过程

好的,现在我无法理解参数
。。。从一方面来说,它应该是一个数字0或1,无论如何,我也可以使用其他数字作为这个参数(我还发现网络中有其他值的例子)。例如,我定义下一个定义:

    def setHashKeyValue(key, value, number):
        assert (key != None), "Please, get a key"
        #assert (number == 0 or number ==1), "Please enter 0 or 1"
        redis_server.hset(key, value, number);
def loopKeyValues(number):
    timeUse = []
    for x in range(number):
        start = time.time()
        setHashKeyValue(x, x**2, 1)
        end = time. time()
        timeUse.append(end-start)
    plt.plot(timeUse)
    plt.ylabel("time")
    plt.show()
    return timeUse;
并通过以下参数获得正确的输出:

setHashKeyValue('5', 'test ok for key 5', 1)
setHashKeyValue('6', 'test ok for key 6', 1)
另一方面,我想为时间测量定义一些循环,因此我定义下一个定义:

    def setHashKeyValue(key, value, number):
        assert (key != None), "Please, get a key"
        #assert (number == 0 or number ==1), "Please enter 0 or 1"
        redis_server.hset(key, value, number);
def loopKeyValues(number):
    timeUse = []
    for x in range(number):
        start = time.time()
        setHashKeyValue(x, x**2, 1)
        end = time. time()
        timeUse.append(end-start)
    plt.plot(timeUse)
    plt.ylabel("time")
    plt.show()
    return timeUse;

此函数返回HashValue的错误消息:

redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value

当我使用
set()
-def而不是
hset()
时,程序会返回一个很好的时间图。这里可能有什么问题?参数
value
是什么意思?

value参数只是散列对象项的键

散列对象类似于Python字典。它们提供关联数组。当你写作时:

redis_server.hset(key, value, number)
这意味着哈希对象“key”将添加/设置一个条目“value”/“number”。在Python中,您可以编写:

key[value] = number
出现错误,因为在Redis中,对象是键入的。一旦您在给定的密钥中存储了一个字符串,ReDIS就不能再考虑这个对象是一个哈希对象:因此,与哈希对象相关的操作将不适用于这个键。 换句话说,如果您有:

SET 10 100
那么你不能做:

HSET 10 100 1
但是,您可以:

DEL 10
HSET 10 100 1

在使用Python脚本之前,我建议使用redis cli程序对redis进行试验。

非常感谢,现在一切都清楚了。我只是以错误的顺序定义了我的参数