επιστροφή DECR

Epistrophe Decr



Χειρισμός ακέραιου αριθμού Redis

Ο τύπος συμβολοσειράς είναι ο πιο θεμελιώδης τύπος δεδομένων που προσφέρει η Redis. Οι συμβολοσειρές Redis μπορούν να αποθηκεύουν κείμενα, σειριακά αντικείμενα JSON, εικόνες, ήχο και ακόμη και αριθμητικές τιμές. Σε αυτόν τον οδηγό, θα επικεντρωθούμε στις αριθμητικές τιμές και στον χειρισμό των ακεραίων. Το Redis δεν υποστηρίζει ξεχωριστούς τύπους δεδομένων ακεραίων για τη διατήρηση των αριθμητικών δεδομένων. Εάν ένα κλειδί Redis περιέχει μια συμβολοσειρά που μπορεί να αναπαρασταθεί ως ακέραιος, το Redis μπορεί να ερμηνεύσει τις αριθμητικές τιμές ως ακέραιους με 64-bit υπογεγραμμένους αριθμούς βάσης 10.


Η χειραγώγηση αριθμών είναι ένα εξαιρετικά χρήσιμο χαρακτηριστικό σε οποιαδήποτε βάση δεδομένων. Το Redis προσφέρει πολλές χρήσιμες λειτουργίες για εργασία σε ακέραιους τύπους όπως INCR, DECR, INCRBY, κ.λπ. Σε αυτόν τον οδηγό, η εντολή DECR που λειτουργεί σε ακέραιους τύπους εξηγείται λεπτομερώς.







Η Διοίκηση DECR

Η εντολή DECR εισάγεται για να μειώσει μια αριθμητική τιμή που αποθηκεύεται σε ένα δεδομένο κλειδί κατά ένα. Αυτό λειτουργεί μόνο σε τιμές συμβολοσειράς που μπορούν να αναπαρασταθούν ως ακέραιος 64-bit βάσης-10. Η εντολή DECR εκπέμπει ένα σφάλμα για τιμές χωρίς συμβολοσειρά ή τιμές συμβολοσειρών που δεν μπορούν να αναπαρασταθούν ως ακέραιοι.



Ακολουθεί η σύνταξη της εντολής DECR:



Κλειδί DECR


Κλειδί: Το κλειδί που κρατά την τιμή συμβολοσειράς.





Η εντολή DECR επιστρέφει τον προκύπτον υπογεγραμμένο ακέραιο μετά τη λειτουργία μείωσης. Εάν το καθορισμένο κλειδί δεν υπάρχει, η εντολή ορίζει την τιμή σε 0 και στη συνέχεια τη μειώνει κατά ένα. Επίσης, παρουσιάζεται σφάλμα όταν η τιμή δεν είναι συμβολοσειρά ή δεν μπορεί να αναπαρασταθεί ως ακέραιος υπογεγραμμένος 64-bit. Αυτή η εντολή λειτουργεί με σταθερή χρονική πολυπλοκότητα (O(1)) η οποία είναι εξαιρετικά γρήγορη.

Use Case – Μείωση της υγείας του παίκτη σε ένα διαδικτυακό παιχνίδι

Ας υποθέσουμε ένα διαδικτυακό παιχνίδι όπου η υγεία του κάθε παίκτη αυξάνεται κατά ένα όταν αποκαλύπτεται ένα πακέτο μέσων. Ομοίως, η υγεία μειώνεται κατά ένα εάν ο παίκτης πέσει ή χτυπηθεί από άλλο παίκτη.



Ο ιδανικός υποψήφιος για την αποθήκευση της υγείας ενός παίκτη είναι ένας τύπος συμβολοσειράς Redis όπου μπορούμε να αποθηκεύσουμε την υγεία ως ακέραιο. Ας δημιουργήσουμε ένα κλειδί υγεία:αναγνωριστικό παίκτη:1 και ορίστε την τιμή του σε 10. Μπορούμε να χρησιμοποιήσουμε την εντολή SET ως εξής:

