New v21.11.1

New v21.11.1

New web socket event listener, custom and default for properties, upgraded to the latest Gremlin v3.5.1, new REDIS commands


3 min read

November 30th, 2021

Hi folks,

November has been a long month with only one release instead of the usual two you guys got used to. We fixed many issues and released some major improvements.

Web Socket Event Listener

Greg ( @tetious ) did a major contribution with the new real-time web socket listener. You can register to events that are now broadcasted through Web Socket to the client, such as before and after the creation, update, and deletion of a record. This is fundamental for real-time applications that receive updates in push from the ArcadeDB Server.

Example to subscribe to all the updates for the type Movie in the database movies, you can send the following payload as a JSON to the Web Socket registration endpoint ws://SERVER:PORT/ws:

  "action": "subscribe",
  "database": "movies",
  "type": "Movie",
  "changeTypes": ["update"]

If you are interested in this new feature, check the documentation.

Upgraded to Gremlin 3.5.1

Not only we upgraded ArcadeDB from Gremlin 3.4.x to 3.5.1, but we also provide now Gremlin Server as a plugin that started embedded in ArcadeDB server. This means zero latency for queries, the Gremlin Server and ArcadeDB can run in the same JVM by just configuring the plugin at startup. Example:

~/arcadedb $ bin/ -Darcadedb.server.plugins="GremlinServer:com.arcadedb.server.gremlin.GremlinServerPlugin"

At startup, the Gremlin Server plugin looks for the file config/gremlin-server.yaml under the ArcadeDB path. If the file is present, the Gremlin Server will be configured with the settings contained in the YAML file, otherwise, the default configuration will be used.

For more information, check the documentation

Redis Commands

We added a bunch of new commands in the REDIS protocol and now there are 2 ways the REDIS plugin works: transient (RAM only) and persistent.


The following commands do not take the bucket as a parameter because they work only in RAM on a shared (thread-safe) hashmap. This means all the stored values are reset when the server restarts.

Available transient commands (in alphabetic order):

  • DECR, Decrement a value by 1
  • DECRBY, Decrement a value by a specific amount (64-bit precision)
  • GET, Returns the value associated with a key
  • GETDEL, Remove and returns the value associated with a key
  • INCR, Increment a value by 1
  • INCRBY, Increment a value by a specific amount (64-bit precision)
  • INCRBYFLOAT, Increment a value by a specific amount expresses as a float (64-bit precision)
  • SET, Sets a value associated with a key

The following commands act on persistent buckets in the database. Records (documents, vertices and edges) are always in form of JSON embedded in strings. The bucket name is mapped as the database name first, then type, the index or the record’s RID based on the use case. An index must exist on the property you used to retrieve the document, otherwise an error is returned.

Available persistent commands (in alphabetic order):

  • HDEL, to delete one or more records by a key, a composite key or record's id
  • HGET, to retrieve a record by a key, a composite key or record's id
  • HMGET, to retrieve multiple records by a key, a composite key or record's id
  • HSET, to create and update one or more records by a key, a composite key or record's id

For more information about the REDIS plugin, look at the documentation.

For more information, look at the Release 21.11.1 on GitHub.

Have fun with data,

The ArcadeDB Team