SPRING DATA REDIS CHANGELOG --------------------------- http://projects.spring.io/spring-data-redis/ Commit changelog: http://github.com/spring-projects/spring-data-redis/tree/v[version] Issues changelog: http://jira.springsource.org/secure/ReleaseNote.jspa?projectId=10604 =========================== Changes in version 1.3.0.RELEASE (2014-05-20) --------------------------------------------- * DATAREDIS-303 - Upgrade to Spring 3.2.9. * DATAREDIS-302 - DecoratingStringHashMapper breaks RetwisJ sample. * DATAREDIS-301 - Release 1.3 GA. * DATAREDIS-300 - RedisConnectionUtils: inconsistency with connection open() and close(). * DATAREDIS-299 - Assert compatibility with Spring IO. Changes in version 1.3.0.RC1 (2014-05-02) ----------------------------------------- * DATAREDIS-298 - Unneeded jcl-over-slf4j dependency. * DATAREDIS-297 - Release 1.3 RC1. * DATAREDIS-296 - Upgrade jedis to recent version. * DATAREDIS-293 - JedisConnection does not allow bulk adding multiple elements with the same score to a sorted set. * DATAREDIS-226 - Individual syntax errors on Lettuce transactions are not reported. * DATAREDIS-73 - add TransactionAware* Driver interfaces. Changes in version 1.3.0.M1 (2014-03-31) ---------------------------------------- Fix [DATAREDIS-283] - RedisCacheManager.loadCaches overrides already defined cache names in afterPropertiesSet(). [DATAREDIS-285] - LettuceTemplate.execute should read and convert entire response. [DATAREDIS-286] - Avoid potential RedisTemplate.expire() overflow. [DATAREDIS-289] - Avoid NPE in append() in case of pipelining or/and multi/exec calls. Improvement [DATAREDIS-184] - Support Redis 2.6 SAVE/NOSAVE arguments to shutdown command. [DATAREDIS-284] - Add support for zCard to ZSetOperations. [DATAREDIS-287] - setBit() should return a Boolean. New Feature [DATAREDIS-267] - Add support for CLIENT KILL. [DATAREDIS-268] - Add support for CLIENT LIST. [DATAREDIS-269] - Add support for CLIENT SETNAME. [DATAREDIS-270] - Add support for CLIENT GETNAME. [DATAREDIS-271] - Add support for PSETEX. [DATAREDIS-277] - Add support for SLAVEOF. Task [DATAREDIS-261] - Upgrade commons-pool to commons-pool2. [DATAREDIS-275] - Rename RedisServerCommands.bgWriteAof to bgReWriteAof. [DATAREDIS-292] - Release 1.3.0 M1. Changes in version 1.2.1.GA (2014-03-27) ---------------------------------------- Fix [DATAREDIS-283] - RedisCacheManager.loadCaches overrides already defined cache names in afterPropertiesSet(). [DATAREDIS-285] - LettuceConnection.execute should fully read response. [DATAREDIS-286] - Avoid overflow in JedisConnection#expire / #pexpire. [DATAREDIS-289] - Avoid NPE in DefaultValueOperations#append() in case of pipelining or/and multi/exec calls. Task [DATAREDIS-291] - Release Version 1.2.1. Changes in version 1.3.0.M1 (2014-03-31) ---------------------------------------- Fix [DATAREDIS-283] - RedisCacheManager.loadCaches overrides already defined cache names in afterPropertiesSet(). [DATAREDIS-285] - LettuceTemplate.execute should read and convert entire response. [DATAREDIS-286] - Avoid potential RedisTemplate.expire() overflow. [DATAREDIS-289] - Avoid NPE in append() in case of pipelining or/and multi/exec calls. Improvement [DATAREDIS-184] - Support Redis 2.6 SAVE/NOSAVE arguments to shutdown command. [DATAREDIS-284] - Add support for zCard to ZSetOperations. [DATAREDIS-287] - setBit() should return a Boolean. New Feature [DATAREDIS-267] - Add support for CLIENT KILL. [DATAREDIS-268] - Add support for CLIENT LIST. [DATAREDIS-269] - Add support for CLIENT SETNAME. [DATAREDIS-270] - Add support for CLIENT GETNAME. [DATAREDIS-271] - Add support for PSETEX. [DATAREDIS-277] - Add support for SLAVEOF. Task [DATAREDIS-261] - Upgrade commons-pool to commons-pool2. [DATAREDIS-275] - Rename RedisServerCommands.bgWriteAof to bgReWriteAof. [DATAREDIS-292] - Release 1.3.0 M1. Changes in version 1.2.1.GA (2014-03-27) ---------------------------------------- Fix [DATAREDIS-283] - RedisCacheManager.loadCaches overrides already defined cache names in afterPropertiesSet(). [DATAREDIS-285] - LettuceConnection.execute should fully read response. [DATAREDIS-286] - Avoid overflow in JedisConnection#expire / #pexpire. [DATAREDIS-289] - Avoid NPE in DefaultValueOperations#append() in case of pipelining or/and multi/exec calls. Task [DATAREDIS-291] - Release Version 1.2.1. Changes in version 1.2.0.GA (2014-03-03) ---------------------------------------- Task [DATAREDIS-279] - Update reference documentation. [DATAREDIS-282] - PubSubResubscribeTests should use jedis without pool. Changes in version 1.2.0.RC1 (2014-02-19) ---------------------------------------- Fix [DATAREDIS-166] - Intermittent corrupted input/output streams subscribing to both patterns and channels in RMLC [DATAREDIS-170] - Canceling RMLC SubscriptionTask immediately after start can leave connection open [DATAREDIS-188] - Infinite loop renaming a non-existent Collection when using Lettuce [DATAREDIS-246] - RedisCacheManager‘s getCache method does not match the logical of CompositeCacheManager Improvement [DATAREDIS-250] - Upgrade to Spring Framework 3.2.8. New Feature [DATAREDIS-206] - Add support for time operation [DATAREDIS-241] - Add a Jackson2 based RedisSerializer Task [DATAREDIS-254] - Clean up codebase to match spring data conventions [DATAREDIS-260] - Upgrade to latest jedis (2.4.1) release [DATAREDIS-264] - Update gradle version [DATAREDIS-265] - Update Java source and target compatibility to Java 6 [DATAREDIS-266] - Overhaul documentation. Changes in version 1.1.1.RELEASE (2014-01-28) ---------------------------------------- Fix [DATAREDIS-245] - Prevent excessive Thread creation in unit tests [DATAREDIS-248] - Fix generics in DecoratingStringHashMapper to be Java 8 compatible [DATAREDIS-257] - Shutdown the client when DefaultLettucePool is destroyed Improvement [DATAREDIS-242] - Listener Container start() Returns Before Container is Really Started [DATAREDIS-249] - Improve logging for tests in Gradle build [DATAREDIS-251] - Fix tests to work against Redis 2.8.x Task [DATAREDIS-243] - Ensure compatibility with Spring Framework 4.0 [DATAREDIS-247] - Testcases must be locale independent [DATAREDIS-255] - Release 1.1.1 Changes in version 1.1.0.RELEASE (2013-09-09) ---------------------------------------- No changes Changes in version 1.1.0.RC1 (2013-08-22) ---------------------------------------- Package o.s.d.redis.core * Modified RedisTemplate expire and expireAt to use millisecond precision when available (Redis 2.6+) * Added RedisTemplate getExpire(key, TimeUnit) method that uses millisecond precision when available (Redis 2.6+) Package o.s.d.redis.connection.jedis * Fixed invalid Jedis connections returning to pool after NPE Package o.s.d.redis.connection.lettuce * Modified LettuceConnectionFactory to lazily instantiate connections, allowing the AppContext to start if Redis is unavailable Package o.s.d.redis.connection.srp * Added password to SrpConnectionFactory * Fixed SrpConnection throwing native Exception from constructor on connection failure Package o.s.d.redis.listener * Fixed MessageListenerAdapter extractMessage returning the whole Message instead of the Message body when serializer is null * Added resubscribe on connection failure to RedisMessageListenerContainer Package o.s.d.redis.support.collections * Implemented ConcurrentMap replace and remove methods Changes in version 1.1.0.M2 (2013-08-06) ---------------------------------------- General * Modified RedisConnection and Operations classes to allow passing multiple elements to hdel, rpush, lpush, sadd, srem, zadd, and zrem operations * Added method to RedisTemplate for executing Redis Lua scripts * Modified RedisTemplate and opsForX classes to allow null serializers for working with raw data * Modified RedisConnection impls to convert the connector-specific results of closePipeline to the same data types as the individual RedisConnection operations * Modified RedisConnection impls to convert the connector-specific results of transaction exec to the same data types as the individual RedisConnection operations * Upgraded to Gradle 1.6 Package o.s.d.redis.cache * Fixed IlegalMonitorStateException when get or put performed while clearing Package o.s.d.redis.core * Added RedisTemplate executePipelined methods for executing commands in a pipeline and returning deserialized results * Modified RedisTemplate exec to deserialize results of transaction execution * Fixed StringRedisConnection not being passed to RedisCallbacks executed through StringRedisTemplate * Fixed NPE in DefaultZSetOperations methods that return Tuple Set in tx or pipeline Package o.s.d.redis.connection * Added missing zRevRangeByScore methods to StringRedisConnection * Modified StringRedisConnection sUnionStore, sInterStore, and sDiffStore to return Long * Fixed DefaultStringRedisConnection not passing begin and end to bitCount method Package o.s.d.redis.connection.jedis * Fixed ClassCastExceptions closing a pipeline after transaction exec * Fixed UnsupportedOperationExceptions being wrapped in DataAccessExceptions * Fixed connections not returning to pool on failed select * Fixed NPEs on exec/closePipeline that includes move Package o.s.d.redis.connection.lettuce * Fixed UnsupportedOperationExceptions being wrapped in DataAccessExceptions * Fixed NPE calling sort with null SortParams * Fixed closePipeline returning individual results of ops in a transaction instead of a List of exec results * Fixed setBit and setRange executing twice when pipelined * Modified watch method to throw an UnsupportedOperationException if called in a transaction * Fixed eval and evalsha suppressing Exceptions with ReturnType Multi Package o.s.d.redis.connection.srp * Fixed UnsupportedOperationExceptions being wrapped in DataAccessExceptions * Fixed NPE calling sort with null SortParams * Fixed closePipeline returning individual results of ops in a transaction instead of a List of exec results * Fixed Exception calling select in a transaction * Fixed NPE in sort when SortParameters.isAlphabetic() returns null Package o.s.d.redis.listener * Removed 5 second wait starting RedisMesssageListenerContainer with no listeners Package o.s.d.redis.support.atomic * Added RedisAtomicDouble Changes in version 1.0.6.RELEASE (2013-08-06) ---------------------------------------- General * Upgraded to Gradle 1.6 Package o.s.d.redis.cache * Fixed IlegalMonitorStateException when get or put performed while clearing Package o.s.d.redis.core * Fixed StringRedisConnection not being passed to RedisCallbacks executed through StringRedisTemplate * Fixed NPE in DefaultZSetOperations methods that return Tuple Set in tx or pipeline Package o.s.d.redis.connection.jedis * Fixed connections not returning to pool on failed select * Fixed NPEs on exec/closePipeline that includes move Package o.s.d.redis.connection.lettuce * Fixed NPE calling sort with null SortParams * Fixed setBit and setRange executing twice when pipelined Package o.s.d.redis.connection.srp * Fixed NPE calling sort with null SortParams * Fixed Exception calling select in a transaction * Fixed NPE in sort when SortParameters.isAlphabetic() returns null Package o.s.d.redis.listener * Removed 5 second wait starting RedisMesssageListenerContainer with no listeners Changes in version 1.1.0.M1 (2013-07-02) ---------------------------------------- General * Added Redis 2.6 millisecond expiration commands (pexpire, pttl, etc) * Added Redis 2.6 bit commands (bitop, bitcount) * Added support for Redis 2.6 scripting * Added Redis 2.6 incrbyfloat and hincrbyfloat commands * Added Redis 2.6 dump and restore commands * Added Redis 2.6 info by section * Added Redis 2.6 srandmember with count * Removed RJC due to lack of Redis 2.6 support * Upgraded JRedis from older fork (https://github.com/anthonylauzon/jredis) to latest original master (https://github.com/alphazero/jredis) * Made Jedis dependency optional in the build Package o.s.d.redis.core * Changed ValueOperations.multiSetIfAbsent return type from void to Boolean Package o.s.d.redis.connection * Changed StringRedisCommands.mSetNX return type from void to Boolean Package o.s.d.redis.connection.jredis * Removed base64 key encoding, since binary keys are supported in JRedis upgrade. Fixes issue where keys method with patterns was not working due to encoding. * Added JredisPool, since pool impl was removed from JRedis. Also fixes issue with previous pool where failed connections were not removed. Package o.s.d.redis.connection.lettuce * Added LettucePool for optional pooling of blocking/tx Lettuce connections * Added optional Redis password to LettuceConnectionFactory * Modified LettuceConnectionFactory to throw RedisConnectionFailureExceptions instead of native Exceptions Changes in version 1.0.5.RELEASE (2013-07-02) --------------------------------------------- General * Upgraded to SRP 0.7 * Upgraded to Lettuce 2.3.3 Package o.s.d.redis.core * Fixed left/right pop timeouts converting to 0 seconds (blocking indefinitely) Package o.s.d.redis.connection.lettuce * Fixed exec returning empty list instead of null if watched variable modified Package o.s.d.redis.connection.srp * Fixed exec throwing TransactionFailedException instead of returning null if watched variable modified Package o.s.d.redis.listener.adapter * Added MessageListenerAdapter constructor with delegate and listener method Changes in version 1.0.4.RELEASE (2013-04-18) --------------------------------------------- General * Introduced Lettuce connection sharing to greatly reduce number of connections used * Upgraded to SRP 0.5 * Improved reference documentation * Added several integration tests of each RedisConnection implementation Package o.s.d.redis.core * Reverted binary backwards incompatibility introduced by fix in 1.0.3.RELEASE to RedisTemplate convertAndSend() method to return the number of targeted channels Package o.s.d.redis.connection * Fixed NPE in DefaultStringRedisConnection deserializing a null Map Package o.s.d.redis.connection.jedis * Removed unnecessary cast of Long to Int in increment/decrement ops * Fixed incorrect transaction discard * Fixed dbSize/flush ops executing synchronously while pipelining * Fixed execute method returning incorrect results * Fixed brPop executing twice when called in a transaction * Fixed persist method not executing as part of a transaction * Fixed incorrect closing of pipeline Package o.s.d.redis.connection.jredis * Fixed sort not storing results under given key Package o.s.d.redis.connection.lettuce * Fixed NPE on LettuceConnection blpop/brpop timeout * Fixed exec returning a non-null value while pipelining * Fixed zCount/zInterStore methods executing synchronously when pipelining * Fixed NPEs or incorrect results in several ops within a transaction * Fixed zRevRangeByScore methods failing due to incorrect parameter ordering Package o.s.d.redis.connection.rjc * Fixed zRevRangeWithScores returning incorrect results * Fixed incorrect closing of pipeline * Fixed zRevRangeByScore methods failing due to incorrect parameter ordering Package o.s.d.redis.connection.srp * Fixed exec not returning the results of the commands executed in the tx * Fixed brpop/blpop fails with "ERR wrong number of arguments" * Fixed sort not working due to NPE/syntax errors * Fixed zCount/zInterStore methods executing synchronously when pipelining * Fixed syntax error in zRangeByScore/zRevRangeByScore methods when using offset and count * Fixed incorrect closing of pipeline * Fixed zRevRangeByScore methods failing due to incorrect parameter ordering Package o.s.d.redis.listener * Fixed SubscriptionTask not closing connections * Fixed messages not received after adding a message listener to both channel and pattern before container start Changes in version 1.0.3.RELEASE (2013-02-13) --------------------------------------------- General * Introduced support for Lettuce Redis driver * Upgraded to Spring Framework 3.1.4 * Log4J dependency removed * Improved reference documentation Package o.s.d.redis.cache * Clarified default of 'useprefix' for RedisCacheManager Package o.s.d.redis.core * Improved RedisTemplate initialization to prevent exceptions caused by invalid serializers * Refined RedisTemplate#delete call when dealign with empty collection * Refined convertAndSend() method to return the number of targeted channels Package o.s.d.redis.connection * Fixed unimplemented method (hGetAll) in StringRedisConnection Package o.s.d.redis.connection.jedis * Improved handling of socket exceptions uncaught by the driver at connection time Package o.s.d.redis.connection.srp * Fixed incorrect handling BulkReply affecting hash operations * Improved pipelined usage of various operations Package o.s.d.redis.listener * Added proper hash/equals/toString method to ChannelTopic and PatternTopic * Improved MessageListenerContainer to support dynamic removal of listeners Package o.s.d.redis.support * Added RedisTemplate-based constructor to AtomicInteger/Long for connection/resource reuse Changes in version 1.0.2.RELEASE (2012-10-10) --------------------------------------------- General * Upgraded to Spring Framework 3.1.2 * Upgraded to SLF4J 1.6.6 * Upgraded to Log4J 1.2.17 * Upgraded to Jackson 1.8.8 * Upgraded build system to Gradle 1.2 Package o.s.d.redis.cache * Fixed bug causing constructor to ignore cache name prefix * Introduced expiration time for cache zones Package o.s.d.redis.core * Fixed incorrect return value (from primitive to Object) on BoundHashOperations#hasKey * Added overloaded ZSet methods with offset/count parameters Package o.s.d.redis.connection * Refined RedisConnectionCommands, RedisKeyCommands interface signature Package o.s.d.redis.listener * Fixed bug causing the message channel to not be passed to the listener Package o.s.d.redis.support.collection * Added checks for incorrect pipeline/multi-exec access for better reporting Changes in version 1.0.1.RELEASE (2012-06-27) --------------------------------------------- General * Introduced support for SRP (Sam's Redis Protocol) * Introduced native execution through RedisConnection#execute * Upgraded to Spring Framework 3.1.1 * Upgraded to Jedis 2.1.0 * Upgraded build system to Gradle 1.0 Package o.s.d.redis.connection * Expanded set *store operations to return the resulting set size * Refined RedisConnection#closePipeline contract by adding RedisPipelineException Package o.s.d.redis.connection.jedis * Improved exception translation of Jedis exceptions * Fixed value bug in #setBit * Added support for zRev* operations (new in Jedis 2.1) * Added pipeline support for #zCount Package o.s.d.redis.connection.jredis * Fixed value bug in #setBit Package o.s.d.redis.core * Fixed bug in SetOperations#randomMember * Fixed switched arguments in ZSetOperations#intersectAndStore * Corrected handling of negative values in ValueOperations#increment * Refined internal caching of serializers to cope with template configuration updates * Expanded set *store operations to return the resulting set size * Expanded ZSetOperations#removeRange* to return the number of elements removed * Improved binding of Redis connections to thread * Refined handling of pipelined connections to allow potential exceptions to properly propagate * Expanded HashOperations#multiGet and #values to return List instead of Collection Package o.s.d.redis.listener * Improved lifecycle of RedisMessageListenerContainer * Fixed bug causing double invocation of custom listeners also implementing MessageListener Changes in version 1.0.0.RELEASE (2011-12-14) --------------------------------------------- General * Upgraded to Spring Framework 3.1 GA Changes in version 1.0.0.RC1 (2011-10-19) ----------------------------------------- General * Upgraded to Spring Framework 3.1 RC1 * Upgraded slfj, Jackson libraries * Changed compile source/target compatibility to JDK 1.5 Package o.s.d.redis.connection * Added equals/hashCode/compareTo methods to TypedTuple Package o.s.d.redis.core * Fixed potential bug in RedisTemplate#sort * Added equals/hashCode/compareTo methods to TypedTuple Package o.s.d.redis.support * Fixed potential bug in RedisProperties * Improved Redis cache implementation under heavy concurrent access Changes in version 1.0.0.M4 (2011-07-18) ---------------------------------------- General * Split Spring Data Key Value project into separate projects for Redis and Riak * Changed build system to Gradle * Changed root package from org.springframework.data.keyvalue.redis to org.springframework.data.redis * Introduced Redis implementation for Spring 3.1 cache abstraction * Upgraded to Spring Framework 3.1 M2 * Upgraded to Jedis 2.0.0 Package o.s.d.redis.connection * Added awarness of the selected Redis DB Package o.s.d.redis.core * Added missing zRange* operations * Fixed incorrect cast in RedisTemplate#keys() * Removed ConnectionFactory constructor Package o.s.d.redis.listener * Simplified namespace declaration for Redis pubsub Package o.s.d.redis.support * Improved compatibility of atomic counters with M2 release * Added Properties implementation on top of Redis Changes in version 1.0.0.M3 (2011-04-06) ---------------------------------------- Redis ----- General * Added support for RJC (new Redis client) * Added dedicated SORT and SORT/GET support * Introduced HashMapper feature for mapping objects to and from maps * Improved exception hierarchy to be more consistent with Spring DAO * Made several Redis dependencies optional to eliminate unnecessary jars from the classpath Package o.s.d.k.redis.connection * Added support for indexes to RedisConnectionFactories * Added new key operations to KeyOperations (formerly KeyBound) * Improved handling of Jedis exceptions Package o.s.d.k.redis.core * Serializers are exposed to RedisCallback * Added missing operations (move, select) to RedisTemplate * Fixed the signature of various method Package o.s.d.k.redis.support.atomic * Fixed incorrect serialization leading to error for RedisAtomicInteger & RedisAtomicLong Changes in version 1.0.0.M2 (2011-02-10) ---------------------------------------- Redis ----- General * Added PubSub support (message listener container and namespace) * Added JSON and Object/XML Mapping serializers * Completed support for Redis (2.2) commands * Improved documentation * Upgraded to Redis 2.2 * Updraded to Jedis 1.5.2 Package o.s.d.k.redis.connection * Added sort support * Added pipelining support * Added StringRedisConnection for String-focused operations * Renamed JedisConnectionFactory pooling to usePool * Renamed JredisConnectionFactory pooling to usePool Package o.s.d.k.redis.connection.jedis * Added support for Jedis rich exceptions * Added support for broken pooled connection Package o.s.d.k.redis.core * Fix serializationg bug for hash value inside RedisTemplate * Added injection for Redis operations ("views") Package o.s.d.k.redis.support * Refined AtomicInteger and AtomicLong constructors to use the backing store value as initial counter Riak ---- General * Important bug fixes * Fully asynchronous AsyncRiakTemplate object * Groovy DSL for Riak access using async template underneath Changes in version Riak 1.0.0.M1 (2010-12-15) --------------------------------------------- General * Generified RiakTemplate for exception translation, serialization, and data access * Built-in HTTP REST client based on Spring 3.0 RestTemplate * java.io and Spring IO resource abstractions for reading/writing streams * java.io.File subclass that represents a Riak resource Changes in version Redis 1.0.0.M1 (2010-12-13) ---------------------------------------------- General * Configuration support for Redis Jedis and JRedis drivers/connectors * Connection package as low-level abstraction across multiple drivers * Exception translation * Generified RedisTemplate for exception translation and serialization support * Various serialization strategies * Atomic counter support classes * JDK Collection implementations on top of Redis