NIORedis 0.7.0: The Proposal
Pre-release
Pre-release
Breaking Changes
- Static factory methods for building a default Redis
Channel
pipeline andRedisConnection
have been moved to a newRedis
enum namespace (#38)- Their method signatures have also seen some changes
- Encoding / Decoding RESP has been separated from the Channel pipelines (#39)
RESPTranslator
is a new type that implements the encoding/decoding of RESP formatted bytes to Swift typesRESPDecoder
has been renamed toRedisByteDecoder
and is just aByteToMessageDecoder
RESPEncoder
has been renamed toRedisMessageEncoder
and is just aMessageToByteEncoder
- Error handling is now more straight forward (#37)
RedisError
is to represent only errors returned by Redis itself in command responsesNIORedisError
represents errors thrown within the libraryRESPTranslator.ParsingError
represents errors thrown while parsing bytes
RedisPipeline
has been removed (#36)- This feature may be re-introduced in the future, but for now is left up to higher level packages to implement
RESPValue
now holds references toByteBuffers
rather thanData
(#34)Foundation.Data
is no longerRESPValueConvertible
(#30)
Additions
RedisConnection
now has a propertysendCommandsImmediately
that controls the timing of when commands written to the network socket should be flushed and sent to Redis. (#36)- The default is
true
, which means every command will trigger a flush.
- The default is
RESPValue
now has the following computed properties converted from the underlying storage (#30, #34):bytes: [UInt8]?
data: Data?
string: String?
(this isn't new, but now also works with.integer
storage instances)
Implementation Changes
SwiftLog
has been anchored to version1.0.0
RESPTranslator
now usesByteBufferView
s andByteBufferSlice
s internally, so there should be a performance increase (#34)