Heim  >  Artikel  >  Datenbank  >  Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis

咔咔
咔咔Original
2020-08-28 17:16:172049Durchsuche

Wissenspunkte in diesem Artikel lernen Redis hat fünf Hauptdatentypen: String, Hash, Liste, Set, sortiert_set Die Anwendungsszenarien jedes der fünf Haupttypen

Vorwort

Kaka hat eine Roadmap zur Erstellung eines Interviewleitfadens zusammengestellt und bereitet sich darauf vor, Artikel gemäß einer solchen Roadmap zu schreiben . Später wird festgestellt, dass nicht hinzugefügte Wissenspunkte hinzugefügt werden. Ich freue mich auch darauf, dass Ihre Partner mithelfen, einige Informationen hinzuzufügen. Wir sehen uns im Kommentarbereich!

❞...
Daten hinzufügen/ändern: Schlüsselwert festlegen
Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis Daten: get key
Daten löschen: del key Mehrere Daten hinzufügen/ändern:
Mehrere Daten abrufen: mget key key1

追加信息到原始数据后边(不存在时则添加):append key valueappend key value

1-2 string类型 增减操作

设置数值增加指定范围的值:incr key 默认每次加1 | incrby key value 每次新增value设置数据减少指定范围:decr key | decrby key value 跟新增是一回事

「应用场景」

控制数据库表主键id,为数据库表提供主键生成策略,保证数据表主键的一致性。

1-3 string类型 时效操作

设置过期时间:setex key seconds value

设置数值增加指定范围的值:<h2 data-tool="mdnice编辑器" style="margin-top: 30px; Rand unten: 15px; Polsterung: 0px; Farbe: Schwarz; Schriftgröße: 22px; border-bottom: 4px solid rgb(64, 184, 250);"> <span class="prefix" style="display: flex; Breite: 20px; Höhe: 20px; Hintergrundgröße: 20px 20px; Hintergrundbild: URL(https://my-wechat.mdnice.com/fullstack-1.png); margin-bottom: -22px;"></span><span class="content" style="display: flex; Farbe: #40B8FA; Schriftgröße: 20px; margin-left: 25px;">1-3 stringEinzelne Zeichenkette</span><span class="suffix" style="display: flex; Boxgröße: border-box; Breite: 200px; Höhe: 10px; Rand-oben-links-Radius: 20px; Hintergrund: RGBA(64, 184, 250, .5); Farbe: RGB (255, 255, 255); Schriftgröße: 16px; Buchstabenabstand: 0,544 Pixel; rechtfertigen-Inhalt: Flex-Ende; schweben: rechts; Rand oben: -10px; Boxgröße: border-box !important; overflow-wrap: break-word !important;"></span> </h2> <strong style="color: rgb(53, 148, 247);">设置过期时间:<code style="overflow-wrap: break-word; Rand: 0px 2px; Schriftfamilie: „Operator Mono“, Consolas, Monaco, Menlo, Monospace; Wortbruch: alles brechen; Farbe: RGB(53, 148, 247); Hintergrund: rgba(59, 170, 250, 0,1); Polsterung: 0px 2px; Randradius: 2px; Höhe: 21px; line-height: 22px;">setex key seconds value时可以投一次 实现热点信息:例如电商行业热门商品、新闻网站热门新闻

1-4 Anwendungsszenarien vom Typ String

Weibo Big V-Homepages werden häufig besucht und die Anzahl der Fans, Follower und Weibo-Zahlen müssen von Zeit zu Zeit aktualisiert werden. Dies sind hochfrequente Informationen, und wir können sie mit dem String-Typ von Redis lösen. Legen Sie Benutzerinformationen für Big V fest, indem Sie den Primärschlüssel und die Attribute des Benutzers als Schlüsselwerte verwenden. Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von RedisHier müssen wir kurz über die Regeln für die Schlüsselbenennung sprechen: Tabellenname + Primärschlüssel + Primärschlüsselwert + Feld: Feldwert. Die Benennung nach solchen Regeln kann unsere Schlüsselwerte sehr gut verwalten. Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis

Wir können es auch auf andere Weise implementieren, nämlich indem wir dem Schlüssel direkt eine Struktur folgen.

Die beiden oben genannten Methoden können implementiert werden, aber die erste kann problemlos jeden Wert verwalten Sie müssen alles einmal ändern, je nach Geschäftsszenario, Sie können es einfach regelmäßig aktualisieren. 2. Hash-Typ

