etcd
is a key-value DB written in Go
. It has an HTTP API, which this R package wraps.
See the etcd Github repo for help on installing etcd
.
There are various ways to install it, and they depend on your operating sytsem.
You can install via homebrew
, install from source, and via Docker.
at the command line
etcd
how to start etcd may differ depending on your setup
Install etseed
install.packages("etseed")
Development version
install.packages("devtools") devtools::install_github("ropensci/etseed")
library("etseed")
First task when using this package is to initialize a client
with the etcd()
function. it's a wrapper around an R6 class.
(client <- etcd()) #> <etcd client> #> host: 127.0.0.1 #> port: 2379 #> api_version: v2 #> scheme: http #> allow redirect: TRUE
Default settings in etcd()
connect you to localhost
, and port 2379
,
using etcd API version 2, with an http
scheme.
client$version() #> $etcdserver #> [1] "3.0.7" #> #> $etcdcluster #> [1] "3.0.0"
client$create("/neighbor", dir = TRUE) #> $action #> [1] "set" #> #> $node #> $node$key #> [1] "/neighbor" #> #> $node$dir #> [1] TRUE #> #> $node$modifiedIndex #> [1] 14 #> #> $node$createdIndex #> [1] 14
client$create(key = "/mykey", value = "this is awesome") #> $action #> [1] "set" #> #> $node #> $node$key #> [1] "/mykey" #> #> $node$value #> [1] "this is awesome" #> #> $node$modifiedIndex #> [1] 16 #> #> $node$createdIndex #> [1] 16
Use ttl
parameter to make it dissappear after x
seconds
client$create(key = "/stuff", value = "tables", ttl = 5) #> $action #> [1] "set" #> #> $node #> $node$key #> [1] "/stuff" #> #> $node$value #> [1] "tables" #> #> $node$expiration #> [1] "2016-09-02T21:40:59.617130434Z" #> #> $node$ttl #> [1] 5 #> #> $node$modifiedIndex #> [1] 17 #> #> $node$createdIndex #> [1] 17
And the key will be gone after 5 seconds, see:
client$key("/stuff") #> Error in etcd_GET(sprintf("%s%s/%s/", etcdbase(), "keys", key), ...) : #> client error: (404) Not Found
Create a key
client$create(key = "/foo", value = "bar") #> $action #> [1] "set" #> #> $node #> $node$key #> [1] "/foo" #> #> $node$value #> [1] "bar" #> #> $node$modifiedIndex #> [1] 19 #> #> $node$createdIndex #> [1] 19
Then update the key
client$update(key = "/foo", value = "bar stool") #> $action #> [1] "set" #> #> $node #> $node$key #> [1] "/foo" #> #> $node$value #> [1] "bar stool" #> ...
client$create_inorder("/queue", "thing1") #> $action #> [1] "create" #> #> $node #> $node$key #> [1] "/queue/00000000000000000021" #> #> $node$value #> [1] "thing1" #> #> $node$modifiedIndex #> [1] 21 #> #> $node$createdIndex #> [1] 21
client$create_inorder("/queue", "thing2") #> $action #> [1] "create" #> #> $node #> $node$key #> [1] "/queue/00000000000000000022" #> #> $node$value #> [1] "thing2" #> #> $node$modifiedIndex #> [1] 22 #> #> $node$createdIndex #> [1] 22
client$create_inorder("/queue", "thing3") #> $action #> [1] "create" #> #> $node #> $node$key #> [1] "/queue/00000000000000000023" #> #> $node$value #> [1] "thing3" #> #> $node$modifiedIndex #> [1] 23 #> #> $node$createdIndex #> [1] 23
client$keys() #> $action #> [1] "get" #> #> $node #> $node$dir #> [1] TRUE #> #> $node$nodes #> $node$nodes[[1]] #> $node$nodes[[1]]$key ...
client$key("/mykey") #> $action #> [1] "get" #> #> $node #> $node$key #> [1] "/mykey" #> #> $node$value #> [1] "this is awesome" #> #> $node$modifiedIndex #> [1] 16 #> #> $node$createdIndex #> [1] 16
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.