天天看點

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:該指令修改後的字元串長度

##例子

基本使用方法:

補0的例子:

本文作者:陳群

本文來自雲栖社群合作夥伴rediscn,了解相關資訊可以關注redis.cn網站。

繼續閱讀