这个命令的作用是覆盖key对应的string的一部分,从指定的offset处开始,覆盖value的长度。如果offset比当前key对应string还要长,那这个string后面就补0以达到offset。不存在的keys被认为是空字符串,所以这个命令可以确保key有一个足够大的字符串,能在offset处设置value。

注意,offset最大可以是229-1(536870911),因为redis字符串限制在512M大小。如果你需要超过这个大小,你可以用多个keys。

警告:当set最后一个字节并且key还没有一个字符串value或者其value是个比较小的字符串时,Redis需要立即分配所有内存,这有可能会导致服务阻塞一会。在一台2010MacBook Pro上,set536870911字节(分配512MB)需要~300ms,set134217728字节(分配128MB)需要~80ms,set33554432比特位(分配32MB)需要~30ms,set8388608比特(分配8MB)需要8ms。注意,一旦第一次内存分配完,后面对同一个key调用SETRANGE就不会预先得到内存分配。

##模式

正因为有了SETRANGE和类似功能的GETRANGE命令,你可以把Redis的字符串当成线性数组,随机访问只要O(1)复杂度。这在很多真实场景应用里非常快和高效。

##返回值

integer-reply:该命令修改后的字符串长度

##例子

基本使用方法:

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

补0的例子:

redis> SETRANGE key2 6 "Redis"
(integer) 11
redis> GET key2
"\x00\x00\x00\x00\x00\x00Redis"
redis>

本文作者:陈群
本文来自云栖社区合作伙伴rediscn,了解相关信息可以关注redis.cn网站。

SETRANGE key offset value相关推荐

  1. Redis 笔记(03)— string类型(设置key、获取key、设置过期时间、批量设置获取key、对key进行加减、对key值进行追加、获取value子串)

    字符串 string 是 Redis 最简单的数据结构.Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据.不同类型的数据结构的 ...

  2. 003-redis-命令-key操作,字符串操作

    Redis 键(key) Redis 键命令用于管理 redis 的键. 序号 命令及描述 1 DEL key 该命令用于在 key 存在时删除 key. 2 DUMP key  序列化给定 key ...

  3. redis查看某一个key的大小_Redis笔记

    一.Redis基础 1.简介 remote dictionary server  远程字典服务 C语言编写,基于内存,可持久化的日志型key value数据库. 他会周期性将更新的数据写入磁盘或把修改 ...

  4. redis命令---redist键命令(key)---redis字符串命令(str)

    redis键的命令 序号 命令及描述 1 DEL key 该命令用于在 key 存在时删除 key. 2 DUMP key 序列化给定 key ,并返回被序列化的值. 3 EXISTS key 检查给 ...

  5. Redis 的 key 和数据类型

    Redis 是一个高性能的键值对(key-value) 内存数据库.它支持存储的 value 类型十分丰富.性能极高,读写速度每秒 10w 次以上. Redis 的操作是原子性的.要么成功执行,要么失 ...

  6. redis(3)-redis基本类型

    在redis安装目录下存在redis自带的客户端,启动即可使用.如果设置了密码,需要输入auth 123456进行验证.123456为密码. redis的基本数据类型: 1.字符串类型(String) ...

  7. java之redis篇(spring-data-redis整合)

      redis的知识:官网 1,利用spring-data-redis整合 项目使用的pom.xml: <project xmlns="http://maven.apache.org/ ...

  8. Redis学习-String

    命令  描述  复杂的  返回值 SET key value [EX seconds] [PX milliseconds] [NX|XX] 将字符串值value关联到key.如果key已经持有其他值, ...

  9. redis系列(一)-----日常使用详解

    目录 ------------------------------------- Nosql数据库概述 NoSQ数据库的分类 几种常见Nosql功能及应用场景介绍 redis简介 redis应用场景 ...

最新文章

  1. golang http 操作 简介
  2. 玩转数据结构从入门到进阶四
  3. python 知识点记录二
  4. 如何在单个API中支持Java 6、8、9
  5. 读写自旋锁,第1部分(来自IBM)
  6. 信号与系统 电子课本(郑君里)
  7. 在UBUNTU 13.1 中使用五笔拼音混合输入法
  8. 线性卷积和循环卷积(圆周卷积)
  9. C++校招面试题合集
  10. 超市管理系统-2(数据库代码以及数据库逻辑)
  11. 纯前端实现登记照压缩宽高体积大小和换装功能
  12. 宝尚网上股票-今年A股新股数量与融资额再创新高
  13. Java知识体系脑图
  14. C Primer Plus NO.8
  15. 2018.8.4T3(大容斥)
  16. 华为AX3Pro+旁路由+Zerotier实现外网访问家里设备
  17. Cytoskeleton微管蛋白活细胞染色和聚合分析方案
  18. 64位的jre和32位的jre
  19. 城市消费券,拒绝恶意爬取
  20. 图片处理:完成图片的颜色反转

热门文章

  1. 史上最全Winform中使用ZedGraph教程与资源汇总整理(附资源下载)
  2. 关于Scrum中sprint的规模估算的对话
  3. linus启动mysql失败_Linux下MySQL启动失败的解决一例
  4. 极致无边界!2021 神策数据 Tech-Day 即将开幕
  5. 活动 | 玩转“视”界杯 —— 2018 上半年广告数据分析及短视频分享
  6. 中奖名单 | 价值 199 的大数据平台研发课程幸运er
  7. Extjs使用备忘录
  8. statCVS的问题剖析
  9. MySQL buffer pool中的三种链
  10. vue的数组如何存储数据