亚洲国产日韩欧美一区二区三区,精品亚洲国产成人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

BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]

自3.2.0起可用。

時(shí)間復(fù)雜度: O(1)用于指定的每個(gè)子命令

該命令將 Redis 字符串視為一個(gè)位數(shù)組,并且能夠處理具有不同位寬和任意非(必要)對齊偏移量的特定整數(shù)字段。實(shí)際上,使用此命令可以將位偏移量為1234的帶符號5位整數(shù)設(shè)置為特定值,從偏移量4567中檢索31位無符號整數(shù)。類似地,該命令處理指定整數(shù)的遞增和遞減,提供保證和良好指定的溢出和下溢行為,用戶可以配置。

BITFIELD 能夠在同一個(gè)命令調(diào)用中使用多位字段。它需要執(zhí)行一系列操作,并返回一個(gè)響應(yīng)數(shù)組,其中每個(gè)數(shù)組都與參數(shù)列表中的相應(yīng)操作相匹配。

例如,以下命令將位偏移量為100的8位有符號整數(shù)加1,并在位偏移量0處獲取4位無符號整數(shù)的值:

> BITFIELD mykey INCRBY i5 100 1 GET u4 01) (integer) 12) (integer) 0

注意:

  1. 使用當(dāng)前字符串長度以外的 GET 位(包括密鑰根本不存在的情況)進(jìn)行尋址,結(jié)果執(zhí)行的操作與缺失部分一樣都是由設(shè)置為0的位組成。

2. 根據(jù)需要的最小長度,根據(jù)所觸及的最遠(yuǎn)位,使用當(dāng)前字符串長度之外的 SET 或 INCRBY 位進(jìn)行尋址將放大字符串,根據(jù)需要對其進(jìn)行填零。

支持的子命令和整數(shù)類型

以下是支持的命令列表。

  • GET <type> <offset> - 返回指定的位域。

  • SET <type> <offset> <value> - 設(shè)置指定的位域并返回其舊值。

  • INCRBY <type> <offset> <increment> - 遞增或遞減(如果給定負(fù)遞增)指定的位域并返回新值。

還有一個(gè)子命令通過設(shè)置溢出行為來改變連續(xù)的 INCRBY子 命令調(diào)用的行為:

  • OVERFLOW [WRAP|SAT|FAIL]在期望整數(shù)類型的情況下,可以通過i為有符號整數(shù)和u無符號整數(shù)加上整數(shù)類型的位數(shù)來構(gòu)成它。例如u8,一個(gè)8位的無符號整數(shù),i16是一個(gè)16位的有符號整數(shù)。支持的類型對于有符號整數(shù)最多為64位,對于無符號整數(shù)最多為63位。使用無符號整數(shù)的限制是由于當(dāng)前Redis協(xié)議無法將64位無符號整數(shù)作為答復(fù)返回。位和位置偏移有兩種方式可以指定位域命令中的偏移量。如果指定了一個(gè)沒有任何前綴的數(shù)字,它將被用作字符串內(nèi)的基于零的位偏移量。但是如果偏移量前綴為a#字符,指定的偏移量乘以整數(shù)類型的寬度,例如:BITFIELD mystring SET i8#0 100 i8#1 200將設(shè)置第一個(gè)i8整數(shù)在偏移量0和第二個(gè)偏移量為8.這種方式你沒有如果你想要的是一個(gè)給定大小的整數(shù)數(shù)組,你可以在你的客戶端內(nèi)部進(jìn)行數(shù)學(xué)運(yùn)算。溢出控制使用該OVERFLOW命令,用戶可以通過指定一個(gè)來微調(diào)增量的行為或減少溢出(或下溢)以下行為:

  • WRAP:環(huán)繞,包含有符號和無符號整數(shù)。在無符號整數(shù)的情況下,包裝類似于以整數(shù)可以包含的最大值(C標(biāo)準(zhǔn)行為)來執(zhí)行操作。使用帶符號整數(shù),而不是包裝意味著溢出重新開始朝向最負(fù)值,并且溢出朝向最正值,例如,如果i8整數(shù)設(shè)置為127,則將其遞增1 -128。

  • SAT:使用飽和算術(shù),即在下溢時(shí)將該值設(shè)置為最小整數(shù)值,并在溢出時(shí)將其設(shè)置為最大整數(shù)值。例如,i8從數(shù)值120開始遞增一個(gè)以10 為增量的整數(shù)將導(dǎo)致數(shù)值127,并且進(jìn)一步增量將始終使數(shù)值保持在127.在下溢時(shí)發(fā)生同樣的情況,但是朝向該數(shù)值被阻塞在最大負(fù)值。

  • FAIL:在這種模式下,沒有檢測到溢出或下溢操作。相應(yīng)的返回值設(shè)置為 NULL,以向調(diào)用者發(fā)送信號。

請注意,每條OVERFLOW語句只影響子命令列表中后面的 INCRBY命令,直到下一條OVERFLOW語句為止。

默認(rèn)情況下,如果未另外指定,則使用 WRAP

> BITFIELD mykey incrby u2 100 1 OVERFLOW SAT incrby u2 102 11) (integer) 12) (integer) 1> BITFIELD mykey incrby u2 100 1 OVERFLOW SAT incrby u2 102 11) (integer) 22) (integer) 2> BITFIELD mykey incrby u2 100 1 OVERFLOW SAT incrby u2 102 11) (integer) 32) (integer) 3> BITFIELD mykey incrby u2 100 1 OVERFLOW SAT incrby u2 102 11) (integer) 02) (integer) 3

返回值

該命令返回一個(gè)數(shù)組,其中每個(gè)條目都是在相同位置給出的子命令的相應(yīng)結(jié)果。OVERFLOW子命令不會計(jì)為生成回復(fù)。

以下是OVERFLOW FAIL返回 NULL  的示例。

> BITFIELD mykey OVERFLOW FAIL incrby u2 102 11) (nil)

動機(jī)

這個(gè)命令的動機(jī)是,將許多小整數(shù)存儲為單個(gè)大位圖(或通過幾個(gè)鍵分段以避免擁有大量密鑰)的能力具有極高的內(nèi)存效率,并為要應(yīng)用的Redis打開新的使用案例,尤其是實(shí)時(shí)分析領(lǐng)域。這種用例受控于以受控方式指定溢出的能力。

有趣的事實(shí):Reddit的2017年4月愚人節(jié)項(xiàng)目r / place是使用Redis BITFIELD命令構(gòu)建的,以便獲取內(nèi)存中的協(xié)作畫布表示。

性能考慮

通常 BITFIELD 是一個(gè)快速命令,但是請注意,處理當(dāng)前短字符串的遠(yuǎn)位會觸發(fā)一個(gè)分配,這比在已存在的位上執(zhí)行該命令可能更昂貴。

位的順序

BITFIELD 使用的表示認(rèn)為位圖的位號為0是第一個(gè)字節(jié)的最高有效位,依此類推,因此例如在偏移7處將5位無符號整數(shù)設(shè)置為值23,并將其設(shè)置為先前設(shè)置為全零,將產(chǎn)生以下表示:

+--------+--------+|00000001|01110000|+--------+--------+

當(dāng)偏移和整數(shù)大小與字節(jié)邊界對齊時(shí),這與大端相同,但是當(dāng)這種對齊不存在時(shí),重要的是也要理解字節(jié)中的位是如何排序的。

Previous article: Next article: