Maison  >  Article  >  base de données  >  Analyse des exemples de types de données String dans Redis

Analyse des exemples de types de données String dans Redis

WBOY
WBOYavant
2023-06-03 10:47:49846parcourir

Présentation : 

Le type chaîne est le type de stockage de données le plus basique dans Redis. Il est binaire sécurisé dans Redis, ce qui signifie que ce type peut accepter des données dans n'importe quel format, tels que des données d'image JPEG ou des informations de description d'objet Json, etc. . La capacité maximale des valeurs de type chaîne dans Redis est de 512 Mo.

Liste des commandes associées :

SETBIT Définit la valeur de BIT sur le décalage spécifié. La valeur ne peut être que 1 ou 0. Après le réglage, la commande renvoie la valeur d'origine du. Décalage. Certaines valeurs BIT. Si la clé spécifiée n'existe pas, cette commande créera une nouvelle valeur et définira la valeur BIT dans le paramètre au décalage spécifié. Si le décalage est supérieur à la longueur des caractères de la valeur, Redis étirera la valeur et définira la valeur BIT dans le paramètre sur le décalage spécifié, la valeur BIT ajoutée au milieu étant 0. La dernière chose à noter est que la valeur Offset doit être supérieure à 0. GETBITO(1)MGETO(N)MSETO(N)MSETNXO(N)Si une clé de ce lot de clés existe déjà, alors l'opération sera entièrement annulée, c'est-à-dire que toutes les modifications ne prendront pas effet. append key value Ajoutez une valeur à la valeur d'origine Si la clé n'existe pas, créez une nouvelle clé et une nouvelle valeur au lieu d'ajouter substr key start len ​​​​intercept. la clé depuis Démarrer, intercepter la longueur de la clé len
Prototype de commande Complexité temporelle Description de la commande Valeur de retour
AJOUTER O(1) Si le La clé existe déjà et la commande APPEND ajoute les données du paramètre Value à la fin de la valeur existante. Si la clé n'existe pas, la commande APPEND créera une nouvelle clé/valeur. La longueur de la valeur après l'ajout.
DECR O(1)

décrémente atomiquement la valeur de la clé spécifiée de 1. Si la clé n'existe pas, sa valeur initiale est 0 et sa valeur après decr est -1. Si la valeur de Value n'est pas de type entier, comme Hello, l'opération échouera

et renverra le message d'erreur correspondant. Remarque : La plage de valeurs de cette opération est un entier signé de 64 bits.

Valeur après décrémentation.
INCR O(1)

incrémente atomiquement la valeur de la clé spécifiée de 1. Si la Clé n'existe pas, sa valeur initiale est 0 et sa valeur après incr est 1. Si la valeur de Value ne peut pas être convertie en une valeur entière, telle que la chaîne Hello, alors l'opération échouera

et renverra le message d'erreur correspondant. Remarque : La plage de valeurs de cette opération est un entier signé de 64 bits.

La valeur après incrémentation.
DECRBY O(1)

réduira atomiquement la valeur de la clé spécifiée par décrémentation. Après l'exécution de decrby, si la clé n'existe pas, sa valeur initiale est 0, puis sa valeur devient -decrement. Si la valeur de Value ne peut pas être convertie en une valeur entière,

comme Bonjour, l'opération échouera et le message d'erreur correspondant sera renvoyé. Remarque : La plage de valeurs de cette opération est un entier signé de 64 bits.

La Valeur réduite.
INCRBY O(1)

incrémente atomiquement la valeur de la clé spécifiée. Si la clé n'existe pas, sa valeur initiale est 0 et sa valeur après incrby est incrément. Si la valeur de Value ne peut pas être convertie en une valeur entière, telle que Bonjour,

l'opération échouera et le message d'erreur correspondant sera renvoyé. Remarque : La plage de valeurs de cette opération est un entier signé de 64 bits.

