Commit Graph

31 Commits

Author SHA1 Message Date
060d56e7eb SCAN code refactored to parse cursor first.
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.
2013-11-05 17:25:29 +01:00
bb2df795e0 Aesthetic fix (missing space) into HSCAN and ZSCAN implementations.
Thanks to @badboy for reporting.
2013-10-29 16:21:21 +01:00
1cc7e646af HSCAN implemented. 2013-10-29 16:21:13 +01:00
b9bc4f9132 Keyspace events: it is now possible to select subclasses of events.
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.
2013-01-28 13:18:36 +01:00
4ff138fbbe Keyspace events added for more commands. 2013-01-28 13:17:30 +01:00
8ddb23b90c BSD license added to every C source and header file. 2012-11-08 18:34:04 +01:00
0b8441c1b2 Dump ziplist hex value on failed assertion.
The ziplist -> hashtable conversion code is triggered every time an hash
value must be promoted to a full hash table because the number or size of
elements reached the threshold.

If a problem in the ziplist causes the same field to be present
multiple times, the assertion of successful addition of the element
inside the hash table will fail, crashing server with a failed
assertion, but providing little information about the problem.

This code adds a new logging function to perform the hex dump of binary
data, and makes sure that the ziplist -> hashtable conversion code uses
this new logging facility to dump the content of the ziplist when the
assertion fails.

This change was originally made in order to investigate issue #547.
2012-06-12 00:49:32 +02:00
52192552bd Replicate HINCRBYFLOAT as HSET. 2012-03-23 10:24:25 +01:00
753bb3dcbd More vertical space saved. 2012-03-10 11:19:17 +01:00
c0caa1cf54 Minor code aesthetic change to use Redis code base style rule of saving vertical space when possible. 2012-03-10 11:09:43 +01:00
8562798308 Merge conflicts resolved. 2012-03-09 22:07:45 +01:00
7c96b467c1 Fixed undefined behavior in *INCR style functions overflow detection. Sorry clang! 2012-02-21 18:26:11 +01:00
a400a9b2d7 Now HINCRBY can detect overflows too. Fix for issue #330. 2012-02-16 16:09:08 +01:00
fe45840201 Implements ziplistFind
To improve the performance of the ziplist implementation, some
functions have been converted to macros to avoid unnecessary stack
movement and duplicate variable assignments.
2012-01-03 16:13:42 -08:00
ebd85e9a45 Encode small hashes with a ziplist 2012-01-02 22:14:10 -08:00
68bfe993c8 HINCRBYFLOAT implemented 2011-11-15 15:09:39 +01:00
c0ba9ebe13 dict.c API names modified to be more coincise and consistent. 2011-11-08 17:07:55 +01:00
eab0e26e03 replaced redisAssert() with redisAssertWithInfo() in a shitload of places. 2011-10-04 18:43:03 +02:00
2d7162bb1d HDEL: Abort deleting fields when hash is removed 2011-07-27 12:29:40 +02:00
64a13a36e6 variadic HDEL with tests 2011-04-19 17:07:55 +02:00
cea8c5cd75 touched key for WATCH refactored into a more general thing that can be used also for the cache system. Some more changes towards diskstore working. 2010-12-29 19:39:42 +01:00
96b5d05fde initialized a few vars just to avoid warnings, not a real problem. 2010-12-14 16:39:33 +01:00
8c304be359 cow friendly HGETALL and variants 2010-12-14 12:10:51 +01:00
3d24304ff9 HGET HMGET are now COW friendly, plus API refactoring and changes needed for the new implementation. 2010-12-10 15:17:55 +01:00
e584d82fec Return error to client on wrong type for HMGET 2010-10-26 12:33:17 +02:00
3ab203762f Use specialized function to add status and error replies 2010-09-02 23:33:06 +02:00
b70d355521 Use existing reply functions where possible 2010-09-02 19:52:04 +02:00
0537e7bf80 Use specialized function to add multi bulk reply length 2010-09-02 12:51:14 +02:00
b301c1fc2b Wrapper for adding unknown multi bulk length to reply list 2010-08-30 16:39:14 +02:00
5b4bff9c17 WATCH is now affected only when write commands actually modify the key content 2010-07-12 12:01:15 +02:00
e2641e09cc redis.c split into many different C files.
networking related stuff moved into networking.c

moved more code

more work on layout of source code

SDS instantaneuos memory saving. By Pieter and Salvatore at VMware ;)

cleanly compiling again after the first split, now splitting it in more C files

moving more things around... work in progress

split replication code

splitting more

Sets split

Hash split

replication split

even more splitting

more splitting

minor change
2010-07-01 14:38:51 +02:00