This commit includes the ability to search for k nearest neighbors using
a NEARBY command. When the LIMIT keyword is included and the 'meters'
param is excluded, the knn algorithm will be used instead of the
standard overlap+haversine algorithm.
NEARBY fleet LIMIT 10 POINT 33.5 -115.8
This will find the 10 closest points to 33.5,-115.8.
closes#136, #130, and #138.
ping @tomquas, @joernroeder, and @m1ome
CLIENT LIST
CLIENT SETNAME name
CLIENT GETNAME
CLIENT KILL [ip:port] [ID client-id] [ADDR ip:port]
The CLIENT LIST command returns
One client connection per line (separated by LF)
Each line is composed of a succession of property=value
fields separated by a space character.
id: an unique 64-bit client ID
addr: address/port of the clien
age: total duration of the connection in seconds
idle: idle time of the connection in seconds
name: the name of the client
Suggested by @UriHendler, closes#139
Using the tile38-cli, the TTL command omitted the ttl value from the
json response.
For example:
127.0.0.1:9851> TTL my ufo
{"ok":true,"elapsed":"5.57µs"}
Is now fixed to show
127.0.0.1:9851> TTL my ufo
{"ok":true,"ttl":-1,"elapsed":"5.57µs"}
Where "ttl" is the remaining time before the object is is deleted.
The value -1 means that the object is available, but does not have
an expiration.
Thanks @phulst for finding this bug. closes#116
Added the `META name value` keyword to the SETHOOK command.
Allows for adding metadata to a webhook. For example:
SETHOOK myhook http://endpoint/ META m1 12 META m2 13 NEARBY ...
Would result in notification that contain the "meta" element, which is
represented like:
"meta":{"m1":"12","m2":"13"}
Thanks for the suggestion @amorskoy
closed#105
Can now get back more details about an object:
NEARBY people FENCE ROAM people * 5000 SCAN :*
For more information see #96
Thanks @amorskoy for suggesting feature in #93Closes#96
It's now possible to mask the fence notifications based on the
command. For example, if we only want "set" and "del" commands.
NEARBY fleet FENCE COMMANDS set,del POINT 33 -115 10000
Suggested by @amorskoy, closes#99
JSET key id path value [RAW]
JGET key id path [RAW]
JDEL key id path
Allows for working with JSON strings, for example:
JSET user 901 name Tom
JGET user 901
> '{"name":"Tom"}'
JSET user 901 name.first Tom
JSET user 901 name.last Anderson
> '{"name":{"first":"Tom","last":"Anderson"}'
JDEL user 901 name.last
> '{"name":{"first":"Tom"}'
All commands use the GJSON path syntax, for more information:
Setting JSON: https://github.com/tidwall/sjson
Getting JSON: https://github.com/tidwall/gjson
This addresses an issue #73 that @huangpeizhi discovered while using
Tile38 in production where AOFSHRINK sometimes corrupts the database
causing the server to not start the next time.
Removed map[string]interface{} for Feature type.
Replaced "encoding/json" with "tidwall/gjson" for parsing.
Removed ablility to serialize to binary. JSON only.