A Ruby client for the RedisJSON module of the Redis Stack.
Add this line to your application's Gemfile:
gem 'redis-json', '~> 1.0'
And then execute:
$ bundle
Or you can install the gem on its own:
gem install redis-json
This gem builds on the redis-rb gem. It add a Redis#json
method, through which you can call the JSON-specific Redis commands:
redis = Redis.new
hash = {
number: 1,
string: 'example',
empty_object: {}
}
redis.json.set 'key', hash, path: '$' # => OK
Input values will be converted to JSON strings using JSON.generate
, and returned JSON strings will be parsed to Ruby objects using JSON.parse
. You can use, respectively, generate_options
and parse_options
to specify options that will be passed on to the JSON
methods:
r.json.get 'key'
# => {'number' => 10}
r.json.get 'key', parse_options: {symbolize_names: true}
# => {:number => 10}
The methods are defined to be as similar as possible to the respective RedisJSON commands. key
and value
parameters become positional arguments, while more "option-like" parameters become keyword arguments (for example, the NX
and XX
parameters of the JSON.SET
command become the nx:
and xx:
keyword arguments of the set
method). The exception to this rule is path
: to allow for the different combinations of default and variadic arguments, path
is a keyword argument for all methods except get
and mset
.
RedisJSON loosely follows Semantic Versioning, with a hard guarantee that breaking changes to the public API will always coincide with an increase to the MAJOR
number.
Version numbers are in three parts: MAJOR.MINOR.PATCH
.
- Breaking changes to the public API increment the
MAJOR
. There may also be changes that would otherwise increase theMINOR
or thePATCH
. - Additions, deprecations, and "big" non breaking changes to the public API increment the
MINOR
. There may also be changes that would otherwise increase thePATCH
. - Bug fixes and "small" non breaking changes to the public API increment the
PATCH
.
Notice that any feature deprecated by a minor release can be expected to be removed by the next major release.
Full list of changes in CHANGELOG.md
Bug reports and pull requests are welcome on GitHub at https://github.com/moku-io/redis-json.
The gem is available as open source under the terms of the MIT License.