redis // redis-ha sh ломается после прохождения 512 ha sh записей - PullRequest
1 голос
/ 03 апреля 2020

Я только изучаю 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.

Вот странное поведение:

Когда я запускаю через l oop 512 раз (т.е. while x < 512) значения в обоих хешах идентичны (как и должно быть).

Но когда я пробегаю l oop 513 раз (то есть while x < 513) , значения в двух хешах внезапно отличаются друг от друга, Иногда первое значение в двух хешах идентично, но тогда все следующие значения отличаются друг от друга.

Может кто-нибудь объяснить это?

Вот среда, в которой я запускаю это:

  • Raspberry Pi 4
  • Python 3.7.3
  • Redis-сервер v = 5.0.3 sha = 00000000: 0 malloc = jemallo c -5.1.0 биты = 32 build = afa0decbb6de285f

Снимок экрана значений в обоих хэшах с 512 запусками

Снимок экрана значений в обоих хешах с 513 запусками

Вставка значений из двух хешей при 513 л oop выполняется

1 Ответ

0 голосов
/ 03 апреля 2020

Значения в обоих хэшах идентичны - просто после того, как более 512 записей порядок их вывода redis.hvals неожиданно меняется, что приводит к визуальному несоответствию на выходе.

Дэвид понял все правильно (см. Его первый комментарий после вопроса).

...