σειρά health:playerID: 1 10



Μπορούμε να χρησιμοποιήσουμε την εντολή GET για να επαληθεύσουμε την τιμή που είναι αποθηκευμένη υγεία:αναγνωριστικό παίκτη:1.

αποκτήστε υγεία: playerID: 1



Ας πούμε ότι ο παίκτης με το ID 1 χτυπιέται και η υγεία πρέπει να μειωθεί κατά ένα. Η εντολή DECR μπορεί να χρησιμοποιηθεί ως εξής:

decr health:playerID: 1


Όπως αναμενόταν, η εντολή DECR εκτυπώνει την ενημερωμένη τιμή μετά τη λειτουργία μείωσης, όπως φαίνεται στην παρακάτω εικόνα:


Επίσης, μπορούμε να ελέγξουμε την τιμή που είναι αποθηκευμένη στο κλειδί υγεία:αναγνωριστικό παίκτη:1 με την εντολή GET.

αποκτήστε υγεία: playerID: 1



Όπως ήταν αναμενόμενο, η τιμή μειώθηκε κατά ένα.

Ο χειριστής DECR ισχύει και με αρνητικούς αριθμούς. Ας αποθηκεύσουμε μια νέα αρνητική αριθμητική τιμή στο κλειδί αρνητικό:τιμή1 .

σειρά αρνητικό:τιμή1 -3


Μπορούμε να ελέγξουμε την τιμή χρησιμοποιώντας την εντολή GET ως εξής:

πάρει αρνητικό:τιμή1



Η ακόλουθη εντολή δείχνει πώς χρησιμοποιείται η εντολή DECR στο κλειδί negative:value1:

decr negative:value1


Η εντολή DECR για μη ακέραιες τιμές

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

σειρά notAnIntergerVal Γεια σας


Το 'Hello' είναι ένα κείμενο που δεν μπορεί να μετατραπεί σε υπογεγραμμένο ακέραιο. Έτσι, η εντολή DECR δημιουργεί ένα σφάλμα εάν το καλέσουμε ενάντια σε αυτό το κλειδί.

decr notAnIntergerVal


Η εντολή DECR για μη υπάρχοντα κλειδιά

Σε ορισμένες περιπτώσεις, μπορείτε να καλέσετε την εντολή DECR σε ένα κλειδί που δεν υπάρχει στο χώρο αποθήκευσης δεδομένων Redis. Έτσι, η εντολή δημιουργεί το καθορισμένο κλειδί και ορίζει την τιμή του σε ακέραιο αριθμό 0. Ταυτόχρονα, η τιμή μειώνεται κατά ένα.

decr μη υπάρχον κλειδί


Όπως αναμενόταν, η έξοδος είναι -1.


Συνολικά, η εντολή DECR είναι πολύ χρήσιμη για την υλοποίηση των μετρητών σε εφαρμογές χαμηλής καθυστέρησης.

συμπέρασμα

Συνοπτικά, το DECR είναι μία από τις εντολές που λειτουργούν σε αριθμητικές τιμές που αποθηκεύονται σε ένα δεδομένο κλειδί Redis. Το Redis δεν υποστηρίζει ξεχωριστό ακέραιο τύπο δεδομένων. Έτσι, ο τύπος συμβολοσειράς χρησιμοποιείται επίσης για τη διατήρηση των αριθμητικών τιμών. Όπως εξετάστηκε, εάν η τιμή συμβολοσειράς μπορεί να αναπαρασταθεί ως ένας ακέραιος αριθμός 64-bit, η εντολή DECR μπορεί να χρησιμοποιηθεί για τη μείωση της τιμής της. Το πιο σημαντικό είναι ότι λειτουργεί με σταθερή χρονική πολυπλοκότητα. Επίσης, η εντολή DECR χρησιμοποιείται ευρέως για την υλοποίηση των μετρητών.