lbalaceanu left a comment (kamailio/kamailio#4306)
Sorry for not making this clearer.
Until now, when using usrloc + redis, when 497xxxxxxxxx @ domain would register, then the following data structs would be created:
HASH "location:entry::uloc-686296ea-5773d-1" -> contact info SET "location:usrdom::497xxxxxxxxx:domain" -> contains "location:entry::uloc-686296ea-5773d-1" , but might have more entries SET "location::index::usrdom" -> contains "location:usrdom::497xxxxxxxxx:domain" etc SET "location:timer::2025-06-30 17:54:03" "location:entry::uloc-686296ea-5773d-1" SET "location::index::timer" "location:timer::2025-06-30 17:54:03"
This commit changes all the sets to hashes, the keys being the previous entries in the hashes. We do this because from v7.4 on, Redis allows auto-expiry on key level. With this patch we set expires on location:entry::uloc-686296ea-5773d-1 itself and on its corresponding keys in "location:usrdom::497xxxxxxxxx:domain", "location::index::usrdom", "location:timer::2025-06-30 17:54:03" , "location::index::timer".
We saw this also as a relatively low hanging fruit since there was a todo comment in the db_redis code stating: // TODO: utilize auto-expiry? on insert/update, also update expire value // of mappings