Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 03-May-2022 | - | ||||
.travis/ | H | 09-Nov-2020 | - | |||
docs/ | H | 09-Nov-2020 | - | |||
examples/ | H | 09-Nov-2020 | - | |||
internal/ | H | 09-Nov-2020 | - | |||
logger/ | H | 09-Nov-2020 | - | |||
performance/ | H | 09-Nov-2020 | - | |||
pkg/ | H | 09-Nov-2020 | - | |||
test/resources/ | H | 09-Nov-2020 | - | |||
tools/ | H | 09-Nov-2020 | - | |||
types/ | H | 09-Nov-2020 | - | |||
utils/ | H | 09-Nov-2020 | - | |||
.build.yml | H A D | 09-Nov-2020 | 544 | |||
.gitignore | H A D | 09-Nov-2020 | 113 | |||
.travis.yml | H A D | 09-Nov-2020 | 2.9 KiB | |||
CHANGELOG.md | H A D | 09-Nov-2020 | 50.4 KiB | |||
LICENSE | H A D | 09-Nov-2020 | 11.1 KiB | |||
README.md | H A D | 09-Nov-2020 | 6.3 KiB | |||
admin_command.go | H A D | 09-Nov-2020 | 17.7 KiB | |||
admin_policy.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
aerospike.go | H A D | 09-Nov-2020 | 702 | |||
aerospike_bench_reflect_test.go | H A D | 09-Nov-2020 | 1.9 KiB | |||
aerospike_bench_test.go | H A D | 09-Nov-2020 | 2.7 KiB | |||
aerospike_suite_test.go | H A D | 09-Nov-2020 | 3.9 KiB | |||
anonymous_fields_test.go | H A D | 09-Nov-2020 | 3.2 KiB | |||
auth_mode.go | H A D | 09-Nov-2020 | 1.1 KiB | |||
batch_command.go | H A D | 09-Nov-2020 | 2.9 KiB | |||
batch_command_exists.go | H A D | 09-Nov-2020 | 3.6 KiB | |||
batch_command_get.go | H A D | 09-Nov-2020 | 6.3 KiB | |||
batch_command_get_reflect.go | H A D | 09-Nov-2020 | 2.4 KiB | |||
batch_command_reflect.go | H A D | 09-Nov-2020 | 2.6 KiB | |||
batch_index_command_get.go | H A D | 09-Nov-2020 | 1.6 KiB | |||
batch_node.go | H A D | 09-Nov-2020 | 5.4 KiB | |||
batch_policy.go | H A D | 09-Nov-2020 | 3.7 KiB | |||
batch_read.go | H A D | 09-Nov-2020 | 1.9 KiB | |||
bench_batchget_test.go | H A D | 09-Nov-2020 | 4.1 KiB | |||
bench_cdt_list_test.go | H A D | 09-Nov-2020 | 2.6 KiB | |||
bench_packing_test.go | H A D | 09-Nov-2020 | 5.9 KiB | |||
bench_rand_gen_test.go | H A D | 09-Nov-2020 | 1.4 KiB | |||
bench_read_command_test.go | H A D | 09-Nov-2020 | 3.9 KiB | |||
bench_values_test.go | H A D | 09-Nov-2020 | 3.1 KiB | |||
bench_write_command_test.go | H A D | 09-Nov-2020 | 3.9 KiB | |||
bin.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
bit_overflow_action.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
bit_policy.go | H A D | 09-Nov-2020 | 852 | |||
bit_resize_flags.go | H A D | 09-Nov-2020 | 1.1 KiB | |||
bit_write_flags.go | H A D | 09-Nov-2020 | 1.4 KiB | |||
buffered_connection.go | H A D | 09-Nov-2020 | 3.5 KiB | |||
bytes_buffer.go | H A D | 09-Nov-2020 | 1.1 KiB | |||
cdt.go | H A D | 09-Nov-2020 | 4.7 KiB | |||
cdt_bitwise.go | H A D | 09-Nov-2020 | 17.3 KiB | |||
cdt_bitwise_test.go | H A D | 09-Nov-2020 | 29.1 KiB | |||
cdt_context.go | H A D | 09-Nov-2020 | 2.9 KiB | |||
cdt_list.go | H A D | 09-Nov-2020 | 37.4 KiB | |||
cdt_list_test.go | H A D | 09-Nov-2020 | 32.5 KiB | |||
cdt_map.go | H A D | 09-Nov-2020 | 31.1 KiB | |||
cdt_map_test.go | H A D | 09-Nov-2020 | 30.3 KiB | |||
client.go | H A D | 09-Nov-2020 | 47.3 KiB | |||
client_appengine_exclusions.go | H A D | 09-Nov-2020 | 4.3 KiB | |||
client_object_test.go | H A D | 09-Nov-2020 | 36.2 KiB | |||
client_policy.go | H A D | 09-Nov-2020 | 7.8 KiB | |||
client_reflect.go | H A D | 09-Nov-2020 | 10.2 KiB | |||
client_reflect_test.go | H A D | 09-Nov-2020 | 12.4 KiB | |||
client_test.go | H A D | 09-Nov-2020 | 48.8 KiB | |||
cluster.go | H A D | 09-Nov-2020 | 26.4 KiB | |||
command.go | H A D | 09-Nov-2020 | 50.5 KiB | |||
commit_policy.go | H A D | 09-Nov-2020 | 1.1 KiB | |||
compat_after_go1.8.go | H A D | 09-Nov-2020 | 725 | |||
compat_before_go1.8.go | H A D | 09-Nov-2020 | 1.5 KiB | |||
complex_index_test.go | H A D | 09-Nov-2020 | 3.1 KiB | |||
complex_query_test.go | H A D | 09-Nov-2020 | 6.1 KiB | |||
connection.go | H A D | 09-Nov-2020 | 11.2 KiB | |||
connection_heap.go | H A D | 09-Nov-2020 | 6 KiB | |||
connection_heap_test.go | H A D | 09-Nov-2020 | 2.5 KiB | |||
delete_command.go | H A D | 09-Nov-2020 | 2.6 KiB | |||
example_client_test.go | H A D | 09-Nov-2020 | 2.2 KiB | |||
example_listiter_int_test.go | H A D | 09-Nov-2020 | 1.5 KiB | |||
example_listiter_string_test.go | H A D | 09-Nov-2020 | 1.6 KiB | |||
example_listiter_time_test.go | H A D | 09-Nov-2020 | 1.7 KiB | |||
example_mapiter_test.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
execute_command.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
execute_task.go | H A D | 09-Nov-2020 | 2.8 KiB | |||
exists_command.go | H A D | 09-Nov-2020 | 2.5 KiB | |||
field_type.go | H A D | 09-Nov-2020 | 1.6 KiB | |||
filter.go | H A D | 09-Nov-2020 | 6.3 KiB | |||
generation_policy.go | H A D | 09-Nov-2020 | 1.1 KiB | |||
generics.go | H A D | 09-Nov-2020 | 64.4 KiB | |||
geo_test.go | H A D | 09-Nov-2020 | 6.3 KiB | |||
helper_test.go | H A D | 09-Nov-2020 | 1.1 KiB | |||
hll_operation.go | H A D | 09-Nov-2020 | 8.8 KiB | |||
hll_operation_test.go | H A D | 09-Nov-2020 | 26.3 KiB | |||
hll_policy.go | H A D | 09-Nov-2020 | 1,013 | |||
hll_write_flags.go | H A D | 09-Nov-2020 | 1.5 KiB | |||
host.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
index_collection_type.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
index_test.go | H A D | 09-Nov-2020 | 3.4 KiB | |||
index_type.go | H A D | 09-Nov-2020 | 937 | |||
info.go | H A D | 09-Nov-2020 | 3.1 KiB | |||
info_policy.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
key.go | H A D | 09-Nov-2020 | 4.7 KiB | |||
key_bench_test.go | H A D | 09-Nov-2020 | 3.8 KiB | |||
key_helper.go | H A D | 09-Nov-2020 | 3.5 KiB | |||
key_reflect_test.go | H A D | 09-Nov-2020 | 1.4 KiB | |||
key_test.go | H A D | 09-Nov-2020 | 5.7 KiB | |||
language.go | H A D | 09-Nov-2020 | 762 | |||
load_test.go | H A D | 09-Nov-2020 | 2.3 KiB | |||
login_command.go | H A D | 09-Nov-2020 | 6.2 KiB | |||
marshal.go | H A D | 09-Nov-2020 | 9.2 KiB | |||
multi_command.go | H A D | 09-Nov-2020 | 9.5 KiB | |||
multi_policy.go | H A D | 09-Nov-2020 | 2.2 KiB | |||
node.go | H A D | 09-Nov-2020 | 25.9 KiB | |||
node_error.go | H A D | 09-Nov-2020 | 2 KiB | |||
node_stats.go | H A D | 09-Nov-2020 | 4.1 KiB | |||
node_test.go | H A D | 09-Nov-2020 | 8.6 KiB | |||
node_validator.go | H A D | 09-Nov-2020 | 8.8 KiB | |||
operate_command.go | H A D | 09-Nov-2020 | 2.3 KiB | |||
operation.go | H A D | 09-Nov-2020 | 4.2 KiB | |||
packer.go | H A D | 09-Nov-2020 | 15 KiB | |||
packer_reflect.go | H A D | 09-Nov-2020 | 2.6 KiB | |||
packing_test.go | H A D | 09-Nov-2020 | 12.1 KiB | |||
partition.go | H A D | 09-Nov-2020 | 7.2 KiB | |||
partition_parser.go | H A D | 09-Nov-2020 | 7.2 KiB | |||
partitions.go | H A D | 09-Nov-2020 | 5.4 KiB | |||
peers.go | H A D | 09-Nov-2020 | 2.2 KiB | |||
peers_parser.go | H A D | 09-Nov-2020 | 5 KiB | |||
policy.go | H A D | 09-Nov-2020 | 7.3 KiB | |||
predexp.go | H A D | 09-Nov-2020 | 16.9 KiB | |||
predexp_ops_test.go | H A D | 09-Nov-2020 | 11.8 KiB | |||
predexp_test.go | H A D | 09-Nov-2020 | 15.7 KiB | |||
priority.go | H A D | 09-Nov-2020 | 1.1 KiB | |||
privilege.go | H A D | 09-Nov-2020 | 3 KiB | |||
query_aggregate_command.go | H A D | 09-Nov-2020 | 4.6 KiB | |||
query_aggregate_test.go | H A D | 09-Nov-2020 | 3.1 KiB | |||
query_command.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
query_objects_command.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
query_policy.go | H A D | 09-Nov-2020 | 916 | |||
query_record_command.go | H A D | 09-Nov-2020 | 1 KiB | |||
query_test.go | H A D | 09-Nov-2020 | 11.4 KiB | |||
query_validate.go | H A D | 09-Nov-2020 | 1.7 KiB | |||
random_operation_test.go | H A D | 09-Nov-2020 | 3.3 KiB | |||
read_command.go | H A D | 09-Nov-2020 | 7.4 KiB | |||
read_command_reflect.go | H A D | 09-Nov-2020 | 11.9 KiB | |||
read_header_command.go | H A D | 09-Nov-2020 | 2.7 KiB | |||
read_mode_ap.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
read_mode_sc.go | H A D | 09-Nov-2020 | 1.6 KiB | |||
record.go | H A D | 09-Nov-2020 | 1.6 KiB | |||
record_exists_action.go | H A D | 09-Nov-2020 | 1.5 KiB | |||
recordset.go | H A D | 09-Nov-2020 | 6 KiB | |||
recordset_test.go | H A D | 09-Nov-2020 | 1.1 KiB | |||
replica_policy.go | H A D | 09-Nov-2020 | 1.7 KiB | |||
role.go | H A D | 09-Nov-2020 | 1.6 KiB | |||
scan_command.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
scan_objects_command.go | H A D | 09-Nov-2020 | 1.9 KiB | |||
scan_policy.go | H A D | 09-Nov-2020 | 1.2 KiB | |||
scan_test.go | H A D | 09-Nov-2020 | 6.2 KiB | |||
security_test.go | H A D | 09-Nov-2020 | 8.7 KiB | |||
server_command.go | H A D | 09-Nov-2020 | 2.6 KiB | |||
single_command.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
statement.go | H A D | 09-Nov-2020 | 4.2 KiB | |||
task.go | H A D | 09-Nov-2020 | 2 KiB | |||
task_drop_index.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
task_index.go | H A D | 09-Nov-2020 | 2.1 KiB | |||
task_register.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
task_remove.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
test_utils_test.go | H A D | 09-Nov-2020 | 2.9 KiB | |||
touch_command.go | H A D | 09-Nov-2020 | 3.6 KiB | |||
truncate_test.go | H A D | 09-Nov-2020 | 3.1 KiB | |||
udf.go | H A D | 09-Nov-2020 | 211 | |||
udf_test.go | H A D | 09-Nov-2020 | 13.3 KiB | |||
unpacker.go | H A D | 09-Nov-2020 | 9.4 KiB | |||
user_roles.go | H A D | 09-Nov-2020 | 868 | |||
value.go | H A D | 09-Nov-2020 | 31.6 KiB | |||
value_helpers.go | H A D | 09-Nov-2020 | 1.8 KiB | |||
value_reflect.go | H A D | 09-Nov-2020 | 1.5 KiB | |||
value_test.go | H A D | 09-Nov-2020 | 5.6 KiB | |||
write_command.go | H A D | 09-Nov-2020 | 2.7 KiB | |||
write_policy.go | H A D | 09-Nov-2020 | 4 KiB |
README.md
1# Aerospike Go Client 2 3[![Aerospike Client Go](https://goreportcard.com/badge/github.com/aerospike/aerospike-client-go)](https://goreportcard.com/report/github.com/aerospike/aerospike-client-go) 4[![Build Status](https://travis-ci.org/aerospike/aerospike-client-go.svg?branch=master)](https://travis-ci.org/aerospike/aerospike-client-go) 5[![Godoc](https://godoc.org/github.com/aerospike/aerospike-client-go?status.svg)](https://pkg.go.dev/github.com/aerospike/aerospike-client-go) 6 7An Aerospike library for Go. 8 9This library is compatible with Go 1.9+ and supports the following operating systems: Linux, Mac OS X (Windows builds are possible, but untested). 10 11Up-to-date documentation is available in the [![Godoc](https://godoc.org/github.com/aerospike/aerospike-client-go?status.svg)](https://pkg.go.dev/github.com/aerospike/aerospike-client-go). 12 13You can refer to the test files for idiomatic use cases. 14 15Please refer to [`CHANGELOG.md`](CHANGELOG.md) for release notes, or if you encounter breaking changes. 16 17## Notice: 18 19We have released the Go Client v2, with some breaking API changes. Most changes are minor, and can be fixed with relative ease. 20 21The only major issue is that the behavior of the client when a key does not exist has changed. 22 23It used to return no error, but a `nil` `Record.Bins`. Now it returns `ErrKeyNotFound` error. 24 25This is a significant changes, and you should search your code for all instances of `Bins == nil` and adapt the code accordingly. 26 27Please refer to the [`CHANGELOG.md`](CHANGELOG.md) for details. 28 29- [Usage](#Usage) 30- [Prerequisites](#Prerequisites) 31- [Installation](#Installation) 32- [Tweaking Performance](#Performance) 33- [Benchmarks](#Benchmarks) 34- [API Documentation](#API-Documentation) 35- [Google App Engine](#App-Engine) 36- [Reflection](#Reflection) 37- [Tests](#Tests) 38- [Examples](#Examples) 39 - [Tools](#Tools) 40 41 42## Usage: 43 44The following is a very simple example of CRUD operations in an Aerospike database. 45 46```go 47package main 48 49import ( 50 "fmt" 51 52 aero "github.com/aerospike/aerospike-client-go" 53) 54 55// This is only for this example. 56// Please handle errors properly. 57func panicOnError(err error) { 58 if err != nil { 59 panic(err) 60 } 61} 62 63func main() { 64 // define a client to connect to 65 client, err := aero.NewClient("127.0.0.1", 3000) 66 panicOnError(err) 67 68 key, err := aero.NewKey("test", "aerospike", "key") 69 panicOnError(err) 70 71 // define some bins with data 72 bins := aero.BinMap{ 73 "bin1": 42, 74 "bin2": "An elephant is a mouse with an operating system", 75 "bin3": []interface{}{"Go", 2009}, 76 } 77 78 // write the bins 79 err = client.Put(nil, key, bins) 80 panicOnError(err) 81 82 // read it back! 83 rec, err := client.Get(nil, key) 84 panicOnError(err) 85 86 // delete the key, and check if key exists 87 existed, err := client.Delete(nil, key) 88 panicOnError(err) 89 fmt.Printf("Record existed before delete? %v\n", existed) 90} 91``` 92 93More examples illustrating the use of the API are located in the 94[`examples`](examples) directory. 95 96Details about the API are available in the [`docs`](docs) directory. 97 98<a name="Prerequisites"></a> 99## Prerequisites 100 101[Go](http://golang.org) version v1.12+ is required. 102 103To install the latest stable version of Go, visit 104[http://golang.org/dl/](http://golang.org/dl/) 105 106 107Aerospike Go client implements the wire protocol, and does not depend on the C client. 108It is goroutine friendly, and works asynchronously. 109 110Supported operating systems: 111 112- Major Linux distributions (Ubuntu, Debian, Red Hat) 113- Mac OS X 114- Windows (untested) 115 116<a name="Installation"></a> 117## Installation: 118 1191. Install Go 1.9+ and setup your environment as [Documented](http://golang.org/doc/code.html#GOPATH) here. 1202. Get the client in your ```GOPATH``` : ```go get github.com/aerospike/aerospike-client-go``` 121 * To update the client library: ```go get -u github.com/aerospike/aerospike-client-go``` 122 123Using [gopkg.in](https://gopkg.in/) is also supported: `go get -u gopkg.in/aerospike/aerospike-client-go.v1` 124 125### Some Hints: 126 127 * To run a go program directly: ```go run <filename.go>``` 128 * to build: ```go build -o <output> <filename.go>``` 129 * example: ```go build -o benchmark tools/benchmark/benchmark.go``` 130 131<a name="Performance"></a> 132## Performance Tweaking 133 134We are bending all efforts to improve the client's performance. In our reference benchmarks, Go client performs almost as good as the C client. 135 136To read about performance variables, please refer to [`docs/performance.md`](docs/performance.md) 137 138<a name="Tests"></a> 139## Tests 140 141This library is packaged with a number of tests. Tests require Ginkgo and Gomega library. 142 143Before running the tests, you need to update the dependencies: 144 145 $ go get . 146 147To run all the test cases with race detection: 148 149 $ ginkgo -r -race 150 151 152<a name="Examples"></a> 153## Examples 154 155A variety of example applications are provided in the [`examples`](examples) directory. 156 157<a name="Tools"></a> 158### Tools 159 160A variety of clones of original tools are provided in the [`tools`](tools) directory. 161They show how to use more advanced features of the library to re-implement the same functionality in a more concise way. 162 163<a name="Benchmarks"></a> 164## Benchmarks 165 166Benchmark utility is provided in the [`tools/benchmark`](tools/benchmark) directory. 167See the [`tools/benchmark/README.md`](tools/benchmark/README.md) for details. 168 169<a name="API-Documentation"></a> 170## API Documentation 171 172A simple API documentation is available in the [`docs`](docs/README.md) directory. The latest up-to-date docs can be found in [![Godoc](https://godoc.org/github.com/aerospike/aerospike-client-go?status.svg)](https://pkg.go.dev/github.com/aerospike/aerospike-client-go). 173 174<a name="App-Engine"></a> 175## Google App Engine 176 177To build the library for App Engine, build it with the build tag `app_engine`. Aggregation functionality is not available in this build. 178 179 180<a name="Reflection"></a> 181## Reflection, and Object API 182 183To 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. 184 185 186## License 187 188The Aerospike Go Client is made available under the terms of the Apache License, Version 2, as stated in the file `LICENSE`. 189 190Individual files may be made available under their own specific license, 191all compatible with Apache License, Version 2. Please see individual files for details. 192 193