Heim  >  Artikel  >  Backend-Entwicklung  >  Redis-Tutorial (4): Hashes-Datentyp

Redis-Tutorial (4): Hashes-Datentyp

黄舟
黄舟Original
2016-12-28 14:34:341116Durchsuche

1. Übersicht:

Wir können uns den Hashes-Typ in Redis als einen Kartencontainer mit String-Schlüssel und String-Wert vorstellen. Daher eignet sich dieser Typ sehr gut zum Speichern von Informationen über Wertobjekte. Wie Benutzername, Passwort und Alter usw. Wenn der Hash nur wenige Felder enthält, belegen diese Datentypen auch nur sehr wenig Speicherplatz. Jeder Hash kann 4294967295 Schlüssel-Wert-Paare speichern.

2. Zugehörige Befehlsliste:

Befehlsprototyp Zeitkomplexität Befehlsbeschreibung Rückgabewert
HSET-Schlüsselfeldwert O(1) Legt das Feld/Wert-Paar für den angegebenen Schlüssel fest. Wenn der Schlüssel nicht vorhanden ist, erstellt dieser Befehl einen neuen Schlüssel mit dem Feld/Wert im Parameter Ja, wenn das Feld im Parameter bereits im Schlüssel vorhanden ist, dann überschreibe seinen ursprünglichen Wert mit dem neuen Wert 1 bedeutet, dass das neue Feld mit einem neuen Wert festgelegt wurde, 0 bedeutet, dass das Das Feld ist bereits vorhanden. Überschreiben Sie es mit dem neuen Wert. Originalwert
HGET-Schlüsselfeld O(1) Gibt den zugehörigen Wert des angegebenen zurück Feld im angegebenen Schlüssel. Gibt den zugehörigen Wert des Felds im Parameter zurück. Wenn der Schlüssel oder das Feld im Parameter nicht vorhanden ist, wird Null zurückgegeben.
HEXISTSkey field O(1) Bestimmen Sie, ob das angegebene Feld im angegebenen Schlüssel vorhanden ist. 1 bedeutet, dass es existiert, 0 bedeutet, dass das Feld oder der Schlüssel im Parameter nicht existiert.
HLEN-Schlüssel O(1) Ermitteln Sie die Anzahl der im Schlüssel enthaltenen Felder. Gibt die Anzahl der im Schlüssel enthaltenen Felder zurück. Wenn der Schlüssel nicht vorhanden ist, wird 0 zurückgegeben.
HDEL-Schlüsselfeld [Feld ...] O(N) Das N in der Zeitkomplexität stellt das Feld dar, in dem gelöscht werden soll der Parameter Menge. Löschen Sie mehrere in den Parametern angegebene Felder aus dem Hashwert des angegebenen Schlüssels. Wenn die Felder nicht vorhanden sind, werden sie ignoriert. Wenn der Schlüssel nicht vorhanden ist, wird er als leerer Hashes behandelt und gibt 0 zurück. Die Anzahl der tatsächlich gelöschten Felder.
HSETNXkey-Feldwert O(1) Nur ​​wenn der Schlüssel oder das Feld im Parameter nicht vorhanden ist, legen Sie den angegebenen Schlüssel fest. Definieren Sie den Feld/Wert-Paar, andernfalls führt der Befehl keine Operation aus. 1 bedeutet, dass das neue Feld mit einem neuen Wert festgelegt wurde, 0 bedeutet, dass der Schlüssel oder das Feld bereits vorhanden ist und dieser Befehl keine Operation ausführt.
HINCRBYkey-Feldinkrement O(1) Erhöhen Sie den Wert des Werts, der dem angegebenen Feld im angegebenen Schlüssel zugeordnet ist. Wenn der Schlüssel oder das Feld nicht vorhanden ist, erstellt dieser Befehl einen neuen Schlüssel oder ein neues Feld, initialisiert den zugehörigen Wert auf 0 und gibt dann den Vorgang zum Erhöhen der Zahl an. Die von diesem Befehl unterstützten Zahlen sind 64-Bit-Ganzzahlen mit Vorzeichen, d. h. das Inkrement kann negativ sein. Gibt den Wert nach der Operation zurück
HGETALLkey O(N) Das N in der Zeitkomplexität stellt den enthaltenen Schlüssel dar in Feldmenge. Ruft alle in diesem Schlüssel enthaltenen Felder/Werte ab. Das Rückgabeformat ist ein Feld, ein Wert usw. Liste der Felder/Werte
HKEYSkey O(N) Das N in der Zeitkomplexität gibt an, dass der Schlüssel enthält Feldmenge. Gibt alle Feldnamen für den angegebenen Schlüssel zurück. Liste der Felder.
HVALSkey O(N) Das N in der Zeitkomplexität stellt die Anzahl der im Schlüssel enthaltenen Felder dar. Gibt alle Wertenamen des angegebenen Schlüssels zurück. Liste der Werte.
MGETkey-Feld [Feld ...] O(N) Das N in der Zeitkomplexität stellt die Anzahl der angeforderten Felder dar. Ruft eine Reihe von Werten ab, die den im Parameter angegebenen Feldern zugeordnet sind. Wenn das angeforderte Feld nicht existiert, gibt sein Wert Null zurück. Wenn der Schlüssel nicht vorhanden ist, behandelt der Befehl ihn als leeren Hash und gibt daher eine Menge von Null zurück. Gibt eine Reihe von Werten zurück, die den angeforderten Feldern zugeordnet sind. Die Rückgabereihenfolge entspricht der Anforderungsreihenfolge der Felder.
HMSET-Schlüsselfeldwert [Feldwert ...] O(N) N in der Zeitkomplexität repräsentiert die Feldmenge, die eingestellt wird. Legen Sie die in den Parametern angegebenen Feld-/Wertpaare nacheinander fest. Wenn eines der Felder bereits vorhanden ist, wird der ursprüngliche Wert mit dem neuen Wert überschrieben. Wenn der Schlüssel nicht vorhanden ist, erstellen Sie einen neuen Schlüssel und legen Sie das Feld/den Wert in den Parametern fest.

