我只是在学习redis,并写了一个小片段来测试与redis数据库的连接,写入和读取。这是脚本:
import random
import redis
from datetime import datetime
random.seed(1)
temps = "t"
humids = "h"
# create connection to redis server on default port 6379
POOL = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
redis = redis.StrictRedis(connection_pool=POOL)
x = 0
while x < 513:
y = random.random()
now = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')
# next line to cut off timestamp at millisecond precision
# now = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
redis.hset(temps, str(now)+"_t", y)
redis.hset(humids, str(now)+"_h", y)
x += 1
# print(redis.hgetall(sensor_log))
print("****************************************")
print("all temps:\n")
print(redis.hvals(temps))
print("****************************************")
print("all humids:\n")
print(redis.hvals(humids))
print("****************************************")
print("done")
此代码段(显然)创建了一个随机数并将其写入两个redis哈希值。
这是奇怪的行为:
当我遍历循环512次(即while x < 512
)两个散列中的值均为identical(应为正确值)。
但是当我遍历循环513次(即while x < 513
)两个散列中的值突然彼此不同时。有时,两个散列中的第一个值是相同的,但是随后的所有后续值都互不相同。
有人可以解释吗?
这是我正在其中运行的环境:
Screenshot of values in both hashes with 512 runs
两个散列中的值are相同-只是在超过512个条目之后,redis的顺序。hvals将它们打印出来的顺序突然不同,从而导致输出的视觉不匹配。
大卫说得对(请问他在问题后的第一条评论)。