---
title: "Overview: Aerospike Go client"
description: "Overview of the Aerospike Go client: CRUD, queries, batch operations, collection data types, UDFs, metrics, and client policies."
---

# Overview: Aerospike Go client

> For the complete documentation index see: [llms.txt](https://aerospike.com/docs/llms.txt)
> 
> All documentation pages available in markdown.

The Aerospike Go client is a production-ready library for building high-performance applications on Aerospike Database. It implements Aerospike network protocols in pure Go, is goroutine friendly, and exposes the full database feature set: single-record create, read, update, and delete (CRUD), atomic multi-bin operations, batch reads and writes, indexed queries, collection data types (CDTs), user-defined functions (UDFs), and concurrent access patterns using Go’s native concurrency primitives.

Install with `go get github.com/aerospike/aerospike-client-go/v8`. See [Installation](https://aerospike.com/docs/develop/client/go/install) for supported Go and OS versions.

## Feature highlights

Record operations:

-   CRUD and atomic updates: Create, read, update, and delete records, plus compound [bin operations](https://aerospike.com/docs/develop/client/go/usage/atomic/multi) in a single round trip.
-   Expressions: Attach [filter expressions](https://aerospike.com/docs/develop/client/go/usage/atomic/expressions) to reads and writes for conditional execution.
-   Document model: Store and query JSON-like documents using [Map bins](https://aerospike.com/docs/develop/client/go/usage/document/create) and [secondary indexes on nested values](https://aerospike.com/docs/develop/client/go/usage/document/sindex).

Query and scan:

-   Query basics: Learn query concepts and patterns in [Query basics](https://aerospike.com/docs/develop/client/go/usage/multi/queries/basic).
-   Primary-index queries: Iterate records in a namespace or set with [partition-aware queries](https://aerospike.com/docs/develop/client/go/usage/multi/queries/primary).
-   Secondary-index queries: Filter on indexed bin values with [secondary queries](https://aerospike.com/docs/develop/client/go/usage/multi/queries/secondary).
-   Background queries: Run long-running queries asynchronously with [background query jobs](https://aerospike.com/docs/develop/client/go/usage/multi/queries/background).

Multi-record operations:

-   Batch protocol: Combine reads, writes, deletes, and exists checks in [batch operations](https://aerospike.com/docs/develop/client/go/usage/multi/batch).
-   Transactions: Group create, update, read, and delete steps in [transactions](https://aerospike.com/docs/develop/client/go/usage/multi/transactions) (Go client 8.0.0 and later, Database 8.0.0 and later, [strong-consistency namespace](https://aerospike.com/docs/database/manage/namespace/consistency)).

Collection data types:

-   Lists and maps: Create, read, and modify [List](https://aerospike.com/docs/develop/client/go/usage/cdt/list/create) and [Map](https://aerospike.com/docs/develop/client/go/usage/cdt/map/create) bins with atomic server-side operations.
-   Nested CDTs: Work with deeply nested structures using [CDT context](https://aerospike.com/docs/develop/client/go/usage/cdt/nested/context) and nested list and map operations.

Server-side logic:

-   UDFs: Register, manage, and [apply user-defined functions](https://aerospike.com/docs/develop/client/go/usage/udf/manage) on the server, including [aggregations](https://aerospike.com/docs/develop/client/go/usage/udf/aggregations).

Operations and observability:

-   Policies: Tune timeouts, retries, consistency, and write behavior with [client policies](https://aerospike.com/docs/develop/client/go/policies).
-   Metrics: Collect cluster connection stats and extended command latency metrics. See [Monitor performance](https://aerospike.com/docs/develop/client/go/metrics).
-   Error details: Read server subcodes, messages, and expression traces from `*as.AerospikeError` when Aerospike Database 8.2.0 and later returns them (Go client 8.9.0 and later). See [Error handling](https://aerospike.com/docs/develop/client/go/error-handling#server-error-details).
-   Asynchronous patterns: Run concurrent reads and writes with goroutines and channels. See the [Asynchronous API](https://aerospike.com/docs/develop/client/go/async) guide.
-   Security: Connect with username/password authentication, TLS, and [mutual TLS (mTLS)](https://aerospike.com/docs/develop/client/go/mtls). See [Connecting](https://aerospike.com/docs/develop/client/go/connect).

Data types:

-   Full support for Aerospike [scalar and collection data types](https://aerospike.com/docs/develop/client/go/data-types), including Lists, Maps, HyperLogLog, and geospatial bins.
-   String operations: Search, transform, and normalize text in String bins on the server with [String operations](https://aerospike.com/docs/develop/client/go/usage/string) (Go client 8.9.0 and later, Aerospike Database 8.2.0 and later).

See the [release notes](https://github.com/aerospike/aerospike-client-go/releases) for version history.

## Ready to get started?

Installation

Install the client with `go get` and verify your Go and Aerospike Database versions.

[Installation →](https://aerospike.com/docs/develop/client/go/install)

Policies

Configure timeouts, retries, consistency modes, and write behavior for your workload.

[Policies →](https://aerospike.com/docs/develop/client/go/policies)

Error handling

Handle client errors and interpret server result codes in your application.

[Error handling →](https://aerospike.com/docs/develop/client/go/error-handling)

Usage examples

Start with single-record CRUD examples.

[Usage examples →](https://aerospike.com/docs/develop/client/go/usage/atomic/create)