Tutoriel Redis (2) : Type de données String

黄舟
Libérer: 2016-12-28 14:18:36
original
1182 Les gens l'ont consulté

1. Présentation :

Le type chaîne est le type de stockage de données le plus basique dans Redis. Il est sécurisé en binaire dans Redis, ce qui signifie que ce type peut accepter des données dans n'importe quel format, tel que JPEG. données ou informations de description d'objet Json, etc. Dans Redis, la longueur maximale des données que le type de chaîne Value peut contenir est de 512 Mo.

2. Liste des commandes associées :

Prototype de commande Complexité temporelle Description de la commande Valeur de retour
APPENDkeyvalue O(1) Si la clé existe déjà, 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 ajoutée
DECRkey 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 ne peut pas être convertie en une valeur entière, telle que Hello, 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. Valeur après décrémentation.
INCRkey 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 Hello, l'opération échouera et le message d'erreur correspondant sera renvoyé. Remarque : La plage de valeurs de cette opération est la valeur incrémentée de l'entier signé 64 bits .
DECRBYkey décrémentation O(1) La valeur de la clé spécifiée sera atomiquement réduite par décrémentation. Si la clé n'existe pas, sa valeur initiale est 0 et sa valeur est -decrement après decrby. Si la valeur de Value ne peut pas être convertie en une valeur entière, telle que Hello, 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. Valeur réduite
Incrément INCRBYkey O(1) Augmente l'atomicité de la valeur de l'incrément de clé spécifié. 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 Hello, 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. Valeur augmentée
GETkey 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. Valeur liée à la Clé. Si la Clé n'existe pas, renvoie nil
Valeur SETkey 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".
GETSETkey value O(1) Définissez atomiquement la clé sur la valeur spécifiée et renvoyez 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 donnera des informations d'erreur pertinentes. Renvoie la valeur d'origine de la clé. Si la clé n'existe pas auparavant, nil est renvoyé.
STRLENkey 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 échouera. pour exécuter et donner des messages d'erreur associés. Renvoie la longueur de caractère de la valeur de la clé spécifiée. Si la clé n'existe pas, renvoie 0
Valeur des secondes SETEXkey O(1) Effectuez 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é dans le serveur Redis. Cette commande est principalement utilisée lorsque Redis est utilisé comme serveur de cache.
Valeur SETNXkey 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. L'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
SETRANGEkey offset value O(1) Remplacer certains caractères de la valeur de chaîne de clé spécifiée. À partir de offset, la longueur de remplacement est la longueur de chaîne de la troisième valeur de 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)) nombre de 0x00, puis ajoutez la nouvelle valeur. Si la clé n'existe pas, cette commande supposera que la longueur de sa valeur d'origine est 0 et ajoutera le 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. Enfin, il convient de noter que si la commande entraîne une augmentation de la longueur de la valeur d'origine de la clé spécifiée pendant l'exécution, Redis réallouera suffisamment de mémoire pour accueillir toutes les chaînes remplacées, entraînant ainsi une certaine dégradation des performances. La longueur de la valeur de chaîne modifiée.
GETRANGEkey start end O(1) Si la longueur de la chaîne interceptée est très courte, on peut considérer la complexité temporelle de cela commande comme O(1), sinon c'est O(N), où N représente la longueur de la sous-chaîne interceptée. Lorsque cette commande intercepte une sous-chaîne, elle inclura à la fois le début (0 représente le premier caractère) et le caractère de fin dans un intervalle fermé. Si la valeur de fin dépasse la longueur des caractères de Value, cette commande n'interceptera que les caractères commençant par le début. . Toutes les données de caractères. Sous-chaîne
Valeur de décalage SETBITkey O(1) Définissez la valeur de BIT au décalage spécifié, qui La valeur ne peut être que 1 ou 0. Après le réglage, cette commande renvoie la valeur BIT d'origine du décalage. 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 de la valeur et définira la valeur BIT dans le paramètre sur le décalage spécifié, et la valeur BIT ajoutée au milieu est 0. La dernière chose à noter est que la valeur Offset doit être supérieure à 0. La valeur originale du BIT au décalage spécifié.
GETBITkey offset O(1) 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. Valeur BIT au décalage spécifié
MGETkey [clé ...] O(N) N signifie Obtenir le nombre de clés. 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.
Valeur MSETkey [valeur clé ...] O(N) 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.
Valeur MSETNXkey [valeur clé ...] O(N) 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 SETNX de manière itérative plusieurs fois. Cependant, ce qui doit être clairement indiqué ici, c'est que 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. 1 signifie que toutes les clés sont définies avec succès, 0 signifie qu'aucune clé n'a été modifiée.

