Skip to content

Repository files navigation

Aerospike Java SDK

Note

This is a developer preview, not yet ready for production use, but with future releases planned. We encourage feedback from the Aerospike developer community through GitHub issues.

A ground-up redesign of the Aerospike Java client — fluent, type-safe, and built for modern Java (21+).

Quick Start

importcom.aerospike.client.sdk.*;
importjava.util.List;
importjava.util.Map;
publicclassQuickStart {
publicstaticvoidmain(String[] args) {
// Connect to the clustertry (Clustercluster = newClusterDefinition("localhost", 3000)
.withNativeCredentials("admin", "password")
.connect()) {
Sessionsession = cluster.createSession(Behavior.DEFAULT);
DataSetusers = DataSet.of("test", "users");
// --- Insert some data ---session.upsert(users.id("alice"))
.bin("name").setTo("Alice")
.bin("age").setTo(30)
.bin("tags").setTo(List.of("admin", "active"))
.bin("scores").setTo(List.of(95, 87, 92, 78))
.bin("prefs").setTo(Map.of("theme", "dark", "lang", "en"))
.execute();
// --- Read it back ---Recordrecord = session.query(users.id("alice"))
.execute()
.getFirstRecord();
System.out.println(record.getString("name")); // AliceSystem.out.println(record.getLong("age")); // 30// --- Update a bin ---session.update(users.id("alice"))
.bin("age").setTo(31)
.execute();
// --- Append to a list ---session.upsert(users.id("alice"))
.bin("scores").listAppend(99)
.execute();
// --- Query a list range ---session.query(users.id("alice"))
.bin("scores").onListValueRange(90, 100).getValues()
.execute();
// --- Set a map entry ---session.upsert(users.id("alice"))
.bin("prefs").onMapKey("notifications").upsert(true)
.execute();
// --- Read a map key ---session.query(users.id("alice"))
.bin("prefs").onMapKey("theme").getValues()
.execute();
// --- Filter with AEL ---session.query(users)
.where("$.age > 25 and 'active' in $.tags")
.execute();
}
}
}

What's happening

  1. ConnectClusterDefinition configures the connection (hosts, credentials, TLS); calling .connect() returns a Cluster that manages node discovery and connection pooling. Cluster is Closeable — wrap it in try-with-resources.

  2. Session — A lightweight handle through which all operations flow. Create as many as you need with different Behavior profiles to vary timeouts, retries, and consistency settings without changing application code.

  3. Write verbsupsert, insert, update, replace, and replaceIfExists each enforce intent at the method level. No more runtime policy flags.

  4. Readssession.query(key) returns a RecordStream that works as an Iterator, a Java Stream, or a CompletableFuture.

  5. CDT operations — Bins containing Lists and Maps are manipulated through a fluent navigation chain: select elements (.onListValueRange(...), .onMapKey(...)), then choose an action (.getValues(), .remove(), .count()). See the List Operations and Map Operations references for every available operation.

  6. AEL filtering — The Aerospike Expression Language lets you write server-side filters as concise strings ("$.age > 25"). When a matching secondary index exists, the SDK selects it automatically. See the AEL Documentation for the full language reference.

Features

For comprehensive documentation with code examples for every feature, see the Key Features Guide.

FeatureDescriptionDetails
Fluent write verbsinsert, update, upsert, replace, replaceIfExists — intent is explicit at the method levelWrite Operations
Reads & RecordStreamUniversal RecordStream return type with Iterator, Stream, and CompletableFuture supportRead Operations, RecordStream
Heterogeneous batchingMix reads, writes, deletes, and UDFs across different keys in a single server round-tripBatch Chains
AEL (Expression Language)Text-based server-side filters with automatic secondary index selectionAEL Reference
Expression bin opsCompute derived values server-side (selectFrom, upsertFrom)Expression Ops
List & Map CDT operationsFluent navigation and manipulation of nested collection data typesList Ops, Map Ops
Async & reactiveexecuteAsync() with CompletableFuture and Flow.Publisher (backpressure)Async Operations
TransactionsMulti-record ACID transactions with automatic retry on transient failuresTransactions
Behavior (policy config)Cascading, selector-based configuration — separate dev concerns from ops concernsBehavior
Object mappingRecordMapper and TypeSafeDataSet for mapping Java objects to/from recordsObject Mapping
Queries & scansDataset-level queries with pagination, sorting, partition targeting, and throttlingQueries
Background operationsServer-side bulk updates, deletes, and UDF execution across entire setsBackground Ops
UDFsRegister, execute, and chain Lua User Defined FunctionsUDFs
Secondary indexesCreate and drop indexes; AEL queries use them automaticallyIndexes
Info commandsTyped, structured access to cluster metadata (namespaces, sets, indexes)Info Commands
Exception hierarchyFine-grained unchecked exceptions with result codes for programmatic handlingExceptions

Building

mvn compile # Compile
mvn test# Run tests
mvn javadoc:javadoc # Generate Javadoc

Requirements

  • Java 21+ (Java 24+ recommended for improved virtual thread performance)
  • Maven 3.9.5+

About

Aerospike Java Client

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - aerospike/aerospike-client-java-sdk: Aerospike Java Client · GitHub
Skip to content