获取数据:hget key field >    |  <code style="overflow-wrap: break-word; margin: 0px 2px; Font-family: „Operator Mono“, Consolas, Monaco, Menlo, monospace; word-break: break-all; color: rgb(53, 148 , 247); Hintergrund: rgba(59, 170, 250, 0,1); Randradius: 21px; ::<code style=" overflow-wrap: break-word margin: font-family: mono consolas monaco menlo monospace word-break: break-all color: rgb hintergrund: rgba padding: height:>hdel key field1hget key field    |  hgetall key

删除数据:hdel key field field1

添加 / 修改多个数据:hmset key field value field1 value1

获取多个数据:hmget key field field1

获取表中字段数量:hlen key

获取表中是否存在某个字段:hexists key field

2-2 hash类型数据的扩展操作

获取hash表中所有的字段值:hkeys key

添加 / 修改多个数据:hmset key Feldwert Feld1 Wert1🎜🎜获取多个数据:hmget key field field1🎜🎜获取表中字段数量:hlen key🎜🎜获取表中是否存在某个字段:hexists key field🎜

2-2 hash类型数据的扩展操作

🎜获取hash表中所有的字段值:hkeys key🎜

获取hash表中所有的字段值: hvals-Schlüsselhvals key

设置指定字段的数值增加指定范围的值:hincrby key field increment   |  hincrbyfloat key field increment

2-3 hash业务场景之购物车

此图来源于网络非自制,只是模拟购物车场景Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis在上图中,我们可以看到购物车里的信息,下来咱们使用redis来对这个购物车的实现。

这里实现了一个添加购物车和获取购物车,keys的命名为  表名+主键+主键值Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis在上图中,我们会有一个问题就是商品信息存储会大量重复,所有我们也需要将商品单独给一直hash。如下图,只存储商品idEin Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis这里提供了俩种设置方式,一种是设置多个字段,一种是直接存储为json。信息不经常变动的话可以使用jsonEin Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis给大家在提供一个方法hsetnx key field valueEin Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis设置指定字段的数值增加指定范围的值:hincrby key field increment   |  <span class="prefix" style="display: flex; width: 20px; height: 20px; background-image: url(https://my-wechat.mdnice .com/fullstack-1.png);margin-bottom: -22px;"></span><span class="content" style="display: flex; left: 25px;">2-3 hash之购物车</span><span class="suffix" style="display: flex; width: 200px; border -oben-links-Radius: 20px; Hintergrund: RGBA(64, 184, 250, .5); Farbe: rgb(255, 255, 255); Buchstabenabstand: 0,544 Pixel; rechtfertigen-Inhalt: Flex-Ende; schweben: rechts; Rand oben: -10px; Boxgröße: border-box !important; overflow-wrap: break-word !important; /20200525100522415.png" alt="Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis" https:></span>给大家在提供一个方法<code style="overflow-wrap: break-word; Rand: 0px 2px; Schriftfamilie: „Operator Mono“, Consolas, Monaco, Menlo, Monospace; Wortbruch: alles brechen; Farbe: RGB(53, 148, 247); Hintergrund: rgba(59, 170, 250, 0,1); Polsterung: 0px 2px; Randradius: 2px; Höhe: 21px; line-height: 22px;">hsetnx key field value,的商品时不会执行覆盖和无用操作🎜🎜

3. Listentyp

Datenspeicheranforderungen: Speichern Sie mehrere Daten und unterscheiden Sie die Reihenfolge des Speicherplatzes der Daten Erforderliche Datenstruktur: Ein Speicherplatz speichert mehrere Daten, und die Eingabereihenfolge kann durch die Daten widergespiegelt werden Listentyp: Speichern Sie mehrere Daten. Die unterste Ebene wird mithilfe einer doppelt verknüpften Listenspeicherstruktur implementiert.

3-1 Grundoperationen von Listentypdaten. Daten hinzufügen/ändern: lpush key value1 | rpush key value value1Daten abrufen: overflow-wrap: break-word; margin: „Operator Mono“, Consolas, monospace; : rgba(59 , 170, 250, 0.1); padding: 0px 2px; height: 21px; line-height: 22px;">lrange key start end

| lindex key index | llen keyDaten löschen: rpop key | lpop key

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis
Bildbeschreibung hier einfügen

3-2 Erweiterte Vorgänge für Listentypdaten

Daten innerhalb der angegebenen Zeit abrufen und entfernen: blpop key1 key2 timeout | brpop key1 key2 timeout

