亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群計(jì)數(shù)失敗報(bào)告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群鍵槽) cluster meet cluster nodes(集群節(jié)點(diǎn)) cluster replicate(集群復(fù)制) cluster reset(集群重置) cluster saveconfig cluster set config epoch cluster setslot cluster slaves cluster slots readonly readwrite Connection auth echo ping quit select swapdb Geo geoadd geodist geohash geopos georadius georadiusbymember Hashes hdel hexists hget hgetall hincrby hincrbyfloat hkeys hlen hmget hmset hscan hset hsetnx hstrlen hvals HyperLogLog pfadd pfcount pfmerge Keys del dump exists expire expireat keys migrate move object persist pexpire pexpireat pttl randomkey rename renamenx restore scan sort touch ttl type unlink wait Lists blpop brpop brpoplpush lindex linsert llen lpop lpush lpushx lrange lrem lset ltrim rpop rpoplpush rpush rpushx Pub/Sub psubscribe publish pubsub punsubscribe subscribe unsubscribe Scripting eval evalsha script debug script exists script flush script kill script load Server bgrewriteaof bgsave client getname client kill client list client pause client reply client setname command command count command getkeys command info config get config resetstat config rewrite config set dbsize debug object debug segfault flushall flushdb info lastsave monitor role save shutdown slaveof slowlog time Sets sadd scard sdiff sdiffstore sinter sinterstore sismember smembers smove spop srandmember srem sscan sunion sunionstore Sorted Sets zadd zcard zcount zincrby zinterstore zlexcount zrange zrangebylex zrangebyscore zrank zrem zremrangebylex zremrangebyrank zremrangebyscore zrevrange zrevrangebylex zrevrangebyscore zrevrank zscan zscore zunionstore Strings append bitcount bitfield bitop bitpos decr decrby get getbit getrange getset incr incrby incrbyfloat mget mset msetnx psetex set setbit setex setnx setrange strlen Transactions discard exec multi unwatch watch
characters

PFCOUNT key [key ...]

自2.8.9起可用。

時(shí)間復(fù)雜度: O(1)用單個(gè)密鑰調(diào)用時(shí)的平均時(shí)間非常短。O(N),其中N是密鑰的數(shù)量,當(dāng)用多個(gè)密鑰調(diào)用時(shí),恒定時(shí)間大得多。

使用單個(gè)鍵調(diào)用時(shí),返回由存儲(chǔ)在指定變量中的 HyperLogLog 數(shù)據(jù)結(jié)構(gòu)計(jì)算的近似基數(shù),如果該變量不存在,則返回0。

使用多個(gè)鍵調(diào)用時(shí),通過(guò)將存儲(chǔ)在所提供的鍵中的 HyperLogLog 內(nèi)部合并到臨時(shí) HyperLogLog 中,返回傳遞的 HyperlogLog 的聯(lián)合的近似基數(shù)。

可以使用 HyperLogLog 數(shù)據(jù)結(jié)構(gòu),以便使用少量恒定內(nèi)存(特別是每個(gè) HyperLogLog 的12k字節(jié)(加上密鑰本身的幾個(gè)字節(jié)))對(duì)集合中的唯一元素進(jìn)行計(jì)數(shù)。

觀察到的集合的返回基數(shù)不是確切的,但是以0.81%的標(biāo)準(zhǔn)誤差近似。

例如,為了計(jì)算一天中執(zhí)行的所有唯一搜索查詢的計(jì)數(shù),程序需要在每次處理查詢時(shí)調(diào)用 PFADD。可以隨時(shí)使用 PFCOUNT 檢索唯一查詢的估計(jì)數(shù)量。

注意:由于調(diào)用此函數(shù)的副作用,HyperLogLog 可能會(huì)被修改,因?yàn)樽詈?個(gè)字節(jié)會(huì)將最新計(jì)算的基數(shù)編碼為高速緩存目的。所以 PFCOUNT 在技術(shù)上是一個(gè)寫命令。

返回值

整數(shù)回復(fù),具體為:

  • 通過(guò)PFADD觀察到的獨(dú)特元素的近似數(shù)量。

例子

redis>  PFADD hll foo bar zap (integer) 1 redis>  PFADD hll zap zap zap (integer) 0 redis>  PFADD hll foo bar (integer) 0 redis>  PFCOUNT hll (integer) 3 redis>  PFADD some-other-hll 1 2 3 (integer) 1 redis>  PFCOUNT hll some-other-hll (integer) 6

Performances

當(dāng)使用單個(gè)鍵調(diào)用 PFCOUNT 時(shí),即使理論上處理密集型 HyperLogLog 的時(shí)間很長(zhǎng),性能也非常好。這是可能的,因?yàn)? PFCOUNT 使用緩存來(lái)記住之前計(jì)算的基數(shù),這很少發(fā)生變化,因?yàn)榇蠖鄶?shù) PFADD 操作不會(huì)更新任何寄存器。每秒可執(zhí)行數(shù)百次操作。

當(dāng)使用多個(gè)密鑰調(diào)用 PFCOUNT 時(shí),將執(zhí)行 HyperLogLog 的即時(shí)合并,這很慢,而且聯(lián)合的基數(shù)不能被緩存,所以當(dāng)與多個(gè)密鑰 PFCOUNT 一起使用時(shí),可能需要一段時(shí)間毫秒數(shù)量級(jí),并且不應(yīng)該被濫用。

用戶應(yīng)該記住,該命令的單鍵和多鍵執(zhí)行在語(yǔ)義上是不同的并且具有不同的性能。

HyperLogLog representation

Redis HyperLogLog 使用雙重表示法表示:適用于 HLL 計(jì)數(shù)少量元素(導(dǎo)致少量寄存器設(shè)置為非零值)的稀疏表示形式,以及適用于更高基數(shù)的密集表示形式。需要時(shí),Redis 會(huì)自動(dòng)從稀疏狀態(tài)切換到密集狀態(tài)。

稀疏表示使用經(jīng)過(guò)優(yōu)化的游程編碼來(lái)有效地存儲(chǔ)大量設(shè)置為零的寄存器。密集表示是一個(gè)12288字節(jié)的 Redis 字符串,用于存儲(chǔ)16384個(gè)6位計(jì)數(shù)器。對(duì)雙重表示的需求來(lái)自于使用12k(這是密集表示內(nèi)存要求)對(duì)少量寄存器進(jìn)行編碼以獲得更小的基數(shù)的事實(shí),這是非常不理想的。

兩種表示都以16字節(jié)的頭部作為前綴,其中包含魔術(shù),編碼/版本字段以及計(jì)算出的緩存基數(shù)估計(jì)值,并以 little endian 格式存儲(chǔ)(如果自 HyperLogLog 更新后估計(jì)無(wú)效,則最高有效位為1因?yàn)橛?jì)算基數(shù))。

作為 Redis 字符串的 HyperLogLog 可以使用GET進(jìn)行檢索并使用 SET 進(jìn)行恢復(fù)。使用損壞的 HyperLogLog 調(diào)用 PFADD,PFCOUNT 或 PFMERGE 命令絕不是問(wèn)題,它可能會(huì)返回隨機(jī)值,但不會(huì)影響服務(wù)器的穩(wěn)定性。大多數(shù)情況下,當(dāng)破壞稀疏表示時(shí),服務(wù)器會(huì)識(shí)別損壞并返回錯(cuò)誤。

從處理器字長(zhǎng)和字節(jié)序的觀點(diǎn)來(lái)看,該表示是中性的,因此32位和64位處理器使用相同的表示法,即大字節(jié)或小字節(jié)。

Previous article: Next article: