Redis SCARD

Redis Scard



«Τα σύνολα Redis είναι μη ταξινομημένες συλλογές χορδών που δεν περιέχουν διπλότυπα. Αυτά είναι πολύ παρόμοια με τα Java HashSets, Python Sets, κ.λπ. Το πιο σημαντικό, θεμελιώδεις λειτουργίες όπως η προσθήκη, η αφαίρεση και ο έλεγχος της ύπαρξης ενός μέλους είναι εξαιρετικά αποτελεσματικές επειδή λειτουργούν σε πολυπλοκότητα χρόνου O(1).

Μέλη ενός σετ

Όπως αναφέρθηκε, τα σετ Redis περιέχουν μοναδικά στοιχεία συμβολοσειράς. Τα ήδη υπάρχοντα στοιχεία δεν θα γίνουν αποδεκτά από τα σετ Redis και θα αγνοηθούν. Επιπλέον, ένα μεμονωμένο σετ μπορεί να χωρέσει έως και 4 δισεκατομμύρια μοναδικές χορδές.









Η φύση του σετ Redis να κρατά μοναδικά μέλη είναι χρήσιμη σε πολλές περιπτώσεις χρήσης πραγματικού κόσμου.



  • Δυνατότητα εκτέλεσης λειτουργιών τυπικού συνόλου όπως Ένωση, Τομή και Διαφορά.
  • Παρακολούθηση μοναδικών επισκεπτών σε έναν ιστότοπο
  • Αναπαριστά τις σχέσεις οντοτήτων του πραγματικού κόσμου

Η εντολή SCARD

Η εντολή SCARD, συντομογραφία για το Set Cardinality, επιστρέφει τον αριθμό των μελών σε ένα σύνολο που είναι αποθηκευμένο σε ένα δεδομένο κλειδί. Λειτουργεί σε πολυπλοκότητα χρόνου O(1), που σημαίνει ότι ο χρόνος που χρειάζεται για να εκτελεστεί η εντολή SCARD δεν εξαρτάται από τον αριθμό των μελών στο δεδομένο σύνολο. Χρειάζεται πάντα σταθερός χρόνος.





Η εντολή SCARD έχει πολύ απλή σύνταξη, όπως φαίνεται παρακάτω.

SCARD set_key

set_key: Το κλειδί του σετ Redis



Αυτή η εντολή επιστρέφει μια ακέραια τιμή που είναι ο αριθμός των μελών στο σύνολο.

Περίπτωση χρήσης – Μετρήστε τους μοναδικούς επισκέπτες σε έναν ιστότοπο

Ας υποθέσουμε ότι μια εταιρεία πίτσας 'YummyPizza' διατηρεί έναν ιστότοπο που ονομάζεται yummypizza.com όπου οι άνθρωποι μπορούν να παραγγείλουν πίτσα online. Για να παρακολουθούν τις πωλήσεις και τη βάση πελατών τους, διατηρούν μια βάση δεδομένων Redis για να αποθηκεύουν όλους τους μοναδικούς επισκέπτες του ιστότοπου κάθε μήνα.

Κάθε φορά που ένας χρήστης επισκέπτεται τον ιστότοπο YummyPizza, το αναγνωριστικό χρήστη πρέπει να προστίθεται στη βάση δεδομένων Redis. Επίσης, ο ίδιος χρήστης δεν θα πρέπει να προστεθεί στη βάση δεδομένων. Έτσι, η ιδανική δομή δεδομένων είναι το σύνολο Redis, όπου τα σύνολα αποθηκεύουν μόνο μοναδικά μέλη.

Ας υποθέσουμε ότι πέντε χρήστες έχουν επισκεφτεί τον ιστότοπο και αυτά τα μέλη προστίθενται στη βάση δεδομένων Redis, όπως φαίνεται παρακάτω.

SADD YummyPizzaΕπισκέπτες:Οκτώβριος John Mary Raza Stoinis Prince

Όπως αναμενόταν, ο ακέραιος αριθμός 5 έχει επιστραφεί, πράγμα που σημαίνει ότι τα πέντε μέλη προστίθενται στο σύνολο που είναι αποθηκευμένο στο κλειδί ' YummyPizzaΕπισκέπτες:Οκτώβριος.

Στο τέλος της ημέρας, οι διαχειριστές της εταιρείας πρέπει να ελέγξουν τον συνολικό αριθμό μοναδικών επισκεπτών στον ιστότοπο. Άρα, η καρδινάτητα του συνόλου πρέπει να υπολογιστεί. Ευτυχώς, η εντολή SCARD που συζητήθηκε προηγουμένως είναι χρήσιμη σε αυτό το είδος σεναρίου.

Ας εκτελέσουμε την εντολή SCARD στο σύνολο που είναι αποθηκευμένο στο πλήκτρο ' YummyPizzaΕπισκέπτες:Οκτώβριος.

scard YummyPizzaΕπισκέπτες:Οκτώβριος

Η έξοδος είναι 5, που σημαίνει ότι πέντε μοναδικά μέλη βρίσκονται στο καθορισμένο σύνολο. Αυτή η εντολή εκτελείται πολύ γρήγορα. Δεν έχει σημασία πέντε μέλη ή 50000 μέλη. ο χρόνος εκτέλεσης θα είναι σταθερός.

Ας υποθέσουμε ότι το καθορισμένο κλειδί set δεν υπάρχει στη βάση δεδομένων Redis. Στη συνέχεια, η έξοδος θα είναι 0, όπως φαίνεται στο παρακάτω παράδειγμα. Σε αυτήν την περίπτωση, θα καθορίσουμε ένα κλειδί που δεν υπάρχει στη βάση δεδομένων.

scard NonExistingKey

συμπέρασμα

Συνοψίζοντας, το σύνολο Redis είναι ιδανικός υποψήφιος για την αποθήκευση μοναδικών χορδών. Όπως αναφέρθηκε, το πιο σημαντικό πράγμα για το σύνολο Redis είναι ότι οι περισσότερες από τις σχετικές λειτουργίες συνόλου χρειάζονται σταθερό χρόνο για να εκτελεστούν. Η εντολή SCARD είναι μια από τις πιο χρησιμοποιούμενες εντολές συνόλου για τον υπολογισμό του συνολικού αριθμού μελών συνόλου για ένα δεδομένο σύνολο που είναι αποθηκευμένο σε ένα καθορισμένο κλειδί. Ανεξάρτητα από το πόσα μέλη σετ είναι διαθέσιμα, αυτή η εντολή χρειάζεται σταθερό χρόνο για να δώσει την έξοδο. Όπως φαίνεται στο τελευταίο παράδειγμα, εάν το κλειδί set δεν υπάρχει, τότε η έξοδος θα είναι 0.