Diese Funktion schreibt einfach einen Fall, einfach zu erstellen verstehen

Nachdem der Terminalbefehl auf der linken Seite ausgeführt wurde, wird 30 Sekunden gewartet, um die gelöschten Daten zurückzugeben.

Wenn der Befehl zum Hinzufügen auf der rechten Seite ausgeführt wird, werden auf der linken Seite die gelöschten Daten direkt zurückgegebenEin Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis

3-3-Listen-Geschäftsszenario

Oben kennen wir die Grundoperationen der Liste, die durch Ausführen der LPOP-Taste oder der RPOP-Taste von rechts oder links gelöscht werden können, aber jetzt gibt es ein Szenario, in dem der Freundeskreis gefällt Geschäft verwendet wird, und dann werden die Daten aus der Mitte gelöscht. Der Fall ist wie unten gezeigt

Wir fügen zuerst ein b c d zu Liste 5 hinzu Dann entfernen Sie c Nach der Prüfung bleibt nur noch ein b d übrigEin Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis

4. Satztyp

Neue Speicheranforderungen: Speichern Sie eine große Datenmenge und sorgen Sie für eine höhere Effizienz beim Abfragekomfort Erforderliche Speicherstruktur: Kann große Datenmengen speichern, effizienter interner Speichermechanismus, einfach abzufragen Set-Typ: Es ist genau das Gleiche wie die Hash-Speicherstruktur. Es speichert nur Schlüssel, keine Werte (Null), und Werte dürfen nicht wiederholt werden.

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis
4-1 Satztyp Grundlegende Datenoperationen

Daten hinzufügen/ändern: smembers keyDaten löschen: srem key member1Gesamtmenge der Sammlungsdaten abrufen: scard key

判断集合中是否包含指定数据:sismember Schlüsselmitgliedsismember key member

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis
Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis

4-2 set类型数据扩展操作

随机获取集合中指定数量的数据:srandmember key count

随机获取集合中某个数据并将改数据集移除集合:spop key

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis

4-2 set类型数据扩展操作

随机获取集合中指定数量的数据:srandmember key count

Rand: 0px 2px; Schriftfamilie: „Operator Mono“, Consolas, Monaco, Menlo, Monospace; Wortbruch: alles brechen; Farbe: RGB(53, 148, 247); Hintergrund: rgba(59, 170, 250, 0,1); Polsterung: 0px 2px; Randradius: 2px; Höhe: 21px; line-height: 22px;">spop key

🎜🎜4-3 set热点新闻、热卖旅游、应用app推荐、关注推荐等🎜🎜由于最近咔咔在写discuz,这个案例就以实现关注推荐。🎜

Fall 1: Speichern Sie entsprechende Benutzer gemäß einem bestimmten Empfehlungsmechanismus im Set und erhalten Sie dann jedes Mal zufällig 2 Benutzer, die empfohlen werden müssen

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis
Hier eine Bildbeschreibung einfügen

Fall 2: Basierend auf bestimmten Empfehlungen Der Mechanismus speichert die entsprechenden Benutzer im Satz, und dann können die täglich basierend auf dem Datum empfohlenen Benutzer nicht wiederholt werden Beziehungen

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis
Der Schnittpunkt, die Vereinigung und die Differenz zweier Mengen
<span style="display: block; background: url(https://my-wechat.mdnice.com/point.png); height: 30px; width: 100%; background-size: 40px; background-repeat: no-repeat; background-color: #272822; margin-bottom: -7px; border-radius: 5px; background-position: 10px 10px;"></span><code class="hljs" style="overflow-x: auto; padding: 16px; color: #ddd; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; letter-spacing: 0px; padding-top: 15px; background: #272822; border-radius: 5px;"><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sinter</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span><br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sunion</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span><br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sdiff</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span><br/></code>
Der Schnittpunkt, die Vereinigung und die Differenz zweier Mengen werden in der angegebenen Menge gespeichert
<span style="display: block; background: url(https://my-wechat.mdnice.com/point.png); height: 30px; width: 100%; background-size: 40px; background-repeat: no-repeat; background-color: #272822; margin-bottom: -7px; border-radius: 5px; background-position: 10px 10px;"></span><code class="hljs" style="overflow-x: auto; padding: 16px; color: #ddd; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; letter-spacing: 0px; padding-top: 15px; background: #272822; border-radius: 5px;"><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sinterstore</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">destination</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key2</span><br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sunionstore</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">destination</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key2</span><br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sdiffstore</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">destination</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key2</span><br/></code>