Repository files navigation

Aerospike Java SDK

Note

This is a developer preview, not yet ready for production use, but with future releases planned. We encourage feedback from the Aerospike developer community through GitHub issues.

A ground-up redesign of the Aerospike Java client — fluent, type-safe, and built for modern Java (21+).

Quick Start

importcom.aerospike.client.sdk.*;
importjava.util.List;
importjava.util.Map;
publicclassQuickStart {
publicstaticvoidmain(String[] args) {
// Connect to the clustertry (Clustercluster = newClusterDefinition("localhost", 3000)
.withNativeCredentials("admin", "password")
.connect()) {
Sessionsession = cluster.createSession(Behavior.DEFAULT);
DataSetusers = DataSet.of("test", "users");
// --- Insert some data ---session.upsert(users.id("alice"))
.bin("name").setTo("Alice")
.bin("age").setTo(30)
.bin("tags").setTo(List.of("admin", "active"))
.bin("scores").setTo(List.of(95, 87, 92, 78))
.bin("prefs").setTo(Map.of("theme", "dark", "lang", "en"))
.execute();
// --- Read it back ---Recordrecord = session.query(users.id("alice"))
.execute()
.getFirstRecord();
System.out.println(record.getString("name")); // AliceSystem.out.println(record.getLong("age")); // 30// --- Update a bin ---session.update(users.id("alice"))
.bin("age").setTo(31)
.execute();
// --- Append to a list ---session.upsert(users.id("alice"))
.bin("scores").listAppend(99)
.execute();
// --- Query a list range ---session.query(users.id("alice"))
.bin("scores").onListValueRange(90, 100).getValues()
.execute();
// --- Set a map entry ---session.upsert(users.id("alice"))
.bin("prefs").onMapKey("notifications").upsert(true)
.execute();
// --- Read a map key ---session.query(users.id("alice"))
.bin("prefs").onMapKey("theme").getValues()
.execute();
// --- Filter with AEL ---session.query(users)
.where("$.age > 25 and 'active' in $.tags")
.execute();
}
}
}

What's happening

  1. ConnectClusterDefinition configures the connection (hosts, credentials, TLS); calling .connect() returns a Cluster that manages node discovery and connection pooling. Cluster is Closeable — wrap it in try-with-resources.

  2. Session — A lightweight handle through which all operations flow. Create as many as you need with different Behavior profiles to vary timeouts, retries, and consistency settings without changing application code.

  3. Write verbsupsert, insert, update, replace, and replaceIfExists each enforce intent at the method level. No more runtime policy flags.

  4. Readssession.query(key) returns a RecordStream that works as an Iterator, a Java Stream, or a CompletableFuture.

  5. CDT operations — Bins containing Lists and Maps are manipulated through a fluent navigation chain: select elements (.onListValueRange(...), .onMapKey(...)), then choose an action (.getValues(), .remove(), .count()). See the List Operations and Map Operations references for every available operation.

  6. AEL filtering — The Aerospike Expression Language lets you write server-side filters as concise strings ("$.age > 25"). When a matching secondary index exists, the SDK selects it automatically. See the AEL Documentation for the full language reference.

Features

For comprehensive documentation with code examples for every feature, see the Key Features Guide.

FeatureDescriptionDetails
Fluent write verbsinsert, update, upsert, replace, replaceIfExists — intent is explicit at the method levelWrite Operations
Reads & RecordStreamUniversal RecordStream return type with Iterator, Stream, and CompletableFuture supportRead Operations, RecordStream
Heterogeneous batchingMix reads, writes, deletes, and UDFs across different keys in a single server round-tripBatch Chains
AEL (Expression Language)Text-based server-side filters with automatic secondary index selectionAEL Reference
Expression bin opsCompute derived values server-side (selectFrom, upsertFrom)Expression Ops
List & Map CDT operationsFluent navigation and manipulation of nested collection data typesList Ops, Map Ops
Async & reactiveexecuteAsync() with CompletableFuture and Flow.Publisher (backpressure)Async Operations
TransactionsMulti-record ACID transactions with automatic retry on transient failuresTransactions
Behavior (policy config)Cascading, selector-based configuration — separate dev concerns from ops concernsBehavior
Object mappingRecordMapper and TypeSafeDataSet for mapping Java objects to/from recordsObject Mapping
Queries & scansDataset-level queries with pagination, sorting, partition targeting, and throttlingQueries
Background operationsServer-side bulk updates, deletes, and UDF execution across entire setsBackground Ops
UDFsRegister, execute, and chain Lua User Defined FunctionsUDFs
Secondary indexesCreate and drop indexes; AEL queries use them automaticallyIndexes
Info commandsTyped, structured access to cluster metadata (namespaces, sets, indexes)Info Commands
Exception hierarchyFine-grained unchecked exceptions with result codes for programmatic handlingExceptions

Building

mvn compile # Compile
mvn test# Run tests
mvn javadoc:javadoc # Generate Javadoc

Requirements

  • Java 21+ (Java 24+ recommended for improved virtual thread performance)
  • Maven 3.9.5+

About

Aerospike Java Client

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - aerospike/aerospike-client-java-sdk: Aerospike Java Client · GitHub
Skip to content

