- 06 Jun, 2014 2 commits
-
-
antirez authored
-
antirez authored
The user @kjmph provided excellent ideas to improve speed of ZUNIONSTORE (in certain cases by many order of magnitude), together with an implementation of the ideas. While the ideas were sounding, the implementation could be improved both in terms of speed and clearness, so that's my attempt at reimplementing the speedup proposed, trying to improve by directly using just a dictionary with an embedded score inside, and reusing the single-pass aggregate + order-later approach. Note that you can't apply this commit without applying the previous commit in this branch that adds a double in the dictEntry value union. Issue #1786.
-
- 31 May, 2014 1 commit
-
-
zionwu authored
-
- 18 Apr, 2014 1 commit
-
-
antirez authored
-
- 17 Apr, 2014 3 commits
- 16 Apr, 2014 2 commits
- 05 Apr, 2014 1 commit
-
-
antirez authored
-
- 05 Dec, 2013 1 commit
-
-
antirez authored
-
- 05 Nov, 2013 1 commit
-
-
antirez authored
The previous implementation of SCAN parsed the cursor in the generic function implementing SCAN, SSCAN, HSCAN and ZSCAN. The actual higher-level command implementation only checked for empty keys and return ASAP in that case. The result was that inverting the arguments of, for instance, SSCAN for example and write: SSCAN 0 key Instead of SSCAN key 0 Resulted into no error, since 0 is a non-existing key name very likely. Just the iterator returned no elements at all. In order to fix this issue the code was refactored to extract the function to parse the cursor and return the error. Every higher level command implementation now parses the cursor and later checks if the key exist or not.
-
- 28 Oct, 2013 2 commits
- 19 Aug, 2013 2 commits
-
-
antirez authored
Related to issue #1240.
-
antirez authored
This commit does mainly two things: 1) It fixes zunionInterGenericCommand() by removing mass-initialization of all the iterators used, so that we don't violate the unsafe iterator API of dictionaries. This fixes issue #1240. 2) Since the zui* APIs required the allocator to be initialized in the zsetopsrc structure in order to use non-iterator related APIs, this commit fixes this strict requirement by accessing objects directly via the op->subject->ptr pointer we have to the object.
-
- 22 Jul, 2013 1 commit
-
-
antirez authored
Previously two string encodings were used for string objects: 1) REDIS_ENCODING_RAW: a string object with obj->ptr pointing to an sds stirng. 2) REDIS_ENCODING_INT: a string object where the obj->ptr void pointer is casted to a long. This commit introduces a experimental new encoding called REDIS_ENCODING_EMBSTR that implements an object represented by an sds string that is not modifiable but allocated in the same memory chunk as the robj structure itself. The chunk looks like the following: +--------------+-----------+------------+--------+----+ | robj data... | robj->ptr | sds header | string | \0 | +--------------+-----+-----+------------+--------+----+ | ^ +-----------------------+ The robj->ptr points to the contiguous sds string data, so the object can be manipulated with the same functions used to manipulate plan string objects, however we need just on malloc and one free in order to allocate or release this kind of objects. Moreover it has better cache locality. This new allocation strategy should benefit both the memory usage and the performances. A performance gain between 60 and 70% was observed during micro-benchmarks, however there is more work to do to evaluate the performance impact and the memory usage behavior.
-
- 29 Jan, 2013 1 commit
-
-
antirez authored
-
- 28 Jan, 2013 2 commits
-
-
antirez authored
When keyspace events are enabled, the overhead is not sever but noticeable, so this commit introduces the ability to select subclasses of events in order to avoid to generate events the user is not interested in. The events can be selected using redis.conf or CONFIG SET / GET.
-
antirez authored
-
- 19 Jan, 2013 1 commit
-
-
guiquanz authored
-
- 22 Nov, 2012 1 commit
-
-
antirez authored
This fixes issue #761.
-
- 08 Nov, 2012 1 commit
-
-
antirez authored
-
- 23 May, 2012 1 commit
-
-
antirez authored
Weeks ago trying to fix an harmless GCC warning I introduced a bug in the ziplist-encoded implementations of sorted sets. The bug completely broke zuiNext() iterator, that is used in the ZINTERSTORE and ZUNIONSTORE implementation, so those two commands are no longer reliable starting from Redis version 2.4.12 and latest 2.6.0-RC releases. This commit fixes the problem and adds a regression test.
-
- 24 Apr, 2012 1 commit
-
-
antirez authored
-
- 22 Feb, 2012 1 commit
-
-
antirez authored
zzlIsInRange() now is capable of handling empty sorted sets that may end inside the data set when loading very old RDB files produced by early-stage versions of Redis.
-
- 21 Feb, 2012 1 commit
-
-
antirez authored
-
- 16 Jan, 2012 1 commit
-
-
antirez authored
-
- 11 Jan, 2012 1 commit
-
-
antirez authored
-
- 23 Dec, 2011 1 commit
-
-
antirez authored
-
- 19 Dec, 2011 1 commit
-
-
BigCat authored
Using `getLongFromObjectOrReply` instead of `atoi` if possible. The following functions are modified. * lrangeCommand * ltrimCommand * lremCommand * lindexCommand * lsetCommand * zunionInterGenericCommand * genericZrangebyscoreCommand * sortCommand
-
- 18 Dec, 2011 1 commit
-
-
antirez authored
-
- 14 Nov, 2011 1 commit
-
-
antirez authored
string to number API is now more strict not accepting spaces before or after the number. A few tests converted to match the new error messages using the word float instead of double.
-
- 08 Nov, 2011 1 commit
-
-
antirez authored
-
- 23 Oct, 2011 1 commit
-
-
antirez authored
-
- 04 Oct, 2011 1 commit
-
-
antirez authored
-
- 03 Oct, 2011 2 commits
-
-
Pieter Noordhuis authored
-
Pieter Noordhuis authored
-
- 31 May, 2011 2 commits