ZSCAN is directly supported by jedis and can be emulated for lettuce via eval.
SRP and JRedis will throw UnsupportedOperationException.
Original pull request: #80.
HSCAN is directly supported by jedis and can be emulated for lettuce via eval.
SRP and JRedis will throw UnsupportedOperationException.
We have modified the ScanCursor implementation to take Collection instead of List.
Currently naming for scan commands is not consistent for scan, sscan and hscan. There’s a clean up task for those commands when done with all scan related commands.
Original pull request: #78.
Upgrading to latest jedis version 2.5.1. Added new conversion for Long to byte[] in JedisConverters to be able to convert long cursorIds to byte[].
Original pull request: #77.
We’ve added a customized SpringJUnit4Runner and TestRule that allow us to use a more relaxed strategy when dealing with @IfProfileValue. Basically we have added ‘+’ as sort of wildcard indicating tests should be executed for version X and all its successor.
This allows us to run test valid starting 2.6 for 2.8 as well, while those only valid for 2.8 are not executed against eg. redis 2.6.17.
Fixed compile error in ScanCursor with Java 6.
Orignal pull request: #76.
SSCAN command is natively supported by jedis and can be emulated for lettuce.
JRedis and SRP will throw UnsupportedOperationException.
sScan is available on RedisConneciton and RedisSetOperations returning basically a Cursor that allows iteration over the defined values for a given key.
Currently the jedis driver does not directly expose the binary version of sscan which leads to invalid results when using a non String compatible converter along with the RedisTemplate. We’ll change this as soon as a newer version of jedis is available.
Along the way loading behavior of ScanCursor has been fixed, preventing it from indicating next values available when there effectively are no more.
Orignal pull request: #76.
SCAN is currently only supported by jedis but can be emulated for
lettuce via eval.
Srp and JRedis will respond with UnsupportedOperationException.
We provide a Cursor implementation allowing to scroll through the
responses provided by the underlying connection. The cursor will fetch
additional results from redis server whenever its starting point has not
been reached and there are no more already loaded items available.
Only values returned by the last call to redis server are kept in memory
which allows scrolling through the entire collection without potentially
running into memory issues.
Original pull request: #71.
The introduced generic types prevent the DecoratingStringHashMapper from being useful as it can now only be created for mappers of the generic type which was not the original intention.
This breaks the retwis-j sample as well as it seems other implementations see: b0c0d23.
Original pull request: #73.
Upgrade to JUnit 4.11
Upgrade to JUnit 4.11 and remove use of a matcher in an internal
package in favour of the Hamcrest equivalent. To avoid a clash between
JUnit 4.11's Hamcrest dependency and the version of Hamcrest that's
bundled in mockito-all, use of mockito-all has been replaced with
mockito-core
Add the Spring IO plugin
Configure the Spring IO plugin such that it's only applied when the
build is run with -PplatformVersion=<version>. This platformVersion
property is used to determine the version of the Platform that will
be used when running the springIoCheck task. The plugin can be used
by running a build as follows:
./gradlew clean springIoCheck -PplatformVersion=1.0.0.BUILD-SNAPSHOT -PJDK7_HOME=… -PJDK8_HOME=…
This will test the project on JDK7 and JDK 8 using the dependencies
defined in the latest snapshot of Spring IO Platform 1.0.0.
Address Java 6 compilation problem
The JUnit and Hamcrest upgrades caused a compilation error on Java 6
due to a bug in the compiler’s handling of generics. This commit adds
more type information to help to guide the compiler around the problem.
Additionally, deprecation warnings caused by the JUnit and Hamcrest
upgrades have also been addressed.
Original pull request: #72.
Redis connections have been left open when calling RedisTemplate.execute as the connection might have been bound to a thread, released but never been unbound. We now only bind and unbind connections in case of enabled transaction support, while just getting and releasing it for all other purposes.
Original pull request: #69.
Moved the = line below the additional informations to make sure we find the right spot to add additional changelog entries when automating the release preparations.
If running in transaction mode we now do a rudimentary check if the provided number of arguments matches the ones defined for the RedisCommand to execute.
If the command passes this first check and causes an error on redis server one has to check results for Command.getOutput().hasError().
Original Pull Request: #66.
RedisTemplate now supports enabling of transaction support, which is disabled by default.
In case of enabled transaction support the RedisConnections will be bound to the current thread during ongoing outer transactions. We call MULTI at the beginning and depending on transaction state EXEC or DISCARD at its end.
To support read operations during the transaction we wrap a proxy around the bound connection piping read operations to a new (non thread bound) connection obtained by the underlying RedisConnectionFactory.
Transaction support is available for jedis, lettuce and srp, while had to be skipped for jredis due to the lack of support for MULTI.
Original pull request: #64.
We now return null if DefaultValueOperations#append() was applied to a non-existing list and thus returned null. Previously a NPE was thrown in case of pipelining or/and multi/exec calls.
Original pull request: #48.
'zCard' has been introduced in addition to 'size' as it feels more natural for people using redis. 'size' in 'ZSetOperations' / 'BoundZsetOperations' now delegate to 'zCard'.
Original Pull Request: #55
'SLAVEOF' and 'SLAVEOF NO ONE' are available via 'RedisConnection' and 'RedisOperations' for 'jedis', 'jredis', 'lettuce' and 'srp'.
Original Pull Request: #57
SetBit now returns the original bit value stored at the offset. The result will also be added in pipeline and transaction mode which means that the final result collection may now contain more entries than in prior versions.
Original Pull Request: #58
'RedisConnection' and 'RedisTemplate' have been extended by 'getClientList' retrieving client informations from redis. 'RedisClientInfo' provides access via specified getters as well as an more general approach directly using the keys (like 'qubuf').
The operation is available for 'jedis', 'lettuce' and 'srp'.
Original Pull Request: #53
Support for getting client connection name has been added for 'jedis', 'jredis' and 'srp' drivers.
Using 'jredis' will throw 'UnsupportedOperationException'.
Original Pull Request: #51
Killing a client connection can be done via 'RedisConnection' and 'RedisOperations' using 'jedis', 'lettuce' and 'srp'.
We use dedicated parameters for host and port building up the redis format (host:port) for connection identification.
Original Pull Request: #56
Workaround Jedis issue https://github.com/xetorthio/jedis/pull/575.
We now delegate calls to expire(...) to pExpireAt(...) in case the seconds parameter is > than Integer.MAX_VALUE.
We query the server time to compute the new expiration date.
Original pull request: #52.
'JRedisPool' and 'DefaultLettucePool' have been migrated to 'commons-pool2'.
'PoolConfig' has been deprecated, and will be removed in '1.4', as all required operations are available via 'GenericObjectPoolConfig'.
Along the way a minor bug within 'LettuceConnection' has been resolved, which prevented 'RedisAsyncConnections' from being properly closed/returned to pool.
Original Pull Request: #50
Created and added 'ShutdownOptions' to 'RedisServerCommands'. The full implementation is available for 'lettuce' and 'srp'.
When using 'jedis' the command is emulated using lua script via 'eval'.
For 'jredis' the method is not available and will throw 'UnsupportedOperationException'.
Original Pull Request: #47
Support for 'pSetEx' has been added for 'jedis' & 'srp'.
For 'lettuce' the command is emulated using 'eval'.
There is no support for 'pSetEx' when using 'jredis'.
'DefaultValueOperations.set' used with 'TimeUnit.MILLISECONDS' will fallback to 'setEx' in case 'pSetEx' is not supported by the driver in use.
Original pull request: #46.
'LettuceConnection' used 'ByteArrayOutput' as default for execute which did not fully read all values that might be included in the response.
To overcome this issue 'TypeHints' have been added which map a given 'CommandType' to the most recent 'CommandOutput'. As not all commands could be mapped that way due to the result depending on input parameters in some cases, it might be required to manually provide the type hint when calling execute.
Additional tests have been added to assert 'execute' works properly for 'jedis', 'jredis' and 'srp'.
Original Pull Request: #49
We now retain the potentially already configured caches during the initialisation of the RedisCacheManager bean. Previously we discarded the already configured caches which was an undesired side-effect.
Original pull request: #45.