sss - Simple Set Server
sss is a non-blocking in memory set server.
It supports storing, retrieving and deleting sets as well as common set operations like intersections, unions, etc. It also has support for returning the counts of sets and operations on sets.
sss can be extended by plugins that are executed when various events happen on the server.
The sss Command
You launch sss by running the sss command. The command lets you tweak various aspects of the server. Run sss --help for more details.
sss plugins are subclasses of sss.plugin.Plugin. Subclasses should indicate when the plugin should run based on run_before and run_after lists of commands. The actual behavior of the plugin is defined in before_command and after_command methods.
See the SampleReadLogPlugin in sss/plugin.py for the basic structure of a plugin.
Other pluggable functionality may be added in the future if there is a need for it.
A BlockingClient implementation is included in sss/client.py. It supports the full protocol.
The sss Protocol
A request message is basically:
COMMAND args\r\n [additional data]
For commands that don't return a set or information about a set, the response message is OK <key_name>.
For commands that do return a set or some data about a set, the response message is <integer data_length><data>.
The content of any data sent to and from the server is encoded in JSON format.
sss is written in Python and uses the diesel asynchronous networking library.