SETRANGE key offset value
這個命令的作用是覆蓋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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3.5连接MySQL
- 下一篇: 2017第八届中国跨境电商峰会暨展览将在