suchen
HeimBackend-EntwicklungC#.Net-TutorialRedis-Tutorial (7): Detaillierte Erläuterung der Tastenbedienungsbefehle

1. Übersicht:

In den ersten Blogs dieser Serie haben wir hauptsächlich über Befehle gesprochen, die sich auf Redis-Datentypen beziehen, wie z. B. String, List, Set, Hashes und Sorted-Set. Diese Befehle haben alle eines gemeinsam: Alle Operationen werden für den mit dem Schlüssel verknüpften Wert ausgeführt. Dieser Blog konzentriert sich auf schlüsselbezogene Redis-Befehle. Das Erlernen dieser Befehle ist eine sehr wichtige Grundlage für das Erlernen von Redis und ein leistungsstarkes Werkzeug, um das Potenzial von Redis voll auszuschöpfen.
In diesem Blog werden wir wie immer eine detaillierte Liste und typische Beispiele aller zugehörigen Befehle bereitstellen, um unser aktuelles Lernen und zukünftige Referenzen zu erleichtern.

2. Zugehörige Befehlsliste:


Befehlsprototyp Zeitkomplexität Befehlsbeschreibung Rückgabewert
KEYS-Muster O(N) Das N in der Zeitkomplexität stellt die Anzahl der Schlüssel in der Datenbank dar. Ruft alle Schlüssel ab, die dem Musterparameter entsprechen. Es ist zu beachten, dass wir versuchen sollten, den Aufruf dieses Befehls in unserem normalen Betrieb zu vermeiden, da dieser Befehl bei großen Datenbanken sehr zeitaufwändig ist und einen relativ großen Einfluss auf die Leistung des Redis-Servers hat. Das Muster unterstützt das Platzhalterformat im Glob-Stil, z. B. * für ein oder mehrere Zeichen, ? für ein beliebiges Zeichen, [abc] für einen beliebigen Buchstaben in eckigen Klammern Schlüsselliste, die dem Muster entspricht.
DEL-Taste [Taste ...] O(N) Das N in der Zeitkomplexität stellt die Anzahl der gelöschten Schlüssel dar. Löschen Sie die in den Parametern angegebenen Schlüssel aus der Datenbank. Wenn der angegebene Schlüssel nicht vorhanden ist, wird er ignoriert. Es sollte auch darauf hingewiesen werden, dass die Zeitkomplexität dieses Befehls zum Löschen jedes Schlüssels O beträgt, wenn der mit dem angegebenen Schlüssel verknüpfte Datentyp kein String-Typ, sondern ein Containertyp wie Liste, Set, Hashes und Sorted Set ist (M), wobei M die Anzahl der Elemente im Container darstellt. Für den String-Typ Key beträgt seine zeitliche Komplexität O(1). Die tatsächliche Anzahl der gelöschten Schlüssel.
EXISTS-Schlüssel O(1) Bestimmen Sie, ob der angegebene Schlüssel vorhanden ist. 1 bedeutet Existenz, 0 bedeutet nicht existieren.
MOVE key db O(1) Verschieben Sie den in der aktuellen Datenbank angegebenen Schlüssel Key in die im Parameter angegebene Datenbank. Wenn der Schlüssel bereits in der Zieldatenbank vorhanden ist oder in der aktuellen Datenbank nicht vorhanden ist, führt dieser Befehl nichts aus und gibt 0 zurück. Gibt 1 zurück, wenn die Verschiebung erfolgreich ist, andernfalls 0.
Schlüssel neu benennen O(1) Den angegebenen Schlüssel umbenennen, wenn die Befehle der beiden Schlüssel in den Parametern gleich sind. Oder der Quellschlüssel ist nicht vorhanden. Dieser Befehl gibt relevante Fehlerinformationen zurück. Wenn newKey bereits existiert, wird er direkt überschrieben.
RENAMENX-Schlüssel neuer Schlüssel O(1) Wenn der neue Wert nicht vorhanden ist, ändern Sie den ursprünglichen Wert im Parameter in den neuen Wert . Andere Bedingungen stimmen mit RENAME überein. 1 bedeutet, dass die Änderung erfolgreich war, andernfalls 0.
PERSIST-Schlüssel O(1) Wenn der Schlüssel eine Ablaufzeit hat, eliminiert dieser Befehl seine Ablaufzeit, sodass der Schlüssel dies tut Es gibt keine Zeitüberschreitungen mehr, eine dauerhafte Speicherung ist jedoch möglich. 1 bedeutet, dass die Ablaufzeit des Schlüssels entfernt wurde, 0 bedeutet, dass der Schlüssel nicht existiert oder keine Ablaufzeit hat
EXPIRE-Schlüsselsekunden O(1) Dieser Befehl legt die Timeout-Sekunden für den im Parameter angegebenen Schlüssel fest. Nach Überschreiten dieser Zeit wird der Schlüssel automatisch gelöscht. Wenn der Schlüssel geändert wird, bevor das Zeitlimit eintritt, wird das mit dem Schlüssel verbundene Zeitlimit entfernt. 1 bedeutet, dass das Timeout gesetzt ist, 0 bedeutet, dass der Schlüssel nicht existiert oder nicht gesetzt werden kann.
EXPIREAT-Schlüsselzeitstempel O(1) Die logische Funktion dieses Befehls ist genau die gleiche wie EXPIRE, der einzige Unterschied ist die Zeitüberschreitung Die durch diesen Befehl angegebene Zeit ist absolute Zeit, nicht relative Zeit. Der Zeitparameter liegt im Unix-Zeitstempelformat vor und gibt die Anzahl der Sekunden an, die seit dem 1. Januar 1970 vergangen sind. 1 bedeutet, dass das Timeout gesetzt ist, 0 bedeutet, dass der Schlüssel nicht existiert oder nicht gesetzt werden kann.
TTL-Taste O(1) Rufen Sie die verbleibende Timeout-Beschreibung der Taste ab. Gibt die verbleibende Beschreibung zurück oder -1, wenn der Schlüssel nicht existiert oder kein Timeout festgelegt ist.
RANDOMKEY O(1) Gibt einen zufälligen Schlüssel aus der aktuell geöffneten Datenbank zurück. Der zurückgegebene Zufallsschlüssel oder Null, wenn die Datenbank leer ist.
TYPE-Schlüssel O(1) Ruft den Typ des Werts ab, der dem im Parameter angegebenen Schlüssel zugeordnet ist. Dieser Befehl gibt ihn zurück String-Format. Die zurückgegebenen Zeichenfolgen sind string, list, set, hash und zset. Wenn der Schlüssel nicht vorhanden ist, geben Sie keine zurück
SORT-Schlüssel [NACH Muster] [LIMIT-Offset count] [GET-Muster [GET-Muster ...]] [ASC|DESC] [ALPHA] [STORE-Ziel] O(N+M*log(M)) Dieser Befehl ist relativ Es soll relativ kompliziert sein, daher geben wir hier nur die grundlegendste Verwendung an. Interessierte Internetnutzer können sich auf die offizielle Dokumentation von Redis beziehen. Gibt die ursprünglich sortierte Liste zurück.

