Guf*_*oru 4 python hashset redis
我有下一个问题:
我hset()在python中使用Redis Server 的过程.此过程在此处描述.
好吧,现在我无法理解参数value...从一方面它应该是一个数字0或1,无论如何我也可以使用其他数字这个参数(我也在网上找到其他值的例子).例如我定义下一个def:
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);
Run Code Online (Sandbox Code Playgroud)
并使用下一个参数获得正确的输出:
setHashKeyValue('5', 'test ok for key 5', 1)
setHashKeyValue('6', 'test ok for key 6', 1)
Run Code Online (Sandbox Code Playgroud)
另一方面,我想为时间测量定义一些循环,所以我定义下一个def:
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;
Run Code Online (Sandbox Code Playgroud)
和
print loopKeyValues(1000)
Run Code Online (Sandbox Code Playgroud)
此函数返回给我一个HashValue的错误消息:
redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value
Run Code Online (Sandbox Code Playgroud)
当我使用set()-def代替时hset(),程序会给我一个很好的时间图.这里有什么问题,参数是什么意思value?
value参数只是哈希对象条目的键.
散列对象就像Python字典.它们提供关联数组.当你写:
redis_server.hset(key, value, number)
Run Code Online (Sandbox Code Playgroud)
这意味着将使用条目"value"/"number"添加/设置散列对象"key".在Python中,你会写:
key[value] = number
Run Code Online (Sandbox Code Playgroud)
您收到错误,因为在Redis中键入了对象.在给定键存储字符串后,Redis不再考虑此对象是一个哈希对象:因此与哈希对象关联的操作将不适用于此键.
换句话说,如果你有:
SET 10 100
Run Code Online (Sandbox Code Playgroud)
那么你做不到:
HSET 10 100 1
Run Code Online (Sandbox Code Playgroud)
但是你可以这样做:
DEL 10
HSET 10 100 1
Run Code Online (Sandbox Code Playgroud)
我建议在使用Python脚本之前使用redis-cli程序来试验Redis.