La valeur accrue.
GET O(1) Obtenir la valeur de la clé spécifiée. Si la valeur associée à la clé n'est pas de type chaîne, Redis renverra un message d'erreur car la commande GET ne peut être utilisée que pour obtenir une valeur de chaîne. La valeur liée à la clé. Si la clé n'existe pas, nul est renvoyé.
SET O(1) Définissez la clé pour qu'elle contienne la valeur de chaîne spécifiée. Si la clé existe déjà, écrasez sa valeur d'origine. Renvoie toujours "OK".
GETSET O(1) Définit atomiquement la clé sur la valeur spécifiée et renvoie la valeur d'origine de la clé. Comme la commande GET, cette commande ne peut traiter que la valeur de la chaîne, sinon Redis fournira des informations d'erreur pertinentes. Renvoie la valeur d'origine de la clé. Si la clé n'existe pas auparavant, nul est renvoyé.
STRLEN O(1) Renvoie la longueur de la valeur de caractère de la clé spécifiée. Si Value n'est pas de type chaîne, Redis ne parviendra pas à s'exécuter et à fournir les informations d'erreur pertinentes. Renvoie la longueur des caractères de la valeur de la clé spécifiée. Si la clé n'existe pas, renvoie 0.
SETEX O(1) effectue deux opérations de manière atomique. La première consiste à définir la valeur de la clé sur la chaîne spécifiée et en même temps à définir le temps de survie (en secondes) de la clé. le serveur Redis. Cette commande est principalement utilisée lorsque Redis est utilisé comme serveur de cache.
SETNX O(1) Si la clé spécifiée n'existe pas, définissez la clé pour qu'elle contienne la valeur de chaîne spécifiée. À ce stade, son effet est équivalent à la commande SET. Au contraire, si la clé existe déjà, la commande ne fera rien et reviendra. 1 signifie que le réglage est réussi, sinon 0.
SETRANGE O(1)

Remplace une partie de la valeur de chaîne de la clé spécifiée. À partir de offset, la longueur de remplacement est la longueur de chaîne de la troisième valeur du paramètre de la commande. Si la valeur de offset est supérieure à la longueur de chaîne de la valeur d'origine de la clé,

Redis remplira la fin de Value (. offset - strlen(value)) montant de 0x00 avant d'ajouter la nouvelle valeur. Si la clé n'existe pas, cette commande supposera que sa longueur de valeur d'origine est 0 et ajoutera les caractères de décalage

0x00 avant d'ajouter la nouvelle valeur. Étant donné que la longueur maximale de la chaîne Value est de 512 M, la valeur maximale du décalage est de 536870911. La dernière chose à noter est que si cette commande aboutit à la valeur d'origine de la clé spécifiée lors de son exécution, lorsque la longueur augmente, Redis réallouera suffisamment de mémoire pour accueillir toutes les chaînes remplacées, les performances seront donc affectées dans une certaine mesure.

La longueur de la valeur de chaîne modifiée.
GETRANGE O(1)

Si la longueur de la chaîne interceptée est très courte, on peut considérer la complexité temporelle de cette commande comme O(1), sinon c'est O(N), où N signifie la longueur de la sous-chaîne interceptée. Lorsque cette commande intercepte une sous-chaîne, elle inclura à la fois les caractères de début (0 représente le premier caractère) et de fin dans un intervalle fermé. Si la valeur de fin dépasse la longueur de caractère de Value, cette commande n'interceptera que les caractères de toutes les données de caractères après. commencer.

Substring
O(1)

La valeur originale de BIT au décalage spécifié.

Renvoie la valeur de BIT au décalage spécifié, 0 ou 1. Cette commande renverra 0 si Offset dépasse la longueur de la valeur de chaîne, elle renvoie donc toujours 0 pour une chaîne vide. La valeur BIT au décalage spécifié.
N représente le nombre de clés obtenues. Renvoie les valeurs de toutes les clés spécifiées. Si l'une des clés n'existe pas ou si sa valeur n'est pas de type chaîne, la valeur de la clé renverra zéro. Renvoie une liste de valeurs pour un ensemble de clés spécifiées.
N représente le nombre de clés spécifiées. Cette commande termine atomiquement toutes les opérations de définition de clé/valeur dans les paramètres. Son comportement spécifique peut être considéré comme l'exécution de la commande SET de manière itérative plusieurs fois. Cette commande n'échouera pas et renvoie toujours OK.
N représente le nombre de clés spécifiées. Cette commande complète atomiquement toutes les opérations de définition de clé/valeur dans les paramètres. Son comportement spécifique peut être vu comme plusieurs exécutions itératives de la commande SETNX. Cependant, ce qui doit être clairement indiqué ici, c'est que

