Redis EXPIRE Hash Key

Redis Expire Hash Key



Ang mga redis na hash ay isang espesyal na uri ng uri ng data na higit na katulad sa object ng JSON, Java HashMap, o isang diksyunaryo ng Python. Higit pa rito, ito ay isang koleksyon ng mga pares ng field-value na maaaring magamit upang magmodelo ng mga object ng domain. Ang istraktura ng data ng hash ng Redis ay napakahusay sa memorya kung saan ang bawat hash key ay maaaring mag-imbak ng hanggang apat na bilyong pares ng field-value. Pinakamahalaga, ang mga pangunahing pagpapatakbo ng hash tulad ng HSET, HGET, HMGET, atbp. ay gumagana sa patuloy na pagiging kumplikado ng oras.


Ang mga redis hash key ay may walang katapusang oras upang mabuhay (TTL) na nangangahulugang ang mga ito ay paulit-ulit na sila ay tahasang tinanggal gamit ang mga utos tulad ng DEL. Sa artikulong ito, tututuon natin ang pagtatakda ng TTL para sa mga hash ng Redis gamit ang utos na EXPIRE.







Redis EXPIRE Command

Ang EXPIRE command ay ginagamit upang magtakda ng timeout sa isang ibinigay na key ng isang Redis hash, set, list, atbp. Ang Redis key ay tatanggalin mula sa database kung ang timeout ay mag-e-expire. Pinakamahalaga, hindi malinaw ang timeout hanggang sa matanggal o ma-overwrite ang mga nilalaman ng key. Ang pagbabago sa mga halagang nauugnay sa isang susi ay hindi makakaapekto sa oras ng pag-expire.



Ang syntax ng EXPIRE command ay ang mga sumusunod:



EXPIRE key expiry_time_seconds [ NX | GX | GT | LT ]


susi: Ang key ng Hash, List, o Set na kailangan mong magtakda ng timeout.





expirty_time_seconds: Ang halaga ng timeout sa mga segundo.

Maraming opsyonal na argumento ang tinatanggap ng EXPIRE command.



NX: Ang halaga ng timeout ay itinakda lamang kung ang tinukoy na key ay wala pang expiry.

XX: Kapag ang tinukoy na key ay may umiiral nang value ng timeout, itatakda ang bagong expiry.

GT: Kung mas malaki ang bagong value ng timeout kaysa sa dati, itatakda ang bagong expiry.

LT: Nakatakda ang bagong value ng timeout kung mas malaki ang dati kaysa sa bago.

Pinakamahalaga, ang utos na EXPIRE ay gumagana sa patuloy na pagiging kumplikado ng oras. Ang integer 1 ay ibinalik kung ang command execution ay matagumpay. Kung nabigo ang operasyon dahil sa mga maling argumento o hindi umiiral na mga key, ibinabalik ang 0.

Gagamitin namin ang EXPIRE command sa mga hash upang magtakda ng oras ng pag-expire tulad ng ipinapakita sa sumusunod na seksyon:

I-expire ang Redis Hash Gamit ang EXPIRE Command

Ipagpalagay natin na ang isang impormasyon ng session bawat user ay nakaimbak sa isang Redis hash session:id:1000:user:10. Maaari naming gamitin ang utos ng HMSET upang lumikha ng isang Redis hash na may maraming mga pares ng field-value tulad ng sumusunod:

hmset session:id: 1000 :user: 10 username 'jae' cookie 'oo' password '389Ysu2'


Suriin natin ang ginawang hash gamit ang HGETALL command.

hgetall session:id: 1000 :user: 10



Bilang karagdagan, ang session ay mag-e-expire pagkatapos ng 10 segundo kung ang user ay idle nang higit sa 60 segundo. Ang pag-expire ng session ay nakakamit sa pamamagitan ng pagtatakda ng oras ng pag-expire para sa hash na nag-iimbak ng impormasyon ng session.

Magagamit natin ang EXPIRE command gaya ng sumusunod:

mag-expire session:id: 1000 :user: 10 10