3. Befehlsbeispiele:

1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX:

    #在Shell命令行下启动Redis客户端工具。
    /> redis-cli
    #清空当前选择的数据库,以便于对后面示例的理解。
    redis 127.0.0.1:6379> flushdb
    OK
    #添加String类型的模拟数据。
    redis 127.0.0.1:6379> set mykey 2
    OK
    redis 127.0.0.1:6379> set mykey2 "hello"
    OK
    #添加Set类型的模拟数据。
    redis 127.0.0.1:6379> sadd mysetkey 1 2 3
    (integer) 3
    #添加Hash类型的模拟数据。
    redis 127.0.0.1:6379> hset mmtest username "stephen"
    (integer) 1
    #根据参数中的模式,获取当前数据库中符合该模式的所有key,从输出可以看出,该命令在执行时并不区分与Key关联的Value类型。
    redis 127.0.0.1:6379> keys my*
    1) "mysetkey"
    2) "mykey"
    3) "mykey2"
    #删除了两个Keys。
    redis 127.0.0.1:6379> del mykey mykey2
    (integer) 2
    #查看一下刚刚删除的Key是否还存在,从返回结果看,mykey确实已经删除了。
    redis 127.0.0.1:6379> exists mykey
    (integer) 0
    #查看一下没有删除的Key,以和上面的命令结果进行比较。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 1
    #将当前数据库中的mysetkey键移入到ID为1的数据库中,从结果可以看出已经移动成功。
    redis 127.0.0.1:6379> move mysetkey 1
    (integer) 1
    #打开ID为1的数据库。
    redis 127.0.0.1:6379> select 1
    OK
    #查看一下刚刚移动过来的Key是否存在,从返回结果看已经存在了。
    redis 127.0.0.1:6379[1]> exists mysetkey
    (integer) 1
    #在重新打开ID为0的缺省数据库。
    redis 127.0.0.1:6379[1]> select 0
    OK
    #查看一下刚刚移走的Key是否已经不存在,从返回结果看已经移走。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 0
    #准备新的测试数据。    
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #将mykey改名为mykey1
    redis 127.0.0.1:6379> rename mykey mykey1
    OK
    #由于mykey已经被重新命名,再次获取将返回nil。
    redis 127.0.0.1:6379> get mykey
    (nil)
    #通过新的键名获取。
    redis 127.0.0.1:6379> get mykey1
    "hello"
    #由于mykey已经不存在了,所以返回错误信息。
    redis 127.0.0.1:6379> rename mykey mykey1
    (error) ERR no such key
    #为renamenx准备测试key
    redis 127.0.0.1:6379> set oldkey "hello"
    OK
    redis 127.0.0.1:6379> set newkey "world"
    OK
    #由于newkey已经存在,因此该命令未能成功执行。
    redis 127.0.0.1:6379> renamenx oldkey newkey
    (integer) 0
    #查看newkey的值,发现它也没有被renamenx覆盖。
    redis 127.0.0.1:6379> get newkey
    "world"