String (string)

strlen Obtenir la longueur de la clé

incr key Augmenter de 1

decr key Diminuer de 1

incrby key num Augmenter la clé, augmenter num

decrby key num Diminuer la touche , diminuer num

getrange key start end intercepte la touche de caractère [start, end] et l'en-tête inclut également la queue

setrange key offset value remplace les données à la position de décalage par la valeur (offset est l'index de la clé)

setex key seconds value définit le délai d'expiration de la clé

Si la clé n'existe pas, l'exécution de la commande setnx définira la clé et la valeur, mais si la clé existe déjà, la commande setnx échouera et la valeur ne pourra pas être ajoutée ; encore une fois

mset key1 value key2 value définit plusieurs clés et valeurs en même temps

mget key1 key2 Obtenez la valeur de plusieurs clés à la fois

msetnx key1 value key2 value Définissez plusieurs clés et valeurs à la fois Si l'une des les clés existent, toutes les créations échoueront (atomicité)

getset valeur de clé Si elle n'existe pas, récupérez nil , puis définissez la valeur Si elle fait référence à la valeur précédente obtenue, définissez la valeur suivante (opération de mise à jour)

###############################################
127.0.0.1:6379> set key1 v
OK
127.0.0.1:6379> get key1
"v"
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> exists key1
(integer) 1
127.0.0.1:6379> append key1 v1
(integer) 3
127.0.0.1:6379> get key1
"vv1"
127.0.0.1:6379> substr key1 0 3
"vv1"
127.0.0.1:6379> strlen key1
(integer) 3
127.0.0.1:6379> append key1 "hello1"
(integer) 9
127.0.0.1:6379> substr key1 1 2
"v1"
127.0.0.1:6379> substr key1 1 1
"v"
127.0.0.1:6379> append key2 "lisi"
(integer) 4
127.0.0.1:6379> get key2
"lisi"
###############################################
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> incrby views 10
(integer) 10
127.0.0.1:6379> decrby views 5
(integer) 5
####################################
127.0.0.1:6379> set key1 "hello,world"
OK
127.0.0.1:6379> GETRANGE key1 0 3
"hell"
127.0.0.1:6379> GETRANGE key1 0 -1
"hello,world"
127.0.0.1:6379> SETRANGE key2 3 2
(integer) 7
127.0.0.1:6379> get key2
"abc2efg"
########################################
127.0.0.1:6379> setex key3 30 hello
OK
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> ttl key3
(integer) 24
127.0.0.1:6379> SETNX mykey redis
(integer) 1
127.0.0.1:6379> keys *
1) "mykey"
2) "key2"
3) "key1"
127.0.0.1:6379> SETNX mykey "MongoDB"
(integer) 0
127.0.0.1:6379> get mykey
"redis"
####################################
127.0.0.1:6379> mset k1 v1 k2 v2
OK
127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"
127.0.0.1:6379> MSETNX k1 v1 k3 v3
(integer) 0
# 对象
# 这里的key是一个巧妙的设计 user:{id}:{filed} 
127.0.0.1:6379> msetnx user:1:name "zhangsan" user:1:age 2
(integer) 1
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "2"
127.0.0.1:6379> set article:101:views 0
OK
127.0.0.1:6379> incr article:101:views
(integer) 1
127.0.0.1:6379> get article:101:views
"1"
###########################################################
127.0.0.1:6379> getset db redis
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db 10
"redis"
.

String Scénario similaire : la valeur peut être notre nombre en plus de notre chaîne !

Compteur

    Compter le nombre d'unités multiples uid:1923:suivre 0
  • Nombre de fans
  • Stockage du cache d'objets

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer