Skip to main content

APPEND

Introduction​

In Dragonfly, as well as in Redis and Valkey, the APPEND command is used to add a specified value to the end of a string stored at a given key. If the key doesn't exist, the command creates a new key and initializes it with an empty string before appending. This command is particularly useful for accumulating logs or constructing strings incrementally.

Syntax​

APPEND key value
  • Time complexity: O(1), assuming the appended value is small and the already present value is of any size.
  • ACL categories: @write, @string, @fast

Parameter Explanations​

  • key: The key of the string you want to append data to. If the key already exists, it must be of type string; otherwise, a new string will be created.
  • value: The string value to be appended to the existing string associated with the key.

Return Values​

  • An integer indicating the length of the string after the append operation.

Code Examples​

Basic Example​

Appending a value to an existing key:

dragonfly$> SET mystring "Hello"
OK
dragonfly$> APPEND mystring " World"
(integer) 11
dragonfly$> GET mystring
"Hello World"

Logging Use Case​

Accumulating log entries for a simple logging mechanism:

dragonfly$> APPEND log "2023-07-26 10:00:00 - User login\n"
(integer) 33
dragonfly$> APPEND log "2023-07-26 10:05:00 - User logout\n"
(integer) 66
dragonfly$> GET log
"2023-07-26 10:00:00 - User login\n2023-07-26 10:05:00 - User logout\n"

Incremental Data Construction​

Building a configuration file or script incrementally:

dragonfly$> APPEND config "server {\n"
(integer) 9
dragonfly$> APPEND config " listen 80;\n"
(integer) 22
dragonfly$> APPEND config "}\n"
(integer) 24
dragonfly$> GET config
"server {\n listen 80;\n}\n"

Best Practices​

  • Ensure that the key being appended to is of string type to avoid errors.
  • Use APPEND for operations where string concatenation is frequent but data volume is manageable.

Common Mistakes​

  • Appending to a key that holds a non-string value can result in an error. Always ensure the data type compatibility.

    dragonfly$> LPUSH mylist "item"
    (integer) 1
    dragonfly$> APPEND mylist "string"
    (error) WRONGTYPE Operation against a key holding the wrong kind of value

FAQs​

What happens if the key does not exist?​

If the key does not exist, APPEND will create it as an empty string and then append the provided value.

Can I use APPEND with non-string keys?​

No, APPEND only works with keys that hold string values. Attempting to use it with other data types will result in an error.