Repository files navigation

Aerospike Java SDK

Note

This is a developer preview, not yet ready for production use, but with future releases planned. We encourage feedback from the Aerospike developer community through GitHub issues.

A ground-up redesign of the Aerospike Java client — fluent, type-safe, and built for modern Java (21+).

Quick Start

importcom.aerospike.client.sdk.*;
importjava.util.List;
importjava.util.Map;
publicclassQuickStart {
publicstaticvoidmain(String[] args) {
// Connect to the clustertry (Clustercluster = newClusterDefinition("localhost", 3000)
.withNativeCredentials("admin", "password")
.connect()) {
Sessionsession = cluster.createSession(Behavior.DEFAULT);
DataSetusers = DataSet.of("test", "users");
// --- Insert some data ---session.upsert(users.id("alice"))
.bin("name").setTo("Alice")
.bin("age").setTo(30)
.bin("tags").setTo(List.of("admin", "active"))
.bin("scores").setTo(List.of(95, 87, 92, 78))
.bin("prefs").setTo(Map.of("theme", "dark", "lang", "en"))
.execute();
// --- Read it back ---Recordrecord = session.query(users.id("alice"))
.execute()
.getFirstRecord();
System.out.println(record.getString("name")); // AliceSystem.out.println(record.getLong("age")); // 30// --- Update a bin ---session.update(users.id("alice"))
.bin("age").setTo(31)
.execute();
// --- Append to a list ---session.upsert(users.id("alice"))
.bin("scores").listAppend(99)
.execute();
// --- Query a list range ---session.query(users.id("alice"))
.bin("scores").onListValueRange(90, 100).getValues()
.execute();
// --- Set a map entry ---session.upsert(users.id("alice"))
.bin("prefs").onMapKey("notifications").upsert(true)
.execute();
// --- Read a map key ---session.query(users.id("alice"))
.bin("prefs").onMapKey("theme").getValues()
.execute();
// --- Filter with AEL ---session.query(users)
.where("$.age > 25 and 'active' in $.tags")
.execute();
}
}
}

What's happening

  1. ConnectClusterDefinition configures the connection (hosts, credentials, TLS); calling .connect() returns a Cluster that manages node discovery and connection pooling. Cluster is Closeable — wrap it in try-with-resources.

  2. Session — A lightweight handle through which all operations flow. Create as many as you need with different Behavior profiles to vary timeouts, retries, and consistency settings without changing application code.

  3. Write verbsupsert, insert, update, replace, and replaceIfExists each enforce intent at the method level. No more runtime policy flags.

  4. Readssession.query(key) returns a RecordStream that works as an Iterator, a Java Stream, or a CompletableFuture.

  5. CDT operations — Bins containing Lists and Maps are manipulated through a fluent navigation chain: select elements (.onListValueRange(...), .onMapKey(...)), then choose an action (.getValues(), .remove(), .count()). See the List Operations and Map Operations references for every available operation.

  6. AEL filtering — The Aerospike Expression Language lets you write server-side filters as concise strings ("$.age > 25"). When a matching secondary index exists, the SDK selects it automatically. See the AEL Documentation for the full language reference.

Features

For comprehensive documentation with code examples for every feature, see the Key Features Guide.

FeatureDescriptionDetails
Fluent write verbsinsert, update, upsert, replace, replaceIfExists — intent is explicit at the method levelWrite Operations
Reads & RecordStreamUniversal RecordStream return type with Iterator, Stream, and CompletableFuture supportRead Operations, RecordStream
Heterogeneous batchingMix reads, writes, deletes, and UDFs across different keys in a single server round-tripBatch Chains
AEL (Expression Language)Text-based server-side filters with automatic secondary index selectionAEL Reference
Expression bin opsCompute derived values server-side (selectFrom, upsertFrom)Expression Ops
List & Map CDT operationsFluent navigation and manipulation of nested collection data typesList Ops, Map Ops
Async & reactiveexecuteAsync() with CompletableFuture and Flow.Publisher (backpressure)Async Operations
TransactionsMulti-record ACID transactions with automatic retry on transient failuresTransactions
Behavior (policy config)Cascading, selector-based configuration — separate dev concerns from ops concernsBehavior
Object mappingRecordMapper and TypeSafeDataSet for mapping Java objects to/from recordsObject Mapping
Queries & scansDataset-level queries with pagination, sorting, partition targeting, and throttlingQueries
Background operationsServer-side bulk updates, deletes, and UDF execution across entire setsBackground Ops
UDFsRegister, execute, and chain Lua User Defined FunctionsUDFs
Secondary indexesCreate and drop indexes; AEL queries use them automaticallyIndexes
Info commandsTyped, structured access to cluster metadata (namespaces, sets, indexes)Info Commands
Exception hierarchyFine-grained unchecked exceptions with result codes for programmatic handlingExceptions

Building

mvn compile # Compile
mvn test# Run tests
mvn javadoc:javadoc # Generate Javadoc

Requirements

  • Java 21+ (Java 24+ recommended for improved virtual thread performance)
  • Maven 3.9.5+

About

Aerospike Java Client

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - aerospike/aerospike-client-java-sdk: Aerospike Java Client · GitHub
Skip to content

Repository files navigation

Aerospike Java SDK

Note

This is a developer preview, not yet ready for production use, but with future releases planned. We encourage feedback from the Aerospike developer community through GitHub issues.

A ground-up redesign of the Aerospike Java client — fluent, type-safe, and built for modern Java (21+).

Quick Start

importcom.aerospike.client.sdk.*;
importjava.util.List;
importjava.util.Map;
publicclassQuickStart {
publicstaticvoidmain(String[] args) {
// Connect to the clustertry (Clustercluster = newClusterDefinition("localhost", 3000)
.withNativeCredentials("admin", "password")
.connect()) {
Sessionsession = cluster.createSession(Behavior.DEFAULT);
DataSetusers = DataSet.of("test", "users");
// --- Insert some data ---session.upsert(users.id("alice"))
.bin("name").setTo("Alice")
.bin("age").setTo(30)
.bin("tags").setTo(List.of("admin", "active"))
.bin("scores").setTo(List.of(95, 87, 92, 78))
.bin("prefs").setTo(Map.of("theme", "dark", "lang", "en"))
.execute();
// --- Read it back ---Recordrecord = session.query(users.id("alice"))
.execute()
.getFirstRecord();
System.out.println(record.getString("name")); // AliceSystem.out.println(record.getLong("age")); // 30// --- Update a bin ---session.update(users.id("alice"))
.bin("age").setTo(31)
.execute();
// --- Append to a list ---session.upsert(users.id("alice"))
.bin("scores").listAppend(99)
.execute();
// --- Query a list range ---session.query(users.id("alice"))
.bin("scores").onListValueRange(90, 100).getValues()
.execute();
// --- Set a map entry ---session.upsert(users.id("alice"))
.bin("prefs").onMapKey("notifications").upsert(true)
.execute();
// --- Read a map key ---session.query(users.id("alice"))
.bin("prefs").onMapKey("theme").getValues()
.execute();
// --- Filter with AEL ---session.query(users)
.where("$.age > 25 and 'active' in $.tags")
.execute();
}
}
}

What's happening

  1. ConnectClusterDefinition configures the connection (hosts, credentials, TLS); calling .connect() returns a Cluster that manages node discovery and connection pooling. Cluster is Closeable — wrap it in try-with-resources.

  2. Session — A lightweight handle through which all operations flow. Create as many as you need with different Behavior profiles to vary timeouts, retries, and consistency settings without changing application code.

  3. Write verbsupsert, insert, update, replace, and replaceIfExists each enforce intent at the method level. No more runtime policy flags.

  4. Readssession.query(key) returns a RecordStream that works as an Iterator, a Java Stream, or a CompletableFuture.

  5. CDT operations — Bins containing Lists and Maps are manipulated through a fluent navigation chain: select elements (.onListValueRange(...), .onMapKey(...)), then choose an action (.getValues(), .remove(), .count()). See the List Operations and Map Operations references for every available operation.

  6. AEL filtering — The Aerospike Expression Language lets you write server-side filters as concise strings ("$.age > 25"). When a matching secondary index exists, the SDK selects it automatically. See the AEL Documentation for the full language reference.

Features

For comprehensive documentation with code examples for every feature, see the Key Features Guide.

FeatureDescriptionDetails
Fluent write verbsinsert, update, upsert, replace, replaceIfExists — intent is explicit at the method levelWrite Operations
Reads & RecordStreamUniversal RecordStream return type with Iterator, Stream, and CompletableFuture supportRead Operations, RecordStream
Heterogeneous batchingMix reads, writes, deletes, and UDFs across different keys in a single server round-tripBatch Chains
AEL (Expression Language)Text-based server-side filters with automatic secondary index selectionAEL Reference
Expression bin opsCompute derived values server-side (selectFrom, upsertFrom)Expression Ops
List & Map CDT operationsFluent navigation and manipulation of nested collection data typesList Ops, Map Ops
Async & reactiveexecuteAsync() with CompletableFuture and Flow.Publisher (backpressure)Async Operations
TransactionsMulti-record ACID transactions with automatic retry on transient failuresTransactions
Behavior (policy config)Cascading, selector-based configuration — separate dev concerns from ops concernsBehavior
Object mappingRecordMapper and TypeSafeDataSet for mapping Java objects to/from recordsObject Mapping
Queries & scansDataset-level queries with pagination, sorting, partition targeting, and throttlingQueries
Background operationsServer-side bulk updates, deletes, and UDF execution across entire setsBackground Ops
UDFsRegister, execute, and chain Lua User Defined FunctionsUDFs
Secondary indexesCreate and drop indexes; AEL queries use them automaticallyIndexes
Info commandsTyped, structured access to cluster metadata (namespaces, sets, indexes)Info Commands
Exception hierarchyFine-grained unchecked exceptions with result codes for programmatic handlingExceptions

Building

mvn compile # Compile
mvn test# Run tests
mvn javadoc:javadoc # Generate Javadoc

Requirements

  • Java 21+ (Java 24+ recommended for improved virtual thread performance)
  • Maven 3.9.5+

About

Aerospike Java Client

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - aerospike/aerospike-client-java-sdk: Aerospike Java Client · GitHub
Skip to content

