- Add support for
getdel
- Add support for
with
- Add support for
GET
argument toSET
command
- Add support for
psetex
- Allow
ping
to take argument - Raise
CommandError
onhmget
with empty list of fields
- Drop support for Ruby 2.4 and Ruby 2.5 since they are EOL
- Fix
expire
to to raise error on invalid integer
- Add support for
logger
option (#211) - Fix
zadd
to not perform conditional type conversion (#214) - Fix
hdel
to raise error when called with empty array (#215)
- Fix
hmset
exception (#206) - Fix
hmset
to accept hashes in addition to key/value pairs (#208) - Fix stream ID regex to support
(
(#209) - Allow
mget
to accept a block (#210)
- Ensure
ruby2_keywords
dependency isrequire
d at runtime
- Switch
ruby2_keywords
gem from development dependency to runtime dependency
- Fix missing
ruby2_keywords
gem - Allow passing string
offset
togetbit
(#203)
- Fix handling of keyword arguments on Ruby 3 (#199)
- Allow passing string
offset
tosetbit
(#200) - Add
connection
method (#201)
- Add block and count support to
xread
(#194)
- Add support for
xread
command (#190) - Fix
mget
to raise error when passing empty array (#191) - Fix
xadd
whenmaxlen
is zero (#192)
- Fix handling of blocks within
multi
blocks (#185) - Fix handling of multiple consecutive
?
characters in key pattern matching (#186) - Change
exists
to return an integer and addexists?
(#188)
- Raise error when
setex
called with negative timeout (#174) - Add support for
dump
/restore
between MockRedis instances (#176) - Fix warnings for ZSET methods on Ruby 2.7 (#177)
- Add support for returning time in pipelines (#179)
- Fix SET methods to correct set milliseconds with
px
(#180) - Add support for unsorted sets within
zinterstore
/zunionstore
(#182)
- Gracefully handle cursors larger than the collection size in scan commands (#171)
- Add
zpopmin
andzpopmax
commands (#172) - Fix
hmset
to support array arguments (#173) - Fix
hmset
to always treat keys as strings (#173) - Remove unnecessary dependency on
rake
gem
- Fix behavior of
time
to return array of two integers (#161) - Add support for
close
anddisconnect!
(#163) - Fix
set
to properly handle (and ignore) other options (#164) - Fix
srem
to allow array of integers as argument (#166) - Fix
hdel
to allow array as argument (#168)
- Add support for
count
parameter ofspop
- Fix
mget
andmset
to accept array as parameters - Fix pipelined array replies
- Fix nested pipelining
- Allow nested multi
- Require Redis gem 4.0.1 or newer
- Add support for stream commands on Redis 5
- Keep empty strings on type mismatch
- Improve performance of
set_expiration
- Fix
watch
to allow multiple keys - Add
unlink
alias fordel
- Drop support for Ruby 2.3 or older
- Require Ruby 2.2+
- Add support for
bitfield
command - Add support for
geoadd
,geopos
,geohash
, andgeodist
commands - Fix multi-nested pipeline not releasing lock issue
- Fix
hset
return value to return false when the field exists in the hash - Fix message on exception raised from hincrbyfloat to match Redis 4
- Fix
lpushx
/rpushx
to correctly accept an array as the value - Fix rename to allow
rename(k1, k1)
- Fix
zrange
behavior with negative stop argument
- Allow negative out-of-bounds start and stop in
zrange
- Flatten args list passed to
hmset
- Fix
pipelined
calls withinmulti
blocks
- Upgrade minimum
redis
gem version to 3.3.0+ - Add support for XX, NX and INCR parameters of
ZADD
- Drop support for Ruby 1.9.3/JRuby 1.7.x
- Fix ZREM to raise error when argument is an empty array
- Relax
rake
gem dependency to allow 11.x.x versions
- Add stub implementations for
script
/eval
/evalsha
commands - Add implementations for
SCAN
family (sscan
/hscan
/zscan
) family of commands
- Fix
zrange
/zrevrange
to return elements with equal values in lexicographic order
- Fix
sadd
to return integers when adding arrays
- Fix
zrangebyscore
to work with exclusive ranges on both ends of interval
- Fix
hmget
andmapped_hmget
to allow passing of an array of keys
- Add support for the
time
method
- Upgrade
redis
gem dependency to 3.2.x series - Map
HDEL
field to string when given as an array
- Fix bug where SETBIT command would not correctly unset a bit
- Fix bug where a key that expired would cause another key that expired later to prematurely expire
- Add support to set methods to take array as argument
- Evaluate futures at the end of
#multi
blocks - Add support for the SCAN command
- Add support for
[+/-]inf
values for min/max in ordered set commands
- Fix SMEMBERS command to not return frozen elements
- Fix bug where certain characters in keys were treated as regex characters rather than literals
- Add back support for legacy integer timeouts on blocking list commands
- Fix bug where SETBIT command would not correctly unset a bit
- Add support for the
connect
method - Check that
min
/max
parameters are floats inzrangebyscore
,zremrangebyscore
, andzrevrangebyscore
- Update blocking list commands to take
timeout
in an options hash for compatibility withredis-rb
>= 3.0.0
- RENAME command now keeps key expiration
- Fix bug where
del
would not raise error when given empty array - Add support for the BITCOUNT command
- Raise errors for empty arrays as arguments
- Update error messages to conform to Redis 2.8. This officially means
mock_redis
no longer supports Redis 2.6 or lower. All testing in TravisCI is now done against 2.8 - Update return value of TTL to return -2 if key doesn't exist
- Add support for the HINCRBYFLOAT command
- Add support for
count
parameter on SRANDMEMBER - Add support for the PTTL command
- Improve support for negative start indices in LRANGE
- Improve support for negative start indices in LTRIM
- Allow
del
to accept arrays of keys
- Add support for :nx, :xx, :ex, :px options for SET command
- Added futures support
- Added support for Ruby 2.0.0, dropped support for Ruby 1.8.7
- Changes for compatibility with JRuby
- Fix
#pipelined
to yield self
- Fixed
watch
to return OK when passed no block - Implemented
pexpire
,pexpireat
- Fixed
expire
to use millisecond precision
- Implemented
mapped_mget
,mapped_mset
,mapped_msetnx
- Fixed
rpoplpush
when therpop
is nil
- Avoid mutation of @data from external reference
- Fix sorted set (e.g.
zadd
) with multiple score/member pairs
- Fix
zrevrange
to return an empty array on invalid range - Fix
srandmember
spec on redis-rb 3.0.3 - Stringify keys in expiration-related commands
- Update INFO command for latest Redis 2.6 compatibility
- Treat symbols as strings for keys
- Add #reconnect method (no-op)
- Support for
connected?
,disconnect
(no-op) - Fix
*
inkeys
to support 0 or more
- Support default argument of
*
for keys - Allow
MockRedis
to take a TimeClass
- Support for
#sort
(ascending and descending only)
- Support exclusive ranges in
zcount
- List methods (
lindex
,lrange
,lset
, andltrim
) can take string indexes - Fix typo in shared example
zset
spec - Fix
lrange
to return[]
when start is too large - Update readme about spec suite compatibility
- Support
incrbyfloat
(new in Redis 2.6) - Fix specs to pass in Redis 2.6
- Deprecated spec suite on 2.4
- Support
location
as an alias toid
forSidekiq
's benefit
- Support
watch
sadd
is now Redis 2.4-compliant
- Support
MockRedis.connect
- Support
redis-rb
>= 3.0 - Support Redis::Distributed
- Support ruby 1.9.3 in spec suite
- Support subsecond timeouts
- Support
-inf
,+inf
in #zcount - Return array of results from pipelined calls
- Use
debugger
instead of the deprecatedruby-debug19
- Fix exception handling in transaction wrappers
- Fix rename error behaviour for nonexistant keys
- bugfixes: teach various methods to correctly handle non-string values
- Support
mapped_hmset
/mapped_hmget
- Support
pipelined
- Correctly handle out-of-range conditions for
zremrangebyrank
andzrange
- Fix off-by-one error in calculation of
ttl
- Support hash operator (
[]
/[]=
) as synonym ofget
/set
- Misc bugfixes
- Support passing a block to
#multi
.
- Fixes for 1.9.2; no functionality changes.
- Fix handling of -inf, +inf, and exclusive endpoints (e.g. "(3") in zrangebyscore, zrevrangebyscore, and zremrangebyscore. ("Fix" here means "write", as it's something that was completely forgotten the first time around.)
- Support
move(key, db)
to move keys between databases.
- Fix gem homepage.
Initial release.