sql >> Database >  >> NoSQL >> Redis

Sleutels opslaan met prefix die vervallen in redis

Dit kan niet direct. U kunt een vervaldatum toevoegen aan de hset als geheel, maar niet aan afzonderlijke velden. Als je dit wilt doen, kun je r.expire('name', time) . aanroepen , waar time is het aantal seconden tot de vervaldatum.

Als alternatief kunt u set . gebruiken in plaats van hset :

for i in range(10):
    r.set('name:' + str(i), i, ex=time_to_expire_s)

Dit neemt wat functionaliteit weg, omdat je (bijvoorbeeld) geen goede manier hebt om alle sleutels weer te geven die beginnen met 'name:', maar je kunt wel de vervaldatums voor sleutels onafhankelijk instellen.

Als tweede optie kunt u vervaldatums instellen in de waarden van de hset . Dit vereist logica aan de clientzijde, en Redis zal niets voor u wissen; maar je zou iets kunnen doen als:

for i in range(10):
    r.hset(
        'name',
        i,
        json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
    )

En als u dan ooit een waarde leest waarvan de vervaldatum in het verleden ligt, beschouwt u dat als een cache-misser. Dit zal je niet helpen als je sleutels probeert te laten verlopen om geheugen vrij te maken, maar als het je doel is om de sleutels om een ​​of andere reden te laten verlopen, kan dit voor jou werken.




  1. MongoDB sort()

  2. Hoe Redis-sleutels in serie met Java te repareren

  3. Networkx is nooit klaar met het berekenen van Betweenness centrality voor 2 mil nodes

  4. Wat is InputSplit in Hadoop MapReduce?