Repository files navigation

Aerospike Java SDK

Note

This is a developer preview, not yet ready for production use, but with future releases planned. We encourage feedback from the Aerospike developer community through GitHub issues.

A ground-up redesign of the Aerospike Java client — fluent, type-safe, and built for modern Java (21+).

Quick Start

importcom.aerospike.client.sdk.*;
importjava.util.List;
importjava.util.Map;
publicclassQuickStart {
publicstaticvoidmain(String[] args) {
// Connect to the clustertry (Clustercluster = newClusterDefinition("localhost", 3000)
.withNativeCredentials("admin", "password")
.connect()) {
Sessionsession = cluster.createSession(Behavior.DEFAULT);
DataSetusers = DataSet.of("test", "users");
// --- Insert some data ---session.upsert(users.id("alice"))
.bin("name").setTo("Alice")
.bin("age").setTo(30)
.bin("tags").setTo(List.of("admin", "active"))
.bin("scores").setTo(List.of(95, 87, 92, 78))
.bin("prefs").setTo(Map.of("theme", "dark", "lang", "en"))
.execute();
// --- Read it back ---Recordrecord = session.query(users.id("alice"))
.execute()
.getFirstRecord();
System.out.println(record.getString("name")); // AliceSystem.out.println(record.getLong("age")); // 30// --- Update a bin ---session.update(users.id("alice"))
.bin("age").setTo(31)
.execute();
// --- Append to a list ---session.upsert(users.id("alice"))
.bin("scores").listAppend(99)
.execute();
// --- Query a list range ---session.query(users.id("alice"))
.bin("scores").onListValueRange(90, 100).getValues()
.execute();
// --- Set a map entry ---session.upsert(users.id("alice"))
.bin("prefs").onMapKey("notifications").upsert(true)
.execute();
// --- Read a map key ---session.query(users.id("alice"))
.bin("prefs").onMapKey("theme").getValues()
.execute();
// --- Filter with AEL ---session.query(users)
.where("$.age > 25 and 'active' in $.tags")
.execute();
}
}
}

What's happening

  1. ConnectClusterDefinition configures the connection (hosts, credentials, TLS); calling .connect() returns a Cluster that manages node discovery and connection pooling. Cluster is Closeable — wrap it in try-with-resources.

  2. Session — A lightweight handle through which all operations flow. Create as many as you need with different Behavior profiles to vary timeouts, retries, and consistency settings without changing application code.

  3. Write verbsupsert, insert, update, replace, and replaceIfExists each enforce intent at the method level. No more runtime policy flags.

  4. Readssession.query(key) returns a RecordStream that works as an Iterator, a Java Stream, or a CompletableFuture.

  5. CDT operations — Bins containing Lists and Maps are manipulated through a fluent navigation chain: select elements (.onListValueRange(...), .onMapKey(...)), then choose an action (.getValues(), .remove(), .count()). See the List Operations and Map Operations references for every available operation.

  6. AEL filtering — The Aerospike Expression Language lets you write server-side filters as concise strings ("$.age > 25"). When a matching secondary index exists, the SDK selects it automatically. See the AEL Documentation for the full language reference.

Features

For comprehensive documentation with code examples for every feature, see the Key Features Guide.

FeatureDescriptionDetails
Fluent write verbsinsert, update, upsert, replace, replaceIfExists — intent is explicit at the method levelWrite Operations
Reads & RecordStreamUniversal RecordStream return type with Iterator, Stream, and CompletableFuture supportRead Operations, RecordStream
Heterogeneous batchingMix reads, writes, deletes, and UDFs across different keys in a single server round-tripBatch Chains
AEL (Expression Language)Text-based server-side filters with automatic secondary index selectionAEL Reference
Expression bin opsCompute derived values server-side (selectFrom, upsertFrom)Expression Ops
List & Map CDT operationsFluent navigation and manipulation of nested collection data typesList Ops, Map Ops
Async & reactiveexecuteAsync() with CompletableFuture and Flow.Publisher (backpressure)Async Operations
TransactionsMulti-record ACID transactions with automatic retry on transient failuresTransactions
Behavior (policy config)Cascading, selector-based configuration — separate dev concerns from ops concernsBehavior
Object mappingRecordMapper and TypeSafeDataSet for mapping Java objects to/from recordsObject Mapping
Queries & scansDataset-level queries with pagination, sorting, partition targeting, and throttlingQueries
Background operationsServer-side bulk updates, deletes, and UDF execution across entire setsBackground Ops
UDFsRegister, execute, and chain Lua User Defined FunctionsUDFs
Secondary indexesCreate and drop indexes; AEL queries use them automaticallyIndexes
Info commandsTyped, structured access to cluster metadata (namespaces, sets, indexes)Info Commands
Exception hierarchyFine-grained unchecked exceptions with result codes for programmatic handlingExceptions

Building

mvn compile # Compile
mvn test# Run tests
mvn javadoc:javadoc # Generate Javadoc

Requirements

  • Java 21+ (Java 24+ recommended for improved virtual thread performance)
  • Maven 3.9.5+

About

