OBJECT ENCODING / IDLETIME / FREQ în Redis & In-Memory Data Store

Arată detalii interne despre o cheie: codificarea în memorie, de cât timp nu a fost accesată și frecvența de acces.

Sintaxă comandă
OBJECT ENCODING key
OBJECT IDLETIME key
OBJECT FREQ key
OBJECT REFCOUNT key

Ce face OBJECT ENCODING / IDLETIME / FREQ

OBJECT ENCODING spune cum este stocată intern valoarea. Un string poate fi int, embstr (texte scurte, până la 44 de octeți) sau raw. Hash-urile, listele, seturile și sorted set-urile mici folosesc listpack (compact), iar cele mari trec la hashtable, quicklist sau skiplist. Seturile de numere mici pot fi intset.

OBJECT IDLETIME întoarce câte secunde au trecut de la ultimul acces la cheie (util pentru a găsi chei uitate). OBJECT FREQ (Redis 4.0.0+) dă contorul de frecvență, dar doar dacă maxmemory-policy este o politică LFU; altfel întoarce o eroare.

Parametri

Parametru Descriere
ENCODING Codificarea internă a valorii.
IDLETIME Secunde de la ultimul acces (nu merge cu o politică LFU).
FREQ Frecvența logaritmică de acces (doar cu politică LFU).
REFCOUNT Numărul de referințe interne la valoare (rar folosit).

Ce returnează

Codificarea ca șir sau un (integer) pentru IDLETIME/FREQ/REFCOUNT; (nil) dacă cheia nu există.

Exemple

Exemplul 1: Codificări pentru string-uri

Un număr se salvează ca int, un text scurt ca embstr.

SET varsta 31
OBJECT ENCODING varsta
SET nume Ana
OBJECT ENCODING nume

Ieșire în redis-cli

127.0.0.1:6379> SET varsta 31
OK
127.0.0.1:6379> OBJECT ENCODING varsta
"int"
127.0.0.1:6379> SET nume Ana
OK
127.0.0.1:6379> OBJECT ENCODING nume
"embstr"

Exemplul 2: Structuri mici și chei neaccesate

Un hash mic stă compact în listpack, iar un set cu numere în intset. Cheia raport:vechi nu a fost atinsă de aproape o zi.

HSET profil:ana nume Ana oras Iasi
OBJECT ENCODING profil:ana
SADD note 9 10 8
OBJECT ENCODING note
OBJECT IDLETIME raport:vechi

Ieșire în redis-cli

127.0.0.1:6379> HSET profil:ana nume Ana oras Iasi
(integer) 2
127.0.0.1:6379> OBJECT ENCODING profil:ana
"listpack"
127.0.0.1:6379> SADD note 9 10 8
(integer) 3
127.0.0.1:6379> OBJECT ENCODING note
"intset"
127.0.0.1:6379> OBJECT IDLETIME raport:vechi
(integer) 84210

Greșeli frecvente

  • OBJECT IDLETIME dă eroare când serverul folosește o politică LFU, iar OBJECT FREQ dă eroare când nu folosește una.
  • Codificarea se schimbă automat când structura crește peste pragurile *-max-listpack-entries / *-max-listpack-value; nu o poți forța cu o comandă.

Comenzi înrudite

  • TYPE: Arată tipul valorii unei chei: string, list, set, zset, hash, stream sau none dacă nu există.
  • INFO: Afișează informații și statistici despre server: versiune, memorie, clienți, persistență, replicare și chei pe baze de date.
  • CONFIG GET / CONFIG SET: Citește (CONFIG GET) sau schimbă (CONFIG SET) setările serverului în timp ce rulează, fără repornire.