2 . PERSIST/EXPIRE/EXPIREAT/TTL:

#为后面的示例准备的测试数据。
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #将该键的超时设置为100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    #通过ttl命令查看一下还剩下多少秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 97
    #立刻执行persist命令,该存在超时的键变成持久化的键,即将该Key的超时去掉。
    redis 127.0.0.1:6379> persist mykey
    (integer) 1
    #ttl的返回值告诉我们,该键已经没有超时了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1
    #为后面的expire命令准备数据。
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #设置该键的超时被100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    #用ttl命令看一下当前还剩下多少秒,从结果中可以看出还剩下96秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 96
    #重新更新该键的超时时间为20秒,从返回值可以看出该命令执行成功。
    redis 127.0.0.1:6379> expire mykey 20
    (integer) 1
    #再用ttl确认一下,从结果中可以看出果然被更新了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 17
    #立刻更新该键的值,以使其超时无效。
    redis 127.0.0.1:6379> set mykey "world"
    OK
    #从ttl的结果可以看出,在上一条修改该键的命令执行后,该键的超时也无效了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1

3. TYPE/RANDOMKEY/SORT:

#由于mm键在数据库中不存在,因此该命令返回none。
    redis 127.0.0.1:6379> type mm
    none
    #mykey的值是字符串类型,因此返回string。
    redis 127.0.0.1:6379> type mykey
    string
    #准备一个值是set类型的键。
    redis 127.0.0.1:6379> sadd mysetkey 1 2
    (integer) 2
    #mysetkey的键是set,因此返回字符串set。
    redis 127.0.0.1:6379> type mysetkey
    set
    #返回数据库中的任意键。
    redis 127.0.0.1:6379> randomkey
    "oldkey"
    #清空当前打开的数据库。
    redis 127.0.0.1:6379> flushdb
    OK
    #由于没有数据了,因此返回nil。
    redis 127.0.0.1:6379> randomkey
    (nil)

Das Obige ist das Redis-Tutorial (7): Ausführliche Erklärung 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
Ist C# .NET das Richtige für Sie? Bewertung seiner AnwendbarkeitIst C# .NET das Richtige für Sie? Bewertung seiner AnwendbarkeitApr 13, 2025 am 12:03 AM

C#.NetissoBableFoREenterPrise-Level Applications-WithemicrosoftCosystemDuetoitsStrongtyPing, Richlibrary, Androbustperformance.

C# Code in .NET: Erforschen des ProgrammiervorgangsC# Code in .NET: Erforschen des ProgrammiervorgangsApr 12, 2025 am 12:02 AM

Der Programmierungsprozess von C# in .NET enthält die folgenden Schritte: 1) Schreiben von C# Code, 2) Kompilieren in eine mittlere Sprache (IL) und 3), die durch die .NET -Laufzeit (CLR) ausführt. Die Vorteile von C# in .NET sind die moderne Syntax, das leistungsstarke Typsystem und die enge Integration in das .NET -Framework, das für verschiedene Entwicklungsszenarien geeignet ist, von Desktop -Anwendungen bis hin zu Webdiensten.

C# .NET: Erforschen von Kernkonzepten und ProgrammierfundamentaldatenC# .NET: Erforschen von Kernkonzepten und ProgrammierfundamentaldatenApr 10, 2025 am 09:32 AM

C# ist eine moderne, objektorientierte Programmiersprache, die von Microsoft und als Teil des .NET-Frameworks entwickelt wurde. 1.C# unterstützt die objektorientierte Programmierung (OOP), einschließlich Einkapselung, Vererbung und Polymorphismus. 2. Asynchrones Programmieren in C# wird über Async implementiert und wartet auf Schlüsselwörter, um die Reaktionsfähigkeit der Anwendungen zu verbessern. 3.. Verwenden Sie LINQ, um Datensammlungen präzise zu verarbeiten. 4. Häufige Fehler umfassen Null-Referenzausnahmen und Indexausnahmen außerhalb des Bereichs. Zu den Debugging -Fähigkeiten gehört die Verwendung eines Debuggers und Ausnahmeberechnung. 5. Leistungsoptimierung umfasst die Verwendung von StringBuilder und das Vermeiden von unnötigem Packung und Unboxing.

