python中redis的hset()
我还有一个问题: 我在python中为Redis服务器使用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
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进行试验。非常感谢,现在一切都清楚了。我只是以错误的顺序定义了我的参数