Fall: Wir müssen einen gemeinsamen Freund von Informationen abbauen . Zum Beispiel die Anzahl gemeinsam verfolgter Freunde auf öffentlichen WeChat-Konten, der Empfehlungsmechanismus von QQ zum Hinzufügen neuer Freunde und die eingehende Untersuchung der direkten Verbindungen der Benutzer. Basierend auf den oben genannten Fällen können wir Differenzsätze verwenden, um die Freunde von QQ zu erkennen kennen sich wahrscheinlich.

4-5 Geschäftsszenario vom Set-Typ realisiert die Aufzeichnung von PV, UV und IP der Website.

PV kann Inkr-Statistiken vom String-Typ direkt verwenden. UV und IP sind unabhängig und werden nicht wiederholt betreiben.

Wir wissen oben, dass die Menge die Eigenschaft hat, dass sie nicht wiederholt werden kann. Auf dieser Grundlage können wir diese Funktion leicht implementieren. Verwenden Sie dann die Narbentaste, um die Menge zu zählen.

Da es sich bei UV um einen unabhängigen Besucher handelt, können Sie zur Implementierung lokale Cookies verwenden. Übergeben Sie das Cookie zur Aufzeichnung an redis.

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis

5-1 ="overflow -wrap: break-word; margin: 0px 2px; Schriftfamilie: „Operator Mono“, Consolas, Monaco, Menlo, monospace; word-break: break-all; Farbe: rgb(53, 148, 247) ; Hintergrund: rgba(59, 170, 250, 0,1); padding: 0px 2px; line-height: 22px;">zadd key score member

Daten abrufen: zrange key start stop

删除数据:zrem key member ><code style="overflow-wrap: break-word; margin: 0px 2px; font-family: " operator mono consolas monaco menlo monospace word-break: break-all color: rgb background: rgba padding: border-radius: height: line-height:>zrem key member

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis按条件获取数据:zrangebyscore key min max limit | zrevrangescore key max min

条件删除数据:zremrangebyrank key start stop | zremrangebyscore key min max

获取集合数据总量:zcard key | zcount key min max

集合交、并操作:zinterstore destination numkeys key | zunionstore destination numkeys key(这个指令就不做演示了,可以自己查看文档。跟set有点类似,只不过会把所有交集的和给加起来。然后这里边有个numkeys这个参数是一共几个key进行计算  后边的key就需要几个)

获取数据对应的索引:zrank key member | zrevrank key member

socre值获取与修改:zscore key member | zincrby key increment member

相关推荐:《<a href="https://www.php.cn/redis/" target="_blank">redis教程</a>》

Ein Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Rediszrangebyscore key min max limit | zrevrangescore key max min🎜🎜条件删除数据:zremrangebyrank key start stop | zremrangebyscore Key Min Max ; Wortumbruch: alle brechen; Hintergrund: rgba(59, 170, 0,1); Randradius: 21px; height: 22px;">zcard key | zcount key min max🎜🎜集合交、并操作:Zinterstore-Ziel-Numkeys-Taste | zunionstore Ziel-Numkeys-Taste(这个指令就不做演示了,可以自己查看文档。跟set有点类似,只不过会把所有交集的和给加起来.然后这里边有个numkeys这个参数是一共几个key进行计算  后边的key就需要几个)🎜🎜获取数据对应的索引:zrank key member | zrevrank-Schlüsselmitglied🎜🎜socre值获取与修改:zscore-Schlüsselmitglied | Zincrby-Schlüsselinkrementmitglied🎜🎜相关推荐:《<a href="https://www.php.cn/redis/" target="_blank">Redis-Update</a>》🎜

Zusammenfassung

Das Obige ist eine kurze Einführung und spezifische Anwendung des Redis-Datentyps. Im folgenden Artikel wird der tatsächliche Kampf basierend auf spezifischen Anforderungen durchgeführt.

Beharrlichkeit beim Lernen, Beharrlichkeit beim Bloggen und Beharrlichkeit beim Teilen sind die Überzeugungen, an denen Kaka seit seiner Karriere festhält. Ich hoffe, dass Kakas Artikel im riesigen Internet Ihnen ein wenig helfen können Euch in der nächsten Ausgabe.

Das obige ist der detaillierte Inhalt vonEin Artikel zum Verständnis der fünf wichtigsten Datentypen und Anwendungsszenarien von Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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