tornar DECR

Tornar Decr



Manipulació de nombres enters de Redis

El tipus de cadena és el tipus de dades més fonamental que ofereix Redis. Les cadenes de Redis són capaços d'emmagatzemar textos, objectes JSON serialitzats, imatges, àudio i fins i tot valors numèrics. En aquesta guia, ens centrarem en els valors numèrics i la manipulació dels nombres enters. Redis no admet els tipus de dades enters independents per contenir les dades numèriques. Si una clau de Redis conté una cadena que es pot representar com un nombre enter, Redis pot interpretar els valors numèrics com a nombres enters amb signe de base 10 de 64 bits.


La manipulació de números és una característica extremadament útil per tenir a qualsevol base de dades. Redis ofereix diverses operacions útils per treballar amb tipus d'enters com INCR, DECR, INCRBY, etc. En aquesta guia, s'explica detalladament l'ordre DECR que opera amb tipus enters.







La comanda DECR

L'ordre DECR s'introdueix per disminuir un valor de nombre que s'emmagatzema en una clau determinada. Això només funciona amb valors de cadena que es poden representar com un nombre enter de 64 bits de base 10. L'ordre DECR genera un error per a valors que no són de cadena o valors de cadena que no es poden representar com a nombres enters.



La sintaxi de l'ordre DECR és la següent:



Tecla DECR


Clau: La clau que conté el valor de la cadena.





L'ordre DECR retorna l'enter amb signe resultant després de l'operació de disminució. Si la clau especificada no existeix, l'ordre estableix el valor a 0 i després el disminueix en un. A més, es genera un error quan el valor no és una cadena o no es pot representar com un nombre enter amb signe de 64 bits. Aquesta ordre funciona amb una complexitat de temps constant (O(1)) que és extremadament ràpida.

Cas d'ús: disminueix la salut del jugador en un joc en línia

Suposem un joc en línia on la salut de cada jugador s'incrementa en un quan es revela un paquet medi. De la mateixa manera, la salut disminueix en un si el jugador cau o és colpejat per un altre jugador.



El candidat ideal per emmagatzemar la salut d'un jugador és un tipus de cadena Redis on podem emmagatzemar la salut com un nombre enter. Creem una clau salut:ID del jugador:1 i establiu el seu valor a 10. Podem utilitzar l'ordre SET de la següent manera:

conjunt salut:ID del jugador: 1 10



Podem utilitzar l'ordre GET per verificar el valor emmagatzemat a salut:ID del jugador:1.

obtenir health:playerID: 1



Suposem que el jugador amb l'ID 1 rep un cop i la salut s'hauria de reduir en un. L'ordre DECR es pot utilitzar de la següent manera:

decr health:playerID: 1


Com era d'esperar, l'ordre DECR imprimeix el valor actualitzat després de l'operació de disminució, tal com es mostra a la figura següent:


A més, podem inspeccionar el valor emmagatzemat a la clau salut:ID del jugador:1 amb l'ordre GET.

obtenir health:playerID: 1



Com era d'esperar, el valor va disminuir en un.

L'operador DECR també és vàlid amb nombres negatius. Emmagatzemem un nou valor numèric negatiu a la clau negatiu: valor1 .

conjunt negatiu: valor1 -3


Podem inspeccionar el valor mitjançant l'ordre GET de la següent manera:

obtenir negatiu: valor1



L'ordre següent mostra com s'utilitza l'ordre DECR a la clau negatiu:valor1:

decr negatiu:valor1


L'ordre DECR sobre valors no enters

Hi ha alguns casos extrems quan intentem utilitzar l'ordre DECR en una clau Redis que conté un tipus de dades sense cadena o una cadena que no es pot representar com un nombre enter. L'ordre DECR genera un error en aquests casos, tal com es mostra a l'exemple següent:

conjunt notAnIntergerVal Hola


El 'Hola' és un text que no es pot convertir en un nombre enter amb signe. Per tant, l'ordre DECR genera un error si l'anomenem contra aquesta clau.

decr notAnIntergerVal


L'ordre DECR sobre claus no existents

En alguns casos, podeu trucar a l'ordre DECR en una clau que no existeix al magatzem de dades de Redis. Per tant, l'ordre crea la clau especificada i estableix el seu valor a l'enter 0. Al mateix temps, el valor es redueix en un.

decr clau no existent


Com era d'esperar, la sortida és -1.


En general, l'ordre DECR és molt útil per implementar els comptadors en aplicacions de baixa latència.

Conclusió

En resum, DECR és una de les ordres que operen amb valors numèrics que s'emmagatzemen en una clau Redis determinada. Redis no admet un tipus de dades enter independent. Per tant, el tipus de cadena també s'utilitza per contenir els valors numèrics. Tal com s'ha examinat, si el valor de la cadena es pot representar com un nombre enter amb signe de 64 bits, es pot utilitzar l'ordre DECR per disminuir-ne el valor. El més important és que funciona amb una complexitat de temps constant. A més, l'ordre DECR s'utilitza àmpliament per implementar els comptadors.