Aerospike Java Client

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - aerospike/aerospike-client-java-sdk: Aerospike Java Client · GitHub
Skip to content

Repository files navigation

Aerospike Java SDK

Note

This is a developer preview, not yet ready for production use, but with future releases planned. We encourage feedback from the Aerospike developer community through GitHub issues.

A ground-up redesign of the Aerospike Java client — fluent, type-safe, and built for modern Java (21+).

Quick Start

importcom.aerospike.client.sdk.*;
importjava.util.List;
importjava.util.Map;
publicclassQuickStart {
publicstaticvoidmain(String[] args) {
// Connect to the clustertry (Clustercluster = newClusterDefinition("localhost", 3000)
.withNativeCredentials("admin", "password")
.connect()) {
Sessionsession = cluster.createSession(Behavior.DEFAULT);
DataSetusers = DataSet.of("test", "users");
// --- Insert some data ---session.upsert(users.id("alice"))
.bin("name").setTo("Alice")
.bin("age").setTo(30)
.bin("tags").setTo(List.of("admin", "active"))
.bin("scores").setTo(List.of(95, 87, 92, 78))
.bin("prefs").setTo(Map.of("theme", "dark", "lang", "en"))
.execute();
// --- Read it back ---Recordrecord = session.query(users.id("alice"))
.execute()
.getFirstRecord();
System.out.println(record.getString("name")); // AliceSystem.out.println(record.getLong("age")); // 30// --- Update a bin ---session.update(users.id("alice"))
.bin("age").setTo(31)
.execute();
// --- Append to a list ---session.upsert(users.id("alice"))
.bin("scores").listAppend(99)
.execute();
// --- Query a list range ---session.query(users.id("alice"))
.bin("scores").onListValueRange(90, 100).getValues()
.execute();
// --- Set a map entry ---session.upsert(users.id("alice"))
.bin("prefs").onMapKey("notifications").upsert(true)
.execute();
// --- Read a map key ---session.query(users.id("alice"))
.bin("prefs").onMapKey("theme").getValues()
.execute();
// --- Filter with AEL ---session.query(users)
.where("$.age > 25 and 'active' in $.tags")
.execute();
}
}
}

What's happening

  1. ConnectClusterDefinition configures the connection (hosts, credentials, TLS); calling .connect() returns a Cluster that manages node discovery and connection pooling. Cluster is Closeable — wrap it in try-with-resources.

  2. Session — A lightweight handle through which all operations flow. Create as many as you need with different Behavior profiles to vary timeouts, retries, and consistency settings without changing application code.

  3. Write verbsupsert, insert, update, replace, and replaceIfExists each enforce intent at the method level. No more runtime policy flags.

  4. Readssession.query(key) returns a RecordStream that works as an Iterator, a Java Stream, or a CompletableFuture.

  5. CDT operations — Bins containing Lists and Maps are manipulated through a fluent navigation chain: select elements (.onListValueRange(...), .onMapKey(...)), then choose an action (.getValues(), .remove(), .count()). See the List Operations and Map Operations references for every available operation.

  6. AEL filtering — The Aerospike Expression Language lets you write server-side filters as concise strings ("$.age > 25"). When a matching secondary index exists, the SDK selects it automatically. See the AEL Documentation for the full language reference.

Features

For comprehensive documentation with code examples for every feature, see the Key Features Guide.

FeatureDescriptionDetails
Fluent write verbsinsert, update, upsert, replace, replaceIfExists — intent is explicit at the method levelWrite Operations
Reads & RecordStreamUniversal RecordStream return type with Iterator, Stream, and CompletableFuture supportRead Operations, RecordStream
Heterogeneous batchingMix reads, writes, deletes, and UDFs across different keys in a single server round-tripBatch Chains
AEL (Expression Language)Text-based server-side filters with automatic secondary index selectionAEL Reference
Expression bin opsCompute derived values server-side (selectFrom, upsertFrom)Expression Ops
List & Map CDT operationsFluent navigation and manipulation of nested collection data typesList Ops, Map Ops
Async & reactiveexecuteAsync() with CompletableFuture and Flow.Publisher (backpressure)Async Operations
TransactionsMulti-record ACID transactions with automatic retry on transient failuresTransactions
Behavior (policy config)Cascading, selector-based configuration — separate dev concerns from ops concernsBehavior
Object mappingRecordMapper and TypeSafeDataSet for mapping Java objects to/from recordsObject Mapping
Queries & scansDataset-level queries with pagination, sorting, partition targeting, and throttlingQueries
Background operationsServer-side bulk updates, deletes, and UDF execution across entire setsBackground Ops
UDFsRegister, execute, and chain Lua User Defined FunctionsUDFs
Secondary indexesCreate and drop indexes; AEL queries use them automaticallyIndexes
Info commandsTyped, structured access to cluster metadata (namespaces, sets, indexes)Info Commands
Exception hierarchyFine-grained unchecked exceptions with result codes for programmatic handlingExceptions

Building

mvn compile # Compile
mvn test# Run tests
mvn javadoc:javadoc # Generate Javadoc

Requirements

  • Java 21+ (Java 24+ recommended for improved virtual thread performance)
  • Maven 3.9.5+

About