3. Exemples de commandes :

1. SET/GET/APPEND/STRLEN :

  /> redis-cli   #执行Redis客户端工具。
    redis 127.0.0.1:6379> exists mykey                   #判断该键是否存在,存在返回1,否则返回0。
    (integer) 0
    redis 127.0.0.1:6379> append mykey "hello"      #该键并不存在,因此append命令返回当前Value的长度。
    (integer) 5
    redis 127.0.0.1:6379> append mykey " world"    #该键已经存在,因此返回追加后Value的长度。
    (integer) 11
    redis 127.0.0.1:6379> get mykey                      #通过get命令获取该键,以判断append的结果。
    "hello world"
    redis 127.0.0.1:6379> set mykey "this is a test" #通过set命令为键设置新值,并覆盖原有值。
    OK
    redis 127.0.0.1:6379> get mykey
    "this is a test"
    redis 127.0.0.1:6379> strlen mykey                  #获取指定Key的字符长度,等效于C库中strlen函数。
    (integer) 14
Copier après la connexion


2. INCR/DECR/INCRBY/ DECRBY :
 redis 127.0.0.1:6379> set mykey 20     #设置Key的值为20
    OK
    redis 127.0.0.1:6379> incr mykey         #该Key的值递增1
    (integer) 21
    redis 127.0.0.1:6379> decr mykey        #该Key的值递减1
    (integer) 20
    redis 127.0.0.1:6379> del mykey          #删除已有键。
    (integer) 1
    redis 127.0.0.1:6379> decr mykey        #对空值执行递减操作,其原值被设定为0,递减后的值为-1
    (integer) -1
    redis 127.0.0.1:6379> del mykey   
    (integer) 1
    redis 127.0.0.1:6379> incr mykey        #对空值执行递增操作,其原值被设定为0,递增后的值为1
    (integer) 1
    redis 127.0.0.1:6379> set mykey hello #将该键的Value设置为不能转换为整型的普通字符串。
    OK
    redis 127.0.0.1:6379> incr mykey        #在该键上再次执行递增操作时,Redis将报告错误信息。
    (error) ERR value is not an integer or out of range
    redis 127.0.0.1:6379> set mykey 10
    OK
    redis 127.0.0.1:6379> decrby mykey 5 
    (integer) 5
    redis 127.0.0.1:6379> incrby mykey 10
    (integer) 15
Copier après la connexion

3. GETSET :

  redis 127.0.0.1:6379> incr mycounter      #将计数器的值原子性的递增1
    (integer) 1
    #在获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成。
    redis 127.0.0.1:6379> getset mycounter 0  
    "1"
    redis 127.0.0.1:6379> get mycounter       #查看设置后的结果。
    "0"
Copier après la connexion

4. SETEX :

  redis 127.0.0.1:6379> setex mykey 10 "hello"   #设置指定Key的过期时间为10秒。
    OK    
    #通过ttl命令查看一下指定Key的剩余存活时间(秒数),0表示已经过期,-1表示永不过期。
    redis 127.0.0.1:6379> ttl mykey                       
    (integer) 4
    redis 127.0.0.1:6379> get mykey                      #在该键的存活期内我们仍然可以获取到它的Value。
    "hello"
    redis 127.0.0.1:6379> ttl mykey                        #该ttl命令的返回值显示,该Key已经过期。
    (integer) 0
    redis 127.0.0.1:6379> get mykey                      #获取已过期的Key将返回nil。
    (nil)
Copier après la connexion

