MCPcopy Index your code
hub / github.com/aerospike/aerospike-client-go

github.com/aerospike/aerospike-client-go @v8.7.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v8.7.0 ↗ · + Follow
3,566 symbols 11,165 edges 344 files 1,811 documented · 51% 6 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Aerospike Go Client v8

Aerospike Client Go Godoc Tests

An Aerospike library for Go.

This library is compatible with Go 1.23+ and supports the following operating systems: Linux, Mac OS X (Windows builds are possible, but untested).

Up-to-date documentation is available in the Godoc.

You can refer to the test files for idiomatic use cases.

Please refer to CHANGELOG.md for release notes, or if you encounter breaking changes.

Usage

The following is a very simple example of CRUD operations in an Aerospike database.

package main

import (
  "fmt"

  aero "github.com/aerospike/aerospike-client-go/v8"
)

// This is only for this example.
// Please handle errors properly.
func panicOnError(err error) {
  if err != nil {
    panic(err)
  }
}

func main() {
  // define a client to connect to
  client, err := aero.NewClient("127.0.0.1", 3000)
  panicOnError(err)

  key, err := aero.NewKey("test", "aerospike", "key")
  panicOnError(err)

  // define some bins with data
  bins := aero.BinMap{
    "bin1": 42,
    "bin2": "An elephant is a mouse with an operating system",
    "bin3": []any{"Go", 2009},
  }

  // write the bins
  err = client.Put(nil, key, bins)
  panicOnError(err)

  // read it back!
  rec, err := client.Get(nil, key)
  panicOnError(err)

  // delete the key, and check if key exists
  existed, err := client.Delete(nil, key)
  panicOnError(err)
  fmt.Printf("Record existed before delete? %v\n", existed)
}

More examples illustrating the use of the API are located in the examples directory.

Details about the API are available in the docs directory.

Prerequisites

Go version v1.23+ is required.

To install the latest stable version of Go, visit http://golang.org/dl/

Aerospike Go client implements the wire protocol, and does not depend on the C client. It is goroutine friendly, and works asynchronously.

Supported operating systems:

  • Major Linux distributions (Ubuntu, Debian, Red Hat)
  • Mac OS X
  • Windows (untested)

Installation

  1. Install Go 1.21+ and setup your environment as Documented here.
  2. Get the client in your GOPATH : go get github.com/aerospike/aerospike-client-go/v8
  3. To update the client library: go get -u github.com/aerospike/aerospike-client-go/v8

Some Tips

  • To run a go program directly: go run <filename.go>
  • to build: go build -o <output> <filename.go>
  • example: go build -tags as_performance -o benchmark tools/benchmark/benchmark.go

Performance Tweaking

We are bending all efforts to improve the client's performance. In our reference benchmarks, Go client performs almost as good as the C client.

To read about performance variables, please refer to docs/performance.md

Tests

This library is packaged with a number of tests. Tests require Ginkgo and Gomega library.

Before running the tests, you need to update the dependencies:

$ go get .

To run all the test cases with race detection:

$ ginkgo -r -race

Examples

A variety of example applications are provided in the examples directory.

Tools

A variety of clones of original tools are provided in the tools directory. They show how to use more advanced features of the library to re-implement the same functionality in a more concise way.

Benchmarks

Benchmark utility is provided in the tools/benchmark directory. See the tools/benchmark/README.md for details.

API Documentation

A simple API documentation is available in the docs directory. The latest up-to-date docs can be found in Godoc.

Google App Engine

To build the library for App Engine, build it with the build tag app_engine. Aggregation functionality is not available in this build.

Reflection, and Object API

To make the library both flexible and fast, we had to integrate the reflection API (methods with [Get/Put/...]Object names) tightly in the library. In case you wanted to avoid mixing those API in your app inadvertently, you can use the build tag as_performance to remove those APIs from the build.

License

The Aerospike Go Client is made available under the terms of the Apache License, Version 2, as stated in the file LICENSE.

Individual files may be made available under their own specific license, all compatible with Apache License, Version 2. Please see individual files for details.

Extension points exported contracts — how you extend this code

ExpressionArgument (Interface)
ExpressionArgument is used for passing arguments to filter expressions. The acceptable arguments are: Value, ExpressionF [8 …
expression.go
Value (Interface)
Value interface is used to efficiently serialize objects into the wire protocol. [6 implementers]
value.go
T (Interface)
(no doc) [9 implementers]
bench_interface_allocs_test.go
BufferEx (Interface)
BufferEx is a specialized buffer interface for aerospike client. [4 implementers]
bytes_buffer.go
ConfigProvider (Interface)
ConfigProvider represents a configuration provider. [2 implementers]
config/dynconfig.go
BatchRecordIfc (Interface)
BatchRecordIfc is the interface type to encapsulate BatchRead, BatchWrite and BatchUDF commands. [1 implementers]
batch_record.go
Policy (Interface)
Policy Interface [1 implementers]
policy.go
Error (Interface)
Error is the internal error interface for the Aerospike client's errors. All the public API return this error type. This [1 …
error.go

Core symbols most depended-on inside this repo

Expect
called by 4105
peers_parser.go
Operate
called by 458
client.go
Get
called by 348
txn.go
PutBins
called by 286
client.go
Delete
called by 238
txn.go
GetObject
called by 219
value.go
String
called by 216
value.go
newError
called by 207
error.go

Shape

Method 1,836
Function 1,264
TypeAlias 234
Struct 214
Interface 18

Languages

Go100%

Modules by API surface

generics.go426 symbols
value.go162 symbols
command.go133 symbols
client.go124 symbols
expression.go110 symbols
cdt_list.go64 symbols
packer.go58 symbols
node.go58 symbols
cdt_map.go52 symbols
cluster.go45 symbols
txn.go44 symbols
error.go42 symbols

For agents

$ claude mcp add aerospike-client-go \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page