Testen von C# .NET-Anwendungen: Einheit, Integration und End-to-End-TestTesten von C# .NET-Anwendungen: Einheit, Integration und End-to-End-TestApr 09, 2025 am 12:04 AM

Die Teststrategien für C#.NET-Anwendungen umfassen Unit-Tests, Integrationstests und End-to-End-Tests. 1. Unit -Test stellt sicher, dass die Mindesteinheit des Codes unter Verwendung des Frameworks MStest, Nunit oder Xunit unabhängig funktioniert. 2. Integrierte Tests überprüfen die Funktionen mehrerer Einheiten kombinierter, häufig verwendeten simulierten Daten und externen Diensten. 3. End-to-End-Tests simuliert den vollständigen Betriebsprozess des Benutzers, und Selen wird normalerweise für automatisierte Tests verwendet.

Advanced C# .NET Tutorial: Ace Ihr nächstes Senior Developer InterviewAdvanced C# .NET Tutorial: Ace Ihr nächstes Senior Developer InterviewApr 08, 2025 am 12:06 AM

Das Interview mit C# Senior Developer erfordert das Mastering von Kernwissen wie asynchrones Programmieren, LINQ und interne Arbeitsprinzipien von .NET -Frameworks. 1. Asynchrones Programmieren vereinfacht die Operationen durch Async und wartet auf die Verbesserung der Anwendungsreaktionsfähigkeit. 2.LinQ betreibt Daten im SQL -Stil und achtet auf die Leistung. 3. Die CLR des Net -Frameworks verwaltet den Speicher, und die Müllsammlung muss mit Vorsicht verwendet werden.

C# .NET -Interview Fragen und Antworten: Stufen Sie Ihr Fachwissen aufC# .NET -Interview Fragen und Antworten: Stufen Sie Ihr Fachwissen aufApr 07, 2025 am 12:01 AM

C#.NET -Interviewfragen und Antworten umfassen Grundkenntnisse, Kernkonzepte und erweiterte Nutzung. 1) Grundkenntnisse: C# ist eine von Microsoft entwickelte objektorientierte Sprache und wird hauptsächlich im .NET-Framework verwendet. 2) Kernkonzepte: Delegation und Ereignisse ermöglichen dynamische Bindungsmethoden, und LINQ bietet leistungsstarke Abfragefunktionen. 3) Erweiterte Verwendung: Asynchrone Programmierung verbessert die Reaktionsfähigkeit und Expressionsbäume werden für die dynamische Codekonstruktion verwendet.

Erstellen von Microservices mit C# .NET: Ein praktischer Leitfaden für ArchitektenErstellen von Microservices mit C# .NET: Ein praktischer Leitfaden für ArchitektenApr 06, 2025 am 12:08 AM

C#.NET ist eine beliebte Wahl für den Aufbau von Microservices aufgrund seines starken Ökosystems und seiner umfangreichen Unterstützung. 1) Erstellen Sie Rastfulapi mit ASP.NetCore, um die Erstellung und Abfrage der Reihenfolge zu verarbeiten. 2) Verwenden Sie GRPC, um eine effiziente Kommunikation zwischen Microservices zu erreichen, und implementieren Sie Auftragsdienste. 3) Vereinfachen Sie die Bereitstellung und Verwaltung durch Microservices mit Docker Container.

C# .NET Security Best Practices: Verhinderung gemeinsamer SchwachstellenC# .NET Security Best Practices: Verhinderung gemeinsamer SchwachstellenApr 05, 2025 am 12:01 AM

Zu den Best Practices für C# und .NET gehören die Eingabeüberprüfung, die Ausgabecodierung, die Ausnahmebehandlung sowie die Authentifizierung und Autorisierung. 1) Verwenden Sie regelmäßige Ausdrücke oder integrierte Methoden, um die Eingaben zu überprüfen, um zu verhindern, dass bösartige Daten in das System eintreten. 2) Ausgangscodierung Um XSS -Angriffe zu verhindern, verwenden Sie die Methode httputility.htmlencode. 3) Ausnahmebehandlung vermeidet Informationen, die Leckagen aufzeichnen, Fehler aufzeichnen, jedoch keine detaillierten Informationen an den Benutzer zurückgeben. 4) Verwenden Sie ASP.Netidentity- und Schadensbasis-Berechtigung, um Anwendungen vor nicht autorisierten Zugriff zu schützen.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)