Aerospike Java Client

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - aerospike/aerospike-client-java-sdk: Aerospike Java Client · GitHub
Skip to content

Repository files navigation

Aerospike Java SDK

Note

This is a developer preview, not yet ready for production use, but with future releases planned. We encourage feedback from the Aerospike developer community through GitHub issues.

A ground-up redesign of the Aerospike Java client — fluent, type-safe, and built for modern Java (21+).

Quick Start

importcom.aerospike.client.sdk.*;
importjava.util.List;
importjava.util.Map;
publicclassQuickStart {
publicstaticvoidmain(String[] args) {
// Connect to the clustertry (Clustercluster = newClusterDefinition("localhost", 3000)
.withNativeCredentials("admin", "password")
.connect()) {
Sessionsession = cluster.createSession(Behavior.DEFAULT);
DataSetusers = DataSet.of("test", "users");
// --- Insert some data ---session.upsert(users.id("alice"))
.bin("name").setTo("Alice")
.bin("age").setTo(30)
.bin("tags").setTo(List.of("admin", "active"))
.bin("scores").setTo(List.of(95, 87, 92, 78))
.bin("prefs").setTo(Map.of("theme", "dark", "lang", "en"))
.execute();
// --- Read it back ---Recordrecord = session.query(users.id("alice"))
.execute()
.getFirstRecord();
System.out.println(record.getString("name")); // AliceSystem.out.println(record.getLong("age")); // 30// --- Update a bin ---session.update(users.id("alice"))
.bin("age").setTo(31)
.execute();
// --- Append to a list ---session.upsert(users.id("alice"))
.bin("scores").listAppend(99)
.execute();
// --- Query a list range ---session.query(users.id("alice"))
.bin("scores").onListValueRange(90, 100).getValues()
.execute();
// --- Set a map entry ---session.upsert(users.id("alice"))
.bin("prefs").onMapKey("notifications").upsert(true)
.execute();
// --- Read a map key ---session.query(users.id("alice"))
.bin("prefs").onMapKey("theme").getValues()
.execute();
// --- Filter with AEL ---session.query(users)
.where("$.age > 25 and 'active' in $.tags")
.execute();
}
}
}

What's happening

  1. ConnectClusterDefinition configures the connection (hosts, credentials, TLS); calling .connect() returns a Cluster that manages node discovery and connection pooling. Cluster is Closeable — wrap it in try-with-resources.

  2. Session — A lightweight handle through which all operations flow. Create as many as you need with different Behavior profiles to vary timeouts, retries, and consistency settings without changing application code.

  3. Write verbsupsert, insert, update, replace, and replaceIfExists each enforce intent at the method level. No more runtime policy flags.

  4. Readssession.query(key) returns a RecordStream that works as an Iterator, a Java Stream, or a CompletableFuture.

  5. CDT operations — Bins containing Lists and Maps are manipulated through a fluent navigation chain: select elements (.onListValueRange(...), .onMapKey(...)), then choose an action (.getValues(), .remove(), .count()). See the List Operations and Map Operations references for every available operation.

  6. AEL filtering — The Aerospike Expression Language lets you write server-side filters as concise strings ("$.age > 25"). When a matching secondary index exists, the SDK selects it automatically. See the AEL Documentation for the full language reference.

Features

For comprehensive documentation with code examples for every feature, see the Key Features Guide.

FeatureDescriptionDetails
Fluent write verbsinsert, update, upsert, replace, replaceIfExists — intent is explicit at the method levelWrite Operations
Reads & RecordStreamUniversal RecordStream return type with Iterator, Stream, and CompletableFuture supportRead Operations, RecordStream
Heterogeneous batchingMix reads, writes, deletes, and UDFs across different keys in a single server round-tripBatch Chains
AEL (Expression Language)Text-based server-side filters with automatic secondary index selectionAEL Reference
Expression bin opsCompute derived values server-side (selectFrom, upsertFrom)Expression Ops
List & Map CDT operationsFluent navigation and manipulation of nested collection data typesList Ops, Map Ops
Async & reactiveexecuteAsync() with CompletableFuture and Flow.Publisher (backpressure)Async Operations
TransactionsMulti-record ACID transactions with automatic retry on transient failuresTransactions
Behavior (policy config)Cascading, selector-based configuration — separate dev concerns from ops concernsBehavior
Object mappingRecordMapper and TypeSafeDataSet for mapping Java objects to/from recordsObject Mapping
Queries & scansDataset-level queries with pagination, sorting, partition targeting, and throttlingQueries
Background operationsServer-side bulk updates, deletes, and UDF execution across entire setsBackground Ops
UDFsRegister, execute, and chain Lua User Defined FunctionsUDFs
Secondary indexesCreate and drop indexes; AEL queries use them automaticallyIndexes
Info commandsTyped, structured access to cluster metadata (namespaces, sets, indexes)Info Commands
Exception hierarchyFine-grained unchecked exceptions with result codes for programmatic handlingExceptions

Building

mvn compile # Compile
mvn test# Run tests
mvn javadoc:javadoc # Generate Javadoc

Requirements

  • Java 21+ (Java 24+ recommended for improved virtual thread performance)
  • Maven 3.9.5+

About

