sql >> Databáze >  >> NoSQL >> Redis

moje redis klíče nevyprší

Vzhledem k tomu, že děláte „...“, je těžké říci s jistotou, ale řekl bych, že během této části nastavujete mykey, což účinně odstraní vypršení platnosti.

Z příručky EXPIRE

Časový limit se vymaže pouze po odstranění klíče pomocí příkazu DEL nebo přepsání pomocí příkazů SET nebo GETSET

Také ohledně odpovědi -1 od TTL

Návratová hodnota

Celočíselná odpověď:TTL v sekundách nebo -1, když klíč neexistuje nebo nemá časový limit.

UPRAVIT:Všimněte si, že toto chování se ve verzi Redis 2.8 změnilo

Počínaje verzí Redis 2.8 se návratová hodnota v případě chyby změnila:
Příkaz vrátí hodnotu -2, pokud klíč neexistuje.
Příkaz vrátí hodnotu -1, pokud klíč existuje, ale nemá přidružené vypršení platnosti.
Příkaz vrátí hodnotu -1. P>

Jinými slovy, pokud váš klíč existuje, zdá se, že je trvalý, tj. nemá nastavenou dobu platnosti.

EDIT:Zdá se, že to mohu reprodukovat, pokud vytvořím klíč na podřízeném serveru REDIS, podřízený klíč nesmaže bez hlavního vstupu, protože normálně byste klíče nevytvářeli lokálně na podřízeném serveru. Je to tento případ?

Zatímco však podřízeným zařízením připojeným k hlavnímu zařízení nevyprší platnost klíčů nezávisle (ale bude čekat na DEL přicházející od hlavního zařízení), stále budou mít plný stav vypršení platnosti existující v datové sadě, takže když je podřízený systém zvolen jako hlavní zařízení, bude moci vypršet platnost klíčů nezávisle a bude plně fungovat jako hlavní.




  1. Dostávám duplicitní zprávy v mé seskupené aplikaci node.js/socket.io/redis pub/sub

  2. Jak sečíst hodnotu klíče ve všech dokumentech v kolekci MongoDB

  3. Výkon MongoDB:Spouštění operací MongoDB Map-Reduce na sekundárních serverech

  4. Mongodb Healthcheck krok za krokem