Skip to content

Build your first Aerospike app

Create, read, and query records in Aerospike using the Developer SDK. This quickstart gets you from zero to working code in under 5 minutes.

Prerequisites

  • Java 21+ or Python 3.10+
  • Access to an Aerospike cluster (or run one locally)

Procedure

  1. Install the SDK.

    Maven

    Add the dependency to your pom.xml:

    <dependency>
    <groupId>com.aerospike</groupId>
    <artifactId>aerospike-client-sdk</artifactId>
    <version>0.9.0-alpha</version>
    </dependency>

    Gradle (Groovy)

    Add to your build.gradle:

    dependencies {
    implementation 'com.aerospike:aerospike-client-sdk:0.9.0-alpha'
    }

    Gradle (Kotlin)

    Add to your build.gradle.kts:

    dependencies {
    implementation("com.aerospike:aerospike-client-sdk:0.9.0-alpha")
    }
  2. Connect to Aerospike.

    import com.aerospike.client.sdk.policy.Behavior;
    import com.aerospike.client.sdk.Cluster;
    import com.aerospike.client.sdk.ClusterDefinition;
    import com.aerospike.client.sdk.Session;
    try (Cluster cluster = new ClusterDefinition("localhost", 3000).connect()) {
    Session session = cluster.createSession(Behavior.DEFAULT);
    System.out.println("Connected to Aerospike!");
    // ... your code here ...
    }
  3. Create a record.

    // Define your dataset (namespace + set)
    DataSet users = DataSet.of("test", "users");
    // Create or update a record
    session.upsert(users)
    .bins("name", "email", "age")
    .id("user-1").values("Alice Smith", "alice@example.com", 28)
    .execute();
    System.out.println("Record created!");
  4. Read it back.

    // Read the record by key
    RecordStream readStream = session.query(users.id("user-1")).execute();
    readStream.getFirst().ifPresent(result -> {
    Record user = result.recordOrThrow();
    System.out.println("Name: " + user.getString("name"));
    System.out.println("Email: " + user.getString("email"));
    System.out.println("Age: " + user.getInt("age"));
    });
    // Output:
    // Name: Alice Smith
    // Email: alice@example.com
    // Age: 28
  5. Query with AEL.

    // Add a few more users first
    session.upsert(users)
    .bins("name", "age")
    .id("user-2").values("Bob Jones", 35)
    .id("user-3").values("Carol White", 22)
    .execute();
    // Query users over 25
    RecordStream queryStream = session.query(users)
    .where("$.age > 25")
    .execute();
    int count = 0;
    while (queryStream.hasNext()) {
    RecordResult result = queryStream.next();
    Record r = result.recordOrThrow();
    count++;
    System.out.println(" - " + r.getString("name"));
    }
    queryStream.close();
    System.out.println("Found " + count + " users over 25");
    // Output:
    // - Alice Smith
    // - Bob Jones
    // Found 2 users over 25
    // NOTE: A dataset-wide query without an ordering
    // clause can return records in any order.

Complete code

import com.aerospike.client.sdk.policy.Behavior;
import com.aerospike.client.sdk.Cluster;
import com.aerospike.client.sdk.ClusterDefinition;
import com.aerospike.client.sdk.DataSet;
import com.aerospike.client.sdk.Record;
import com.aerospike.client.sdk.RecordResult;
import com.aerospike.client.sdk.RecordStream;
import com.aerospike.client.sdk.Session;
public class QuickstartApp {
public static void main(String[] args) {
DataSet users = DataSet.of("test", "users");
try (Cluster cluster = new ClusterDefinition("localhost", 3000).connect()) {
Session session = cluster.createSession(Behavior.DEFAULT);
// Create / update a few records
session.upsert(users)
.bins("name", "email", "age", "status")
.id("user-1").values("Alice Smith", "alice@example.com", 28, "active")
.id("user-2").values("Bob Jones", "bob@example.com", 35, "active")
.id("user-3").values("Carol White", "carol@example.com", 22, "inactive")
.execute();
// Read one record
// Query active adults
RecordStream queryStream = session.query(users)
.where("$.status == 'active' and $.age >= 18")
.execute();
int adultCount = 0;
while (queryStream.hasNext()) {
RecordResult result = queryStream.next();
Record record = result.recordOrThrow();
adultCount++;
System.out.println("Adult user: " + record.getString("name"));
}
queryStream.close();
System.out.println("Found " + adultCount + " active adults");
// Cleanup so the example is repeatable.
session.delete(users.ids("user-1", "user-2", "user-3")).execute();
}
}
}

Next steps

Create Records

Learn all the ways to insert, upsert, and configure records.

Create Records →

Query by Field Values

Filter and search your data with intuitive syntax.

Find Records →

Feedback

Was this page helpful?

What type of feedback are you giving?

What would you like us to know?

+Capture screenshot

Can we reach out to you?