Version 0.5.0
Pre-releaseThis release features major performance and stability improvements. The bugs having to do with using multiple filters at the same time have been fixed. query_test.go has been completely rewritten and has a sophisticated automated query tester, allowing the test coverage to include thousands of possible query combinations without checking each one individually.
Transactions have been completely rewritten and now supports automatic dependency resolution. There were previous cases were some index commands would be run outside of the main transaction for a query. These have all been fixed and every method results into a single, (perhaps multi-staged) transaction.
Performance has changed with this release. Many methods are significantly faster because of the way transactions have been optimized. For example, the core methods (FindById, ScanById, Save, etc.) are roughly 40% faster. However, some methods (particularly queries) have actually become slower, likely due to the overhead in the way certain types of transactions are executed. The next release will focus on improving performance.
For string indexing, zoom now makes use of the ZRANGEBYLEX command available in redis versions >= 2.8.9. This implementation is faster, and eliminates the possibility of zoom spitting out incorrect results, even in concurrent web applications where many commands might be interleaved.
CHANGELOG:
- Fixed issue #1
- rewrote query_test which now tests thousands of query combinations
- Fixed issue #2 by using ZRANGEBYLEX for string indexes
- Now requires Redis verson >= 2.8.9
- Improved performance for FindById, ScanById, Save, and Delete functions.
- Rewrote transactions with automatic dependency resolution
- Changed to using a single transaction for nearly all methods
- Rewrote queries
- Improved docs and README guide (still some room for improvement)
- Removed extraneous public methods from Query: GetIds, GetIdsWithFilters, GetIdsWithoutFilters. These were never supposed to be public.
- Calling Zoom.Init will no longer panic if there is a problem compiling model specs.