redis // redis-hash在传递512个哈希条目后被破坏

问题描述 投票:0回答:1

我只是在学习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两个散列中的值突然彼此不同时。有时,两个散列中的第一个值是相同的,但是随后的所有后续值都互不相同。

有人可以解释吗?

这是我正在其中运行的环境:

  • Raspberry Pi 4
  • Python 3.7.3
  • Redis服务器v = 5.0.3 sha = 00000000:0 malloc = jemalloc-5.1.0位= 32build = afa0decbb6de285f

Screenshot of values in both hashes with 512 runs

Screenshot of values in both hashes with 513 runs

Pastebin of the values in the two hashes at 513 loop runs

python python-3.x redis python-3.7 raspberry-pi4
1个回答
0
投票

两个散列中的值are相同-只是在超过512个条目之后,redis的顺序。hvals将它们打印出来的顺序突然不同,从而导致输出的视觉不匹配。

大卫说得对(请问他在问题后的第一条评论)。

© www.soinside.com 2019 - 2024. All rights reserved.