3. Befehlsbeispiele:

1. HSET/HGET/HDEL/HEXISTS/HLEN/HSETNX:

 #在Shell命令行启动Redis客户端程序
    /> redis-cli
    #给键值为myhash的键设置字段为field1,值为stephen。
    redis 127.0.0.1:6379> hset myhash field1 "stephen"
    (integer) 1
    #获取键值为myhash,字段为field1的值。
    redis 127.0.0.1:6379> hget myhash field1
    "stephen"
    #myhash键中不存在field2字段,因此返回nil。
    redis 127.0.0.1:6379> hget myhash field2
    (nil)
    #给myhash关联的Hashes值添加一个新的字段field2,其值为liu。
    redis 127.0.0.1:6379> hset myhash field2 "liu"
    (integer) 1
    #获取myhash键的字段数量。
    redis 127.0.0.1:6379> hlen myhash
    (integer) 2
    #判断myhash键中是否存在字段名为field1的字段,由于存在,返回值为1。
    redis 127.0.0.1:6379> hexists myhash field1
    (integer) 1
    #删除myhash键中字段名为field1的字段,删除成功返回1。
    redis 127.0.0.1:6379> hdel myhash field1
    (integer) 1
    #再次删除myhash键中字段名为field1的字段,由于上一条命令已经将其删除,因为没有删除,返回0。
    redis 127.0.0.1:6379> hdel myhash field1
    (integer) 0
    #判断myhash键中是否存在field1字段,由于上一条命令已经将其删除,因为返回0。
    redis 127.0.0.1:6379> hexists myhash field1
    (integer) 0
    #通过hsetnx命令给myhash添加新字段field1,其值为stephen,因为该字段已经被删除,所以该命令添加成功并返回1。
    redis 127.0.0.1:6379> hsetnx myhash field1 stephen
    (integer) 1
    #由于myhash的field1字段已经通过上一条命令添加成功,因为本条命令不做任何操作后返回0。
    redis 127.0.0.1:6379> hsetnx myhash field1 stephen
    (integer) 0

2. HINCRBY:

 #删除该键,便于后面示例的测试。
    redis 127.0.0.1:6379> del myhash
    (integer) 1
    #准备测试数据,该myhash的field字段设定值1。
    redis 127.0.0.1:6379> hset myhash field 5
    (integer) 1
    #给myhash的field字段的值加1,返回加后的结果。
    redis 127.0.0.1:6379> hincrby myhash field 1
    (integer) 6
    #给myhash的field字段的值加-1,返回加后的结果。
    redis 127.0.0.1:6379> hincrby myhash field -1
    (integer) 5
    #给myhash的field字段的值加-10,返回加后的结果。
    redis 127.0.0.1:6379> hincrby myhash field -10
    (integer) -5

3. HGETALL/HKEYS/HVALS/HMGET/HMSET:

   #删除该键,便于后面示例测试。
    redis 127.0.0.1:6379> del myhash
    (integer) 1
    #为该键myhash,一次性设置多个字段,分别是field1 = "hello", field2 = "world"。
    redis 127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"
    OK
    #获取myhash键的多个字段,其中field3并不存在,因为在返回结果中与该字段对应的值为nil。
    redis 127.0.0.1:6379> hmget myhash field1 field2 field3
    1) "hello"
    2) "world"
    3) (nil)
    #返回myhash键的所有字段及其值,从结果中可以看出,他们是逐对列出的。
    redis 127.0.0.1:6379> hgetall myhash
    1) "field1"
    2) "hello"
    3) "field2"
    4) "world"
    #仅获取myhash键中所有字段的名字。
    redis 127.0.0.1:6379> hkeys myhash
    1) "field1"
    2) "field2"
    #仅获取myhash键中所有字段的值。
    redis 127.0.0.1:6379> hvals myhash
    1) "hello"
    2) "world"

Das Obige ist das Redis Tutorial (4): Inhalt des Hashes-Datentyps Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn