directory search
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群计数失败报告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群键槽) cluster meet cluster nodes(集群节点) cluster replicate(集群复制) 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

SETRANGE key offset value

自2.2.0起可用。

时间复杂度: O(1),不包括复制新字符串所用的时间。通常,这个字符串非常小,所以分期复杂度为O(1)。否则,复杂度为O(M),其中M是值参数的长度。

在指定的偏移量处重写存储在关键字处的整个字符串的部分。如果偏移量大于的当前字符串长度,则用零字节填充字符串以进行偏移量拟合。不存在的键被认为是空字符串,所以这个命令将确保它包含足够大的字符串以便能够在偏移量处设置

请注意,您可以设置的最大偏移量为229 -1(536870911),因为Redis字符串限制为512兆字节。如果你需要扩大到这个尺寸,你可以使用多个键。

警告:当设置最后一个可能的字节并且存储在密钥中的字符串值尚未保存字符串值或保存一个小字符串值时,Redis 需要分配所有可以阻塞服务器一段时间的中间内存。在2010年的 MacBook Pro上,设置字节数536870911(512MB分配)需要约300ms,设置字节数134217728(128MB分配)占用约80ms,设置位数33554432(32MB分配)占用约30ms,设置位数8388608(分配8MB)需要〜8ms。请注意,一旦完成第一次分配,对同一个密钥的 SETRANGE 后续调用将不会产生分配开销。

模式

感谢 SETRANGE 和类似的 GETRANGE 命令,您可以使用 Redis 字符串作为具有O(1)随机访问的线性阵列。这是许多真实世界使用案例中非常快速和高效的存储空间。

返回值

整数回复:命令修改后的字符串长度。

例子

基本用法:

redis>  SET key1 "Hello World" "OK" redis>  SETRANGE key1 6 "Redis" (integer) 11 redis>  GET key1 "Hello Redis"

零填充示例:

redis>  SETRANGE key2 6 "Redis" (integer) 11 redis>  GET key2 "\u0000\u0000\u0000\u0000\u0000\u0000Redis"

Previous article: Next article: