- Proper C# 4 mono build support (http://stackoverflow.com/questions/8181081/error-framework-netframework-4-0-client-profile-not-installed-for-monodevel)
- Redis version detection mechanism (INFO?).
- Untangle connection management from the client so we could do something like IOCP using a connection that's shared between clients. (one pipelined connection for normal commands, another for pub/sub etc.)
- Better clients pool interface.
- More Redis protocol conformance tests (correct arguments/correct return values/correct command spelling).
- Full audit for 3.0 support
- Rebuilt on Windows due to package corruption issue with OS X NuGet. (ZIP archive contains unsupported data structures.) (@NareshBanala)
- INFO parsing fix. (@NareshBanala)
- Automatic
Authoption forThreadwisePool(@myGuruPitka) - Experimental
TrackedThreadwisePoolthat can beDispose()-ed.
- NEW Support for
MIGRATEcommand (@myGuruPitka)
- FIXED wrong Executor mode after RESET (@cincauhangus)
- NEW
RedisClient.Modeproperty so client can test for the current mode. (@cincauhangus)
- Remove leftover "RESET" debug printout (@johanhelsing)
- ZUnionStore missing number of keys (@robertaves - issue #10)
- ReadBulk never returns null (@robertaves - issue #10)
- Removed forgotten Debug println. (@robertaves - issue #10)
- MSetNX should call ReadBool, not ReadOk (@bokononlives - issue #3)
- Fix for BLPOP and BRPOP wrong argument ordering (issue #5 by @paulduran)
- Update nuget.
- Update project files to VS2012 format.
- Now versioning semantically (http://semver.org/) (adding the "v" and a revision number)
- Backward-compatible variadic write overloads (returning
intinstead ofbool) forSADD, HDEL, SREM, ZREM, ZADD, LPUSHandRPUSH. Available in Redis 2.4+. - Some methods were missing from the IRedisClient interface. It's now there.
- Experimental
IocpExecutorsupport.
- Fix issue #1 reported by @rjlopes, ZScore now returns
double?--nullis returned when an element does not exists in the sorted set. RedisSettings.New()is nowRedisSettings.Build(). The old method is still there but[Obsolete]-ed- You can now configure clients via the
ThreadwisePoolconstructor using lambda notation just likeRedisClient. - Introduced
BLPOP\BRPOPoverloads that matches with redis docs. - Introduced
RedisSettings.Builder.OverrideEncoding(access withRedisSettings.EncodingOverrideto change string encodings used.
Experimental features:
RedisSettings.Builder.ConnectionTimeoutfor overriding internal socket connection timeout to help deal with socket timeout better.AutoActivatingPoolwhich activates client and disposes it immediately when the thread exits. This helps greatly with redis timeout issues in high-load environment.
- Complete API support for Redis 2.2 (if I left out any, please let me know)
- Bug fixes
- You can now configure redis settings via the RedisClient constructor directly using lambdas.
- MULTI/EXEC support.
- PUBLISH/SUBSCRIBE support via
IObservable. - INFO/SLAVEOF/MONITOR support.
- Complex arguments support for
SORT... other commands coming soon. - Refactored in a multi-mode Executor model for cleaner code and better future extensibility/optimization support (IOCP?)
.Custom()for introducing your own custom command and read/write action. i.e. a command we've not yet to support.
- Improved exception handling. Now defaults to always retry until connects to deal with timeouts from Redis side and never throw exceptions.
- RedisSettings can now be copied with
.CopyNew()method. - ThreadwisePool.BuildClient is now
protected virtualso you can override it to roll your ownIRedisClientimplementation.
Breaking changes:
- RedisSettings are now built using
RedisSettings.Build()see/src/Sider.Samples/ComplexSetupSample.cs:78for an example. RedisClientnow supports custom serialization method so the interface and class now has a type parameter:IRedisClient<T>andRedisClient<T>, most of you should simply need to replaceIRedisClientwithIRedisClient<string>to get everything to compile like in v0.3.SUBSTRno longer supported, useGETRANGEinstead as per redis documentation.
New stuff
- Binary data and custom serialization support has been added.
Right now raw
byte[]buffers andstringhave a dedicated serializer which will be used automatically when you createRedisClient<byte[]>andRedisClient<string>. For all other types, a generic binary serializer which usesBinaryFormatterwill be used. More efficient and specific serializers will be added in the upcoming versions. - New settings
KeyEncodingandValueEncodingfor specifying encoding in case you use a non-ASCII characters as key. (v0.3 assumed that keys would be ASCII-encodable) - New settings
SerializationBufferSizeandSerializerOverridefor use with the new custom serialization support.