Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Przechowywanie kluczy z prefiksem, które wygasają w redis

Nie można tego zrobić bezpośrednio. Możesz dodać wygaśnięcie w hset jako całości, ale nie w poszczególnych polach. Jeśli chcesz to zrobić, możesz wywołać r.expire('name', time) , gdzie time to liczba sekund do wygaśnięcia.

Alternatywnie możesz użyć set zamiast hset :

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

Odbierze to część funkcjonalności, ponieważ (na przykład) nie będziesz mieć dobrego sposobu na wyświetlenie listy wszystkich kluczy zaczynających się od „nazwa:”, ale pozwoli ci to niezależnie ustawić wygaśnięcie ważności kluczy.

Jako drugą opcję możesz ustawić wygaśnięcia w wartościach hset . Wymaga to logiki po stronie klienta, a Redis nie zrobi za ciebie żadnego kasowania; ale możesz zrobić coś takiego:

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

A potem, jeśli kiedykolwiek przeczytasz wartość, której wygaśnięcie przypada w przeszłości, uważasz to za chybienie pamięci podręcznej. To nie pomoże, jeśli próbujesz wygasnąć klucze w celu zwolnienia pamięci, ale jeśli Twoim celem jest wygaśnięcie kluczy z jakiegoś powodu poprawności, może to zadziałać.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy można redis potokować wiele poleceń, które zależą od poprzednich?

  2. Redis slave nie zsynchronizuje się z master

  3. Redis wielu subskrybentów

  4. Jak mogę przekonwertować bajty na cały ciąg szesnastkowy?

  5. Railsy i buforowanie, czy łatwo jest przełączać się między memcache a redis?