AeroSpike создал TTL в моих записях

Мне трудно понять следующее из документации AeroSpike:

http://www.aerospike.com/docs/client/python/usage/kvs/record-structure.html

Запись также имеет два значения метаданных, связанных с ней: генерация записи (количество раз, когда она была изменена) и ее ttl. Для ttl можно установить количество секунд, оставшихся до истечения срока действия, или 0 (для «никогда не истечет» и по умолчанию). Записи, срок жизни которых истек, будут удалены сервером. Каждый раз, когда запись записывается или к ней прикасаются (используя touch()), ее ttl сбрасывается.

Моя первоначальная мысль заключалась в том, что если значение ttl по умолчанию для политики пространства имен установлено равным 0, то срок действия записей не истечет.

Конфигурация моего пространства имен Aerospike следующая:

namespace brand {
        replication-factor 2
        memory-size 4G
        default-ttl 0 # 30 days, use 0 to never expire/evict.

        storage-engine memory

        # To use file storage backing, comment out the line above and use the
        # following lines instead.
        set twitter {
                set-disable-eviction true
        }

        storage-engine device {
                file /opt/aerospike/data/bar.dat
                filesize 16G
                data-in-memory true # Store data in memory in addition to file.
        }
}

Я сделал несколько вставок в базу данных, затем, когда я получил данные, я получил следующее:

{ name: 'test',
  twitter: 'test',
  domain: 'test.com',
  description: 'Your First Round Fund' } { ttl: 4294967295, gen: 2 }

Каким-то образом на записи появился ttl, и другие записи тоже имеют ttl. Я не хочу, чтобы мои записи были удалены из базы данных. Как убрать ttl из записей и как не допустить этого в будущем?

"asadm -e 'show stat like ttl' Показывает следующее:

~~~~brand Namespace Statistics~~~~
NODE                :   1            
cold-start-evict-ttl:   4294967295   
default-ttl         :   0            
max-ttl             :   0            

~~~~test Namespace Statistics~~~~~
NODE                :   1            
cold-start-evict-ttl:   4294967295   
default-ttl         :   2592000      
max-ttl             :   0            

asinfo -v 'hist-dump:ns=brand;hist=ttl' Показывает следующее

brand:ttl=100,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

person Milos Bejda    schedule 23.10.2015    source источник
comment
(отдельная проблема) У вас есть 2 механизма хранения. память механизма хранения используется только для пространств имен в памяти.   -  person kporter    schedule 23.10.2015
comment
Не могли бы вы запустить и предоставить asadm -e 'показать статистику как ttl'   -  person kporter    schedule 23.10.2015
comment
Обновлен ответ с asadm -e 'показать статистику как ttl'   -  person Milos Bejda    schedule 23.10.2015
comment
test имеет значение ttl по умолчанию, но я предполагаю, что вы писали для бренда, а значение по умолчанию для бренда правильно настроено. Не могли бы вы запустить asinfo -v 'hist-dump:ns=brand;hist=ttl'   -  person kporter    schedule 23.10.2015
comment
Ты прав. Я пишу в пространство имен «бренд», и это то, что отображает ttl. Я обновил вопрос.   -  person Milos Bejda    schedule 23.10.2015
comment
Похоже, проблема может быть в файле cold-start-evict-ttl.   -  person Milos Bejda    schedule 23.10.2015
comment
Судя по гистограмме, все ttls равны 0. Какой инструмент показывал иначе?   -  person kporter    schedule 23.10.2015
comment
Метаинформация об операциях получения node.js отображает { ttl: 4294967295, gen: 2 }. github.com/aerospike/aerospike-client-nodejs   -  person Milos Bejda    schedule 23.10.2015


Ответы (1)


Метаинформация об операциях получения node.js отображает {ttl: 4294967295, gen: 2}.

Хорошо! Таким образом, 32-битное целое число без знака TTL, вы видите максимальное значение (2 ^ 32 -1), если бы оно было подписанным, оно было бы -1. Максимальное значение имеет особое значение в Aerospike и означает, что оно живет бесконечно. Aerospike уже около года принимает -1 как неопределенный, а 0 от клиента означает использование сервера по умолчанию.

Клиент node.js основан на нашем клиенте c, который был изменен для преобразования значений ttl 0 с сервера в 0xFFFFffff или -1. Это упоминалось в примечаниях к выпуску клиента c 3.0.51.

Спасибо, что обратили внимание на эту проблему, похоже, в этой области есть устаревшие документы.

person kporter    schedule 23.10.2015
comment
Большое спасибо за разъяснение этого :) - person Milos Bejda; 24.10.2015