Gaya ng nabanggit, ang halaga ng timeout ay nakatakda sa 10 segundo.


Gaya ng inaasahan, ang return value ay 1 na nangangahulugang matagumpay na naitakda ang TTL para sa hash. Suriin natin ang natitirang oras bago maalis ang hash key sa Redis store. Ang TTL command ay maaaring gamitin bilang mga sumusunod:

ttl session:id: 1000 :user: 10



Gaya ng ipinapakita sa output, tatlong segundo ang natitira bago awtomatikong alisin ang hash. Pagkatapos ng 10 segundo, ang TTL command output ay ang mga sumusunod:


Habang ang -2 integer na tugon ay ipinahiwatig, ang hash ay hindi umiiral.

Itakda ang Timeout Batay sa Pagkakaroon ng Expiry Time

Ang EXPIRE command ay tumatanggap ng NX at XX argument para magtakda ng bagong timeout batay sa pagkakaroon ng expiry para sa isang tinukoy na hash. Gumawa tayo ng bagong hash gamit ang walangTimeOut susi .

hmset noTimeOut name 'pagsusulit'


Subukan nating magtakda ng bagong pag-expire sa nakaraang hash. Bilang karagdagan, ipinapasa namin ang argumento ng XX sa utos na EXPIRE din.

mag-expire nang walangTimeOut labinlima XX


Dahil tinukoy namin ang XX opsyon sa command, hindi itatakda ang oras ng pag-expire. Hindi ka pinapayagan ng opsyong XX na magtakda ng bagong oras ng pag-expire kung walang umiiral na timeout na nauugnay sa tinukoy na hash key.


Kung gagamitin natin ang NX opsyon, ang halaga ng timeout ay nakatakda sa 15.

mag-expire nang walangTimeOut labinlima NX



Ang EXPIRE command ay nagbabalik ng integer 1 na tugon na nangangahulugan na ang timeout ay naitakda nang maayos.

Itakda ang Timeout Batay sa Kasalukuyang Timeout Value

Maaaring gamitin ang mga opsyon sa GT at LT upang itakda ang oras ng pag-expire ng hash batay sa kasalukuyang haba ng timeout.

Gumawa tayo ng bagong hash na tinatawag hashWithTimeout.

hmset hashWithTimeout field1 value1


Susunod, nagtakda kami ng 200 segundong expiry time para sa hash.

mag-expire ang hashWithTimeout 200


Subukan nating magtakda ng bagong timeout na 100 segundo para sa hash kasama ang opsyong GT gaya ng sumusunod:

mag-expire ang hashWithTimeout 100 GT


Dahil ang GT na opsyon ay tinukoy, ang EXPIRE command ay titingnan kung ang bagong timeout value ay mas malaki kaysa sa dati at itatakda ang bagong expiry time. Sa halimbawang ito, ang bagong timeout ay hindi mas malaki kaysa sa kasalukuyang timeout. Kaya, hindi itatakda ng command ang bagong oras ng pag-expire at ibabalik ang 0.


Gamitin natin ang opsyong LT sa halip na GT. Dahil ang bagong oras ng pag-expire ay mas mababa kaysa sa kasalukuyan, ang sumusunod na command ay dapat na matagumpay na itakda ang bagong timeout.

mag-expire ang hashWithTimeout 100 LT


Konklusyon

Sa madaling salita, ang Redis EXPIRE command ay ginagamit upang magtakda ng TTL value para sa isang ibinigay na key. Bilang default, ang mga Redis hash key ay hindi nauugnay sa anumang timeout na tinatawag na non-volatile. Tulad ng tinalakay, ang EXPIRE command ay ginagamit upang magtakda ng timeout value sa Redis hash. Karaniwan, ang hash ay tinatanggal mula sa Redis data store pagkatapos ng tagal ng oras na tinukoy bilang isang timeout value. Gaya ng ipinapakita sa mga halimbawa, ang EXPIRE command ay tumatanggap ng ilang opsyonal na argumento tulad ng XX, NX, GT, at LT para itakda ang hash expiry batay sa isang kundisyon.