5. SETNX :

    redis 127.0.0.1:6379> del mykey                      #删除该键,以便于下面的测试验证。
    (integer) 1
    redis 127.0.0.1:6379> setnx mykey "hello"        #该键并不存在,因此该命令执行成功。
    (integer) 1
    redis 127.0.0.1:6379> setnx mykey "world"       #该键已经存在,因此本次设置没有产生任何效果。
    (integer) 0
    redis 127.0.0.1:6379> get mykey                      #从结果可以看出,返回的值仍为第一次设置的值。
    "hello"
Copier après la connexion

6. SETRANGE/GETRANGE :

redis 127.0.0.1:6379> set mykey "hello world"       #设定初始值。
    OK
    redis 127.0.0.1:6379> setrange mykey 6 dd          #从第六个字节开始替换2个字节(dd只有2个字节)
    (integer) 11
    redis 127.0.0.1:6379> get mykey                         #查看替换后的值。
    "hello ddrld"
    redis 127.0.0.1:6379> setrange mykey 20 dd        #offset已经超过该Key原有值的长度了,该命令将会在末尾补0。
    (integer) 22
    redis 127.0.0.1:6379> get mykey                           #查看补0后替换的结果。
    "hello ddrld\x00\x00\x00\x00\x00\x00\x00\x00\x00dd"
    redis 127.0.0.1:6379> del mykey                         #删除该Key。
    (integer) 1
    redis 127.0.0.1:6379> setrange mykey 2 dd         #替换空值。
    (integer) 4
    redis 127.0.0.1:6379> get mykey                        #查看替换空值后的结果。
    "\x00\x00dd"   
    redis 127.0.0.1:6379> set mykey "0123456789"   #设置新值。
    OK
    redis 127.0.0.1:6379> getrange mykey 1 2      #截取该键的Value,从第一个字节开始,到第二个字节结束。
    "12"
    redis 127.0.0.1:6379> getrange mykey 1 20   #20已经超过Value的总长度,因此将截取第一个字节后面的所有字节。
    "123456789"
Copier après la connexion

7. SETBIT/GETBIT :

  redis 127.0.0.1:6379> del mykey
    (integer) 1
    redis 127.0.0.1:6379> setbit mykey 7 1       #设置从0开始计算的第七位BIT值为1,返回原有BIT值0
    (integer) 0
    redis 127.0.0.1:6379> get mykey                #获取设置的结果,二进制的0000 0001的十六进制值为0x01
    "\x01"
    redis 127.0.0.1:6379> setbit mykey 6 1       #设置从0开始计算的第六位BIT值为1,返回原有BIT值0
    (integer) 0
    redis 127.0.0.1:6379> get mykey                #获取设置的结果,二进制的0000 0011的十六进制值为0x03
    "\x03"
    redis 127.0.0.1:6379> getbit mykey 6          #返回了指定Offset的BIT值。
    (integer) 1
    redis 127.0.0.1:6379> getbit mykey 10        #Offset已经超出了value的长度,因此返回0。
    (integer) 0
Copier après la connexion

8. MSET/MGET/MSETNX :

    redis 127.0.0.1:6379> mset key1 "hello" key2 "world"   #批量设置了key1和key2两个键。
    OK
    redis 127.0.0.1:6379> mget key1 key2                        #批量获取了key1和key2两个键的值。
    1) "hello"
    2) "world"
    #批量设置了key3和key4两个键,因为之前他们并不存在,所以该命令执行成功并返回1。
    redis 127.0.0.1:6379> msetnx key3 "stephen" key4 "liu" 
    (integer) 1
    redis 127.0.0.1:6379> mget key3 key4                   
    1) "stephen"
    2) "liu"
    #批量设置了key3和key5两个键,但是key3已经存在,所以该命令执行失败并返回0。
    redis 127.0.0.1:6379> msetnx key3 "hello" key5 "world" 
    (integer) 0
    #批量获取key3和key5,由于key5没有设置成功,所以返回nil。
    redis 127.0.0.1:6379> mget key3 key5                   
    1) "stephen"
    2) (nil)
Copier après la connexion

Ce qui précède est Tutoriel Redis (2) : Contenu du type de données String Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal