Empfohlen (kostenlos): Redis-Tutorial
Redis-Befehle werden verwendet, um Vorgänge für den Redis-Dienst auszuführen. Um Befehle auf dem Redis-Dienst auszuführen, ist ein Redis-Client erforderlich. Sie können den Befehl
redis-cli
verwenden, um den Redis-Client zu starten. Der vollständige Startbefehl lautetredis-cli -h host -p port -a passwort
.
redis-cli
命令启动Redis客户端。完整的启动命令是redis-cli -h host -p port -a password
。Redis常用的数据类型有五种:string、hash、list、set及zset(sorted set有序集合)。学习这些类型之前还需要学习常用命令Key的管理。下面详细介绍这些类型:更详细的API可以参照此处
常用命令Key管理
Key的应用场景:
Key的命名建议:
key名称区分大小写;key不要太长,尽量不超过1024字节,太长会降低查找效率;在一个项目中key最好使用统一的命名模式,如user:id:password
keys pattern
返回满足给定pattern的所有key,可以模糊匹配,如keys abc*
代表abc开头的keyexists key
判断一个key是否存在,存在返回1,不存在返回0expire key second
设定一个key的活动时间(秒)pexpire key milliseconds
设定一个key的活动时间(毫秒)del key
删除一个keyttl key
返回一个key的剩余时间,key不存在时返回-2;key存在但未设置剩余生存时间返回-1persist key
取消过期时间select dbindex
选择数据库,默认有16个,索引从0开始move key, dbindex
移动当前数据库中的key到dbindex数据库randomkey
随机返回一个keykeyrename key, key2
重命名keydbsize
返回当前数据库中key的数量info
查看数据库信息config get *
实时存储收到的请求,返回相关的配置type(key)
返回值的类型
flushdb
删除当前选择数据库中的所有keyflushall
删除所有数据库中的所有key
一、字符串String
String是redis最基本的类型,一个键最大能存储523MB。String类型是二进制安全的。意思是redis的String可以包含任何数据。比如图片或者序列化的对象 。
String的应用场景:
INCR 等指令本身就具有原子操作的特性,所以完全可以利用 Redis 的 NCR、INCRBY、DECR、DECRBY 等指令来实现原子计数的效果。假如,在某种场景下有 3 个客户端同时读取了 minum 的值(值为 2),然后对其同时进行了加 1 的操作,那么,最后 bynum 的值一定是 5。不少网站都利用 reds 的这个特性来实现业务上的统计计数需求。
赋值语法set key value
为key赋予值value,多次设置会覆盖旧值且无视类型setnx key value
为key赋予值value,如果key已存在,则不设置并返回0,否则设置并返回1。是解决分布式锁的方案之一。setex key time value
为key赋予值value并设定过期时间time,到期后key和value都清除。setrange key start end
In Redis gibt es fünf häufig verwendete Datentypen:
, hash,
list🎜, 🎜set🎜 und 🎜zset🎜 (sortierter Satz, geordneter Satz). Bevor Sie diese Typen erlernen, müssen Sie die Verwaltung gängiger Befehlstasten erlernen. Diese Typen werden im Folgenden im Detail vorgestellt: Eine detailliertere API finden Sie hier🎜🎜🎜Allgemeine Befehle Schlüsselverwaltung🎜🎜🎜🎜Wichtige Anwendungsszenarien: 🎜🎜user:id:password
🎜🎜keys Muster
Gibt alle Schlüssel zurück, die dem angegebenen Muster entsprechen, und ein Fuzzy-Matching ist möglich, z. B. keys abc*
stellt den Schlüssel dar, der mit abc beginnt🎜exists key
übertriebener Wille wird auf 0 zurückgesetzt, wenn es nicht existiert. 🎜expire key second
code> Legt die Aktivitätszeit eines Schlüssels fest (Sekunden). (Millisekunden)🎜del key
Löschen eines Schlüssels🎜ttl key
Gibt die verbleibende Zeit eines Schlüssels zurück, wenn der Schlüssel nicht existiert aber die verbleibende Überlebenszeit ist nicht festgelegt, es wird -1 zurückgegeben🎜persist key
Ablaufzeit abbrechen🎜select dbindex
ulösen Sie standardmäßig in 16, und der Index beginnt bei 0 move key, dbindex
Erator durch 16 Datenbanken, es gibt 16, und der Index beginnt bei 0 `` key🎜keyrename key, key2
Benennen Sie den Schlüssel um🎜dbsize
ding in in through in�� Taste 🎜 * int_ in sollte die erforderliche Konfiguration 🎜type(key)
| sein 1 . String String 🎜🎜🎜🎜String ist der einfachste Redis-Typ und ein Schlüssel kann bis zu 523 MB speichern. Der String-Typ ist binärsicher. Das bedeutet, dass der String von Redis beliebige Daten enthalten kann. Zum Beispiel Bilder oder serialisierte Objekte. 🎜🎜🎜String-Anwendungsszenarien: 🎜🎜set key value
Weisen Sie dem Schlüssel einen Wert zu, überschreiben Sie den alten Wert und ignorieren Sie den Typ🎜setnx key value
Als Schlüssel Weist einen Wert zu. Wenn der Schlüssel bereits vorhanden ist, ist er nicht gesetzt und gibt 0 zurück, andernfalls ist er gesetzt und gibt 1 zurück. Es ist eine der Lösungen für verteilte Sperren. 🎜setex key time value
Weisen Sie dem Schlüssel einen Wert zu und legen Sie die Ablaufzeit fest. Nach Ablauf werden sowohl Schlüssel als auch Wert gelöscht. 🎜setrange key start end
Legen Sie den Wert innerhalb des angegebenen Bereichs fest, der Index beginnt bei 0 und ersetzt die Zeichenfolge. 🎜🎜🎜Wertsyntax🎜🎜get key
Wenn der Schlüssel nicht existiert, gib Null zurückget key
获取指定key的value值,key不存在则返回nilgetrange key start end
获取指定key的value的子字符串,包括start和end角标getbit key offset
对 key 所储存的字符串值,获取指定偏移量的bit(二进制)getset key value
为key设新值,同时返回旧值,key不存在返回nilsubstr(key, start, end)
返回名称为key的string的value的子串
删值语法del key
同Key
批量写入mset k1 v1 k2 v2...kn vn
批量设置多个的值
批量读出
mget k1 k2 ... kn
获取多个key的值
自增自减incr key
key的value对应+1incrby key integer
key的value对应+integerdecr key
key的value对应-1decrby key integer
key的value对应-integer
字符串拼接append key value
将value附加到指定key的末尾
msetnx(key1, value1...keyN, valueN)
同时设置多个key和value,仅key之前都不存在时生效
字符串长度strlen key
返回key的字符长度
二、双重键值对Hash
Hash类型是String类型的field和value的映射表。Hash特别适合用于存储对象,相比String可以占用更少的磁盘空间,可以看成具有key和value的map容器。Redis中每个hash可以存储(2^32)-1个键值对。
Hash的应用场景:
赋值语法
hset key field value
为指定key设置field和valuehsetnx key field value
为指定key设置field和value,如果key已存在则不生效。hmset key f1 v1 f2 v2 ... fn vn
同时将多个field-value(域值对)设置到哈希表的key中。
取值语法
hget key field
根据field获取value值hmget key f1 f2 ... fn
根据多个field获取所有的value值hgetall key
获取Hash表中所有的字段和值hkeys key
获取所有Hash表中的字段hvals key
获取所有Hash表中的字段对应的valuehexists key field
查看Hash表Key中,指定的字段是否存在hlen key
获取Hash表中字段的数量
删除语法
hdel key field1 field2 ... fieldn
删除一个或多个Hash表的字段del key
同Key
增减语法
hincrby key field integer
为Hash表Key中field对应的value增加integerhincrbyfloat key field increment
Wenn der Schlüssel nicht existiert� Gibt Null zurück. Markieren Sie
getbit key. offset
Oben in>> Holen Sie sich das Bit (binär) des angegebenen Offsets für den im Schlüssel gespeicherten Zeichenfolgenwert getset key value
Legen Sie einen neuen Wert für den Schlüssel fest und geben Sie ihn gleichzeitig zurück. Alter Wert, Schlüssel existiert nicht und gibt Null zurück substr(key, start, end)
Gibt die Teilzeichenfolge des Werts der Zeichenfolge mit dem Namen „key“ zurück
del key
dedmset k1 v1 k2 v2...kn vn
] .. kn cco willkommen’> Der Wert des Schlüssels entspricht +1Hash-Anwendungsszenarien:
incrby key integer
Entspricht + GanzzahlDecr -Schlüssel
GenerationBeaker muss zum Ende des angegebenen Schlüssels addiert werden. . Doppeltes Schlüssel-Wert-Paar Hash- Der Hash-Typ ist eine Zuordnungstabelle aus Feld und Wert vom Typ String. Hash eignet sich besonders zum Speichern von Objekten. Es benötigt weniger Speicherplatz als String und kann als Kartencontainer mit Schlüssel und Wert betrachtet werden. Jeder Hash in Redis kann (2^32)-1 Schlüssel-Wert-Paare speichern.
wird normalerweise zum Speichern von Benutzerinformationsobjektdaten verwendet.
hset key field value
Legen Sie Feld und Wert für den angegebenen Schlüssel fest🎜hsetnx key field int Es wird nicht wirksam, wenn es existiert. 🎜<code>hmset key f1 v1 f2 v2 ... fn vn
Setzt mehrere Feldwerte (Feldwertpaare) gleichzeitig auf den Schlüssel der Hash-Tabelle. 🎜🎜🎜Wertsyntax🎜🎜🎜hget key field
Oben Oben in in in in auf gesucht sollte aktualisiert werden Wert, der dem Feld entspricht 🎜 Feldschlüsselfeld
Hlen -Schlüssel
Hlen -Schlüssel
Hexistenschlüsselfeld ] 🎜🎜 HDEL -Schlüsselfeld1 Feld2 ... FeldN
Löschen Sie ein oder mehrere Hash -Tabellenfelder 🎜 Delschlüssel
Intce (Code) Hincrby -Schlüsselfeld Integer CESS Hand Hand leg in hincrby float key field increment List🎜🎜🎜🎜Der Listentyp ist eine Sammlung verknüpfter Listenstrukturen. Zu seinen Hauptfunktionen gehören Push-, Pop- und Get-Elemente. Genauer gesagt ist der Listentyp eine doppelendige verknüpfte Listenstruktur. Die Kopf- oder Endelemente der Sammlung können durch verwandte Operationen hinzugefügt und gelöscht werden. Die Liste kann sowohl als Stapel als auch als Warteschlange verwendet werden Bedürfnisse. 🎜🎜🎜Wenn der Schlüssel nicht vorhanden ist, erstellen Sie eine neue verknüpfte Liste. 🎜🎜Wenn der Schlüssel bereits vorhanden ist, fügen Sie neuen Inhalt hinzu. 🎜🎜Wenn alle Werte entfernt werden, verschwinden die entsprechenden Schlüssel. 🎜🎜Die Effizienz verknüpfter Listenoperationen ist sowohl für den Kopf als auch für das Ende extrem hoch, die Operationseffizienz mittlerer Elemente ist jedoch sehr gering. 🎜🎜🎜🎜🎜Anwendungsszenarien🎜🎜🎜🎜🎜Löschen von Sammeldaten bei großen Datenmengen🎜 Listendatenanzeige, Merkliste, Fanliste, Nachrichtenauswertung, etc... Paging, Hot News (Top10), etc. Die Paging-Funktion kann einfach mit lrange implementiert werden. Im Blog-System können die Kommentare zu jedem Blog-Beitrag auch in einer separaten Liste gespeichert werden. 🎜Aufgabenwarteschlange
Bei der Verarbeitung von Befehlsanfragen, die vom Webclient gesendet werden, kann die Ausführungszeit bestimmter Vorgänge länger sein als erwartet, indem die relevanten Informationen der auszuführenden Aufgaben in die Warteschlange gestellt und später verarbeitet werden. Benutzer können die Ausführung von Vorgängen verschieben, deren Abschluss einige Zeit in Anspruch nimmt. Diese Praxis der Übergabe von Arbeit an Aufgabenprozessoren wird als Aufgabenwarteschlange bezeichnet. Eine Liste kann normalerweise verwendet werden, um eine Nachrichtenwarteschlange zu implementieren und die Reihenfolge sicherzustellen.
Zuweisungssyntax
lpush key value1 value2 ... valueN
Einen oder mehrere Werte in den Kopf der Liste einfügen (von links hinzufügen)lpush key value1 value2 ... valueN
将一个或多个值插入到列表头部(从左侧添加)rpush key value1 value2 ... valueN
将一个或多个值插入到列表头部(从右侧添加)lpushx key value
将一个值插入到已存在的列表头部(最左边),如果列表不存在,操作无效。rpushx key value
将一个值插入到已存在的列表尾部(最右边),如果列表不存在,操作无效。
取值语法
llen key
获取列表长度lindex key index
通过索引获取列表的元素lrange key start stop
获取列表指定范围内的元素
删除语法
lpop key
移除并获取列表的第一个元素(从左侧移除)lpop key
移除并获取列表的最后一个元素(从右侧移除)lrem key count value
删除count个值为value的keyblpop key1 key2 timeout
移除并获取列表的第一个元素,如果列表没有元素会阻塞列表,直到等待超时或发现可弹出元素为止brpop key1 key2 timeout
移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表,直到等待超时或发现可弹出元素为止ltrim key start stop
对一个列表进行修剪,只保留指定区间内的元素,不在指定区间内的元素都删除。
修改语法
lset key index value
通过索引设置列表元素的值linsert key before|after world value
在列表的某个元素world前或者后插入元素value。
高级命令
rpoplpush source destination
移除source列表的最后一个元素,并将该元素添加到destination列表,并返回。(可以对自己本身操作,类似队列)brpoplpush source destination timeout
移除source列表的最后一个元素,并将该元素添加到destination列表,并返回;如果source 列表没有元素会阻塞列表知道等待超时或发现可移除元素为止。
四、无序集合Set
Set 是 String 类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据。
Redis 中的集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
类似于JAVA中的 Hashtable集合
- Redis的set的底层存储结构特别神奇,底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表(key为set的值,value为null)。
- intset内部其实是一个数组(int8_t coentents[]数组),而且存储数据的时候是有序的,因为在查找数据的时候是通过二分查找来实现的。
应用场景
赋值语法
sadd key member1 member2 ... memberN
rpush key value1 value2 ... valueN
Fügen Sie einen oder mehrere Werte in den Kopf der Liste ein (von rechts hinzufügen)
lpushx key value
), wenn die Liste nicht existiert, wird der Der Vorgang hat keine Auswirkung. rpushx-Schlüsselwert
Fügen Sie einen Wert am Ende (ganz rechts) der vorhandenen Liste ein. Wenn die Liste nicht vorhanden ist, ist der Vorgang ungültig.
llen -Schlüssel
ulous in den Werten] Die Elemente im angegebenen Bereich der Liste der Liste 🎜🎜🎜Delete Syntax🎜🎜🎜 LPOP -Schlüssel Code> Wealthider In der Liste 🎜🎜🎜 Syntax löschen 🎜🎜🎜 <code> LPOP -Schlüssel
> Entfernen und abrufen das letzte Element der Liste (von rechts entfernt) 🎜 LREM -Taste Zählwert
Anzahlschlüssel mit Wert löschen 🎜blpop key1 key2 timeout
Umschalttaste Entfernen und das erste Element der Liste abrufen. Wenn kein Element in der Liste vorhanden ist, wird die Liste blockiert, bis die Wartezeit abgelaufen ist oder a Popup-Element wurde gefunden🎜brpop key1 key2 timeout
Entfernen Sie das letzte Element der Liste und rufen Sie es ab. Wenn keine Elemente in der Liste vorhanden sind, wird die Liste blockiert, bis die Wartezeit abgelaufen ist oder a Popup-Element wurde gefunden🎜ltrim key start stop
Kürzen Sie eine Liste und behalten Sie nur die Elemente innerhalb des angegebenen Bereichs bei und löschen Sie die Elemente, die nicht innerhalb des angegebenen Bereichs liegen. 🎜🎜🎜Ändern Sie die Syntax🎜🎜🎜lset key index value
Legen Sie den Wert des Listenelements nach Index fest 🎜linsert key before|after world value
Vor einem Element der Liste world oder Fügen Sie dann den Elementwert ein. 🎜🎜🎜Erweiterte Befehle🎜🎜🎜rpoplpush Quellziel
Entfernen Sie das letzte Element der Quellliste, fügen Sie das Element zur Zielliste hinzu und kehren Sie zurück. (Kann auf sich selbst angewendet werden, ähnlich einer Warteschlange) 🎜brpoplpush Quell-Ziel-Timeout
Entfernen Sie das letzte Element der Quellliste, fügen Sie das Element zur Zielliste hinzu und kehren Sie zurück, wenn keine Elemente in der Liste vorhanden sind Quellliste wird blockiert. Die Liste wartet, bis das Zeitlimit überschritten wird oder bis ein entfernbares Element gefunden wird. 🎜🎜🎜4. Ungeordnete Menge Set🎜🎜🎜Set ist eine ungeordnete Menge vom Typ String. Satzmitglieder sind eindeutig und doppelte Daten können nicht im Satz vorkommen. 🎜 Sammlungen in Redis werden über Hash-Tabellen implementiert, sodass die Komplexität des Hinzufügens, Löschens und Suchens O(1) beträgt. 🎜 Die maximale Anzahl von Mitgliedern in einer Sammlung beträgt 232 - 1 (4294967295, jede Sammlung kann mehr als 4 Milliarden Mitglieder speichern). 🎜Ähnlich wie die Hashtable-Sammlung in JAVA🎜🎜🎜Anwendungsszenarien🎜🎜🎜Die zugrunde liegende Speicherstruktur des Redis-Sets ist besonders magisch. Die zugrunde liegende Speicherstruktur verwendet zwei Datenstrukturen: Intset und Hashtable können als Array verstanden werden, und Hashtable ist ein gewöhnliches Hash-Tabelle (Schlüssel ist der Wert von set, Wert ist null). 🎜🎜Intset ist eigentlich ein Array im Inneren (int8_t coentents[]-Array), und die Daten werden der Reihe nach gespeichert, da bei der Suche nach Daten die binäre Suche implementiert wird. 🎜🎜
sadd key member1 member2 ... memberN
Fügen Sie ein oder mehrere Mitglieder zum Satz hinzu🎜🎜🎜 Wertesyntax abrufen 🎜🎜Scard-Schlüssel
ulous in in in ining 'ssmember key
srandmember key count
Gibt eine oder mehrere Zufallszahlen im Satz zurückscard key
获取集合的成员数smembers key
返回集合中的所有成员sismember key member
判断 member 元素是否是集合 key 的成员(开发中:验证是否存在判断)srandmember key count
返回集合中一个或多个随机数删除语法
srem key member1 member2...memberN
移除集合中一个或多个成员spop kye count
移除并返回集合中的一个或多个随机元素
smove source destincation member
将member元素从source集合移动到destination集合
差集语法
sdiff key1 key2
返回给定所有集合的差集(左侧)sdiffstore destination key1 key2
返回给定所有集合的差集并存储在 destination 中(destination中原有的数据清除)
交集语法
sinter key1 key2
返回给定所有集合的交集(共有数据)sinterstore destination key1 key2
返回给定所有集合的交集并存储在 destination 中
并集语法sunion key1 key2
返回所有给定集合的并集sunionstore destination key1 key2
所有给定集合的并集存储在 destination 集合中
五、有序集合Zset
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
- 之前的set是k1 v1 v2
- 现在的zset是k1 score1 v1 score2 v2
应用场景
赋值语法zadd key score1 member1 score2 member2
向有序集合添加一个或多个成员,或者更新已存在成员的分数
取值语法zcard key
获取有序集合的成员数zcount key min max
计算在有序集合中指定区间分数的成员数zrank key member
返回有序集合中指定成员的索引zrange key start stop [withscores]
通过索引区间返回有序集合成指定区间内的成员(低到高)zrevrange key start stop [withscores]
通过索引区间返回有序集合成指定区间内的成员(高到低)zlexcount key,min,max
在有序集合中计算指定字典区间内成员数量
删除语法del key
移除集合zrem key member [member ...]
移除有序集合中的一个或多个成员zremrangebyrank key start stop
移除有序集合中给定的排名区间的所有成员(第一名是0)(低到高排序)zremrangebyscore key min max
移除有序集合中给定的分数区间的所有成员
分数自增zincrby key ncrement member
Syntax löschen
srem key member1 member2...memberN
reichtumdie“ smove source destincation member
ulous diff. Side)sdiffstore destination key1 key2
Gibt die Differenz zurück Menge aller gegebenen Mengen und speichert sie im Ziel (die ursprünglichen Daten im Ziel werden gelöscht) Sinterstore Destination Key1 Key2
incessover im Ziel
Union-Syntax
sunion key1 key2
Gibt die Vereinigung aller angegebenen Sammlungen zurücksunionstore destination key1 key2
Die Vereinigung aller angegebenen Sammlungen wird in der Zielsammlung 🎜5 gespeichert. Ordered set Zset🎜🎜🎜Redis zset ist wie set auch eine Sammlung vom Typ String Elemente und erlaubt keine doppelten Mitglieder. Der Unterschied besteht darin, dass jedem Element ein doppelter Typwert zugeordnet ist. Redis verwendet Scores, um die Mitglieder der Sammlung von klein nach groß zu sortieren. Die Mitglieder von zset sind einzigartig, aber die Ergebnisse können wiederholt werden. 🎜🎜🎜Anwendungsszenario🎜🎜
- Der vorherige Satz war k1 v1 v2
- Der aktuelle zset ist k1 Score1 v1 Score2 v2
zadd key Score1 Mitglied1 Score2 Mitglied2
Fügen Sie ein oder mehrere Mitglieder zu einem geordneten Satz hinzu oder aktualisieren Sie die Punktzahl eines vorhandenen Mitglieds🎜🎜 🎜Wertsyntax🎜zcard key
Ermitteln Sie die Anzahl der Mitglieder einer geordneten Mengezcount key min max
uns in der Anzahl der Mitglieder in eine geordnete Menge Anzahl der Mitgliederzrank key member
Gibt den Index des angegebenen Mitglieds in der geordneten Menge zurückzrange key start stop [withscores]
Gibt zurück die geordnete Menge durch den Indexbereich. Synthetisieren Sie die Mitglieder im angegebenen Bereich (von niedrig nach hoch).zrevrange key start stop [mit Bewertungen]
Geben Sie eine geordnete Menge durch den Indexbereich zurück, um die Mitglieder zu synthetisieren im angegebenen Bereich (hoch bis niedrig)zlexcount key,min,max
Zählt die Anzahl der Mitglieder im angegebenen Wörterbuchbereich in einer geordneten Menge 🎜🎜🎜Syntax löschen🎜del key
Entfernen Sie den Satzzrem key member [member ...]
Entfernen Sie ein oder mehrere Mitglieder aus einem geordneten Satzzremrangebyrank key Start Stop
Eine geordnete Menge entfernen Alle Mitglieder des angegebenen Rangintervalls (erster Platz ist 0) (von unten nach oben)zremrangebyscore key min max
Entferne alle Mitglieder des angegebenen Punkteintervall vom Mitglied der geordneten Menge 🎜🎜🎜Der Punktestand wird inkrementiert🎜zincrby key ncrement member
Der Punktestand des angegebenen Mitglieds im geordneten Satz wird um ein Inkrement erhöht🎜🎜🎜 6. HyperLoglog 🎜🎜🎜Redis hat in Version 9 die HyperLoglog-Struktur hinzugefügt. Bei dieser Struktur handelt es sich um einen Algorithmus zur Erstellung von Kardinalitätsstatistiken. 🎜🎜Vorteile: Unabhängig von der Anzahl der Eingabeelemente ist der zur Berechnung der Kardinalität erforderliche Platz immer fest und sehr gering. 🎜🎜Nachteile: Es wird nur die Basis des Eingabeelements berechnet, das Eingabeelement selbst wird jedoch nicht gespeichert. Der Index kann nicht jedes Element der Eingabe wie eine Menge zurückgeben. 🎜Was ist eine Basiszahl?
Wenn der Datensatz beispielsweise {1, 2, 3, 3, 4, 5, 5} ist, ist der Kardinalitätssatz dieses Datensatzes {1, 2, 3, 4, 5} und die Kardinalität ist 5. Die sogenannte Kardinalitätsschätzung dient der schnellen Berechnung der Kardinalität innerhalb des akzeptablen Fehlerbereichs.
Warum HyperLogLog verwenden?
Das herkömmliche Zählen des Kardinalitätswerts eines Objekts erfordert 12 MB Speicher. Wenn Sie 10.000 Objekte zählen, sind fast 120 GB Speicher erforderlich, was in Big-Data-Szenarien jedoch nicht weit verbreitet ist, um den Kardinalitätswert von 100 Millionen zu zählen Da die Daten ca. 12 MB benötigen, wird die Speichernutzung deutlich reduziert. sourcekey1 sourcekey2 ...sourcekeyN Mehrere HyperLogLogs zu einem HyperLogLog zusammenführen
Weitere verwandte kostenlose Lernempfehlungen:
redispfadd key element1 element2 ... elementN
添加指定元素到HyperLogLog中pfcount key
返回给定HyperLogLog的基数估算值pfmerge destkey sourcekey1 sourcekey2 ...sourcekeyN
Das obige ist der detaillierte Inhalt vonZusammenfassung der Betriebsanweisungen für allgemeine Redis-Datentypen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!