Enabled TCP keepalive packets to determine if the connection is still
valid, and terminate if needed. It also helps with maintaining idle
connections.
Default to 300 seconds and can be changed by:
CONFIG SET keepalive 300
addresses #145: clients not being cleaned up properly
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.