Aerospike Java Client

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - aerospike/aerospike-client-java-sdk: Aerospike Java Client · GitHub
Skip to content

Repository files navigation

Aerospike Java SDK

Note

This is a developer preview, not yet ready for production use, but with future releases planned. We encourage feedback from the Aerospike developer community through GitHub issues.

A ground-up redesign of the Aerospike Java client — fluent, type-safe, and built for modern Java (21+).

Quick Start

importcom.aerospike.client.sdk.*;
importjava.util.List;
importjava.util.Map;
publicclassQuickStart {
publicstaticvoidmain(String[] args) {
// Connect to the clustertry (Clustercluster = newClusterDefinition("localhost", 3000)
.withNativeCredentials("admin", "password")
.connect()) {
Sessionsession = cluster.createSession(Behavior.DEFAULT);
DataSetusers = DataSet.of("test", "users");
// --- Insert some data ---session.upsert(users.id("alice"))
.bin("name").setTo("Alice")
.bin("age").setTo(30)
.bin("tags").setTo(List.of("admin", "active"))
.bin("scores").setTo(List.of(95, 87, 92, 78))
.bin("prefs").setTo(Map.of("theme", "dark", "lang", "en"))
.execute();
// --- Read it back ---Recordrecord = session.query(users.id("alice"))
.execute()
.getFirstRecord();
System.out.println(record.getString("name")); // AliceSystem.out.println(record.getLong("age")); // 30// --- Update a bin ---session.update(users.id("alice"))
.bin("age").setTo(31)
.execute();
// --- Append to a list ---session.upsert(users.id("alice"))
.bin("scores").listAppend(99)
.execute();
// --- Query a list range ---session.query(users.id("alice"))
.bin("scores").onListValueRange(90, 100).getValues()
.execute();
// --- Set a map entry ---session.upsert(users.id("alice"))
.bin("prefs").onMapKey("notifications").upsert(true)
.execute();
// --- Read a map key ---session.query(users.id("alice"))
.bin("prefs").onMapKey("theme").getValues()
.execute();
// --- Filter with AEL ---session.query(users)
.where("$.age > 25 and 'active' in $.tags")
.execute();
}
}
}

What's happening

  1. ConnectClusterDefinition configures the connection (hosts, credentials, TLS); calling .connect() returns a Cluster that manages node discovery and connection pooling. Cluster is Closeable — wrap it in try-with-resources.

  2. Session — A lightweight handle through which all operations flow. Create as many as you need with different Behavior profiles to vary timeouts, retries, and consistency settings without changing application code.

  3. Write verbsupsert, insert, update, replace, and replaceIfExists each enforce intent at the method level. No more runtime policy flags.

  4. Readssession.query(key) returns a RecordStream that works as an Iterator, a Java Stream, or a CompletableFuture.

  5. CDT operations — Bins containing Lists and Maps are manipulated through a fluent navigation chain: select elements (.onListValueRange(...), .onMapKey(...)), then choose an action (.getValues(), .remove(), .count()). See the List Operations and Map Operations references for every available operation.

  6. AEL filtering — The Aerospike Expression Language lets you write server-side filters as concise strings ("$.age > 25"). When a matching secondary index exists, the SDK selects it automatically. See the AEL Documentation for the full language reference.

Features

For comprehensive documentation with code examples for every feature, see the Key Features Guide.

FeatureDescriptionDetails
Fluent write verbsinsert, update, upsert, replace, replaceIfExists — intent is explicit at the method levelWrite Operations
Reads & RecordStreamUniversal RecordStream return type with Iterator, Stream, and CompletableFuture supportRead Operations, RecordStream
Heterogeneous batchingMix reads, writes, deletes, and UDFs across different keys in a single server round-tripBatch Chains
AEL (Expression Language)Text-based server-side filters with automatic secondary index selectionAEL Reference
Expression bin opsCompute derived values server-side (selectFrom, upsertFrom)Expression Ops
List & Map CDT operationsFluent navigation and manipulation of nested collection data typesList Ops, Map Ops
Async & reactiveexecuteAsync() with CompletableFuture and Flow.Publisher (backpressure)Async Operations
TransactionsMulti-record ACID transactions with automatic retry on transient failuresTransactions
Behavior (policy config)Cascading, selector-based configuration — separate dev concerns from ops concernsBehavior
Object mappingRecordMapper and TypeSafeDataSet for mapping Java objects to/from recordsObject Mapping
Queries & scansDataset-level queries with pagination, sorting, partition targeting, and throttlingQueries
Background operationsServer-side bulk updates, deletes, and UDF execution across entire setsBackground Ops
UDFsRegister, execute, and chain Lua User Defined FunctionsUDFs
Secondary indexesCreate and drop indexes; AEL queries use them automaticallyIndexes
Info commandsTyped, structured access to cluster metadata (namespaces, sets, indexes)Info Commands
Exception hierarchyFine-grained unchecked exceptions with result codes for programmatic handlingExceptions

Building

mvn compile # Compile
mvn test# Run tests
mvn javadoc:javadoc # Generate Javadoc

Requirements

  • Java 21+ (Java 24+ recommended for improved virtual thread performance)
  • Maven 3.9.5+

About

Aerospike Java Client

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages