?
This document uses PHP Chinese website manual Release
APPEND key value
自2.0.0起可用。
時間復雜度: O(1)。分攤的時間復雜度為O(1),假設(shè)附加值很小,并且已有值為任意大小,因為Redis使用的動態(tài)字符串庫將使每次重新分配的可用空間加倍。
如果key
已經(jīng)存在,并且是一個字符串,則該命令將value
在字符串的末尾附加。如果key
不存在,它將被創(chuàng)建并設(shè)置為空字符串,因此 APPEND 在這種特殊情況下將與SET類似。
整數(shù)回復:追加操作后的字符串長度。
redis> EXISTS mykey (integer) 0
redis> APPEND mykey "Hello" (integer) 5
redis> APPEND mykey " World" (integer) 11
redis> GET mykey "Hello World"
APPEND 命令可用于創(chuàng)建固定大小樣本列表的非常緊湊的表示,通常稱為時間序列。每次新樣品到達時,我們都可以使用命令將其存儲起來
APPEND timeseries "fixed-size sample"
訪問時間序列中的單個元素并不難:
可以使用 STRLEN 來獲取樣本數(shù)量。
GETRANGE 允許隨機訪問元素。如果我們的時間序列具有關(guān)聯(lián)的時間信息,我們可以輕松實現(xiàn)二分查找,以便將GETRANGE 與 Redis 2.6 中提供的 Lua 腳本引擎結(jié)合起來。
SETRANGE 可以用來覆蓋現(xiàn)有的時間序列。
這種模式的局限性在于,我們被迫進入只有附加模式的操作模式,因為Redis目前缺少能夠修剪字符串對象的命令,所以無法輕松地將時間序列縮減到給定大小。然而,以這種方式存儲的時間序列的空間效率是顯著的。
提示:可以根據(jù)當前的 Unix 時間切換到不同的密鑰,這樣每個密鑰可能只有相對較少的采樣數(shù)量,以避免處理非常大的密鑰,并且使此模式更多友好可以分布在許多 Redis 實例中。
使用固定尺寸字符串采樣傳感器溫度的示例(使用二進制格式在實際實現(xiàn)中更好)。
redis> APPEND ts "0043" (integer) 4
redis> APPEND ts "0035" (integer) 8
redis> GETRANGE ts 0 3 "0043"
redis> GETRANGE ts 4 7 "0035"