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.