]> git.saurik.com Git - redis.git/commitdiff
version incremented to 1.050 to distinguish from 1.001 stable and next stable version...
authorantirez <antirez@gmail.com>
Thu, 22 Oct 2009 14:15:26 +0000 (16:15 +0200)
committerantirez <antirez@gmail.com>
Thu, 22 Oct 2009 14:15:26 +0000 (16:15 +0200)
Changelog
redis.c

index fa9174cd504d8a750d7383099e7ca1a1fc0e3172..0d561e1ed1a6e85378e23fd5a65f187115019d9c 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,15 @@
+2009-10-21 TODO updated
+2009-10-21 SRANDMEMBER added
+2009-10-20 Imporant bug leading to data corruption fixed (NOT affecting stable distribution), Tcl client lib MSET/MSETNX implementation fixed, Added new tests for MSET and MSETNX in test-redis.tcl
+2009-10-17 added multi-bulk protocol support to redis-cli and support for MSET and MSETNX
+2009-10-17 MSET fixed, was not able to replace keys already set for a stupid bug
+2009-10-16 some dead code removed
+2009-10-16 multi bulk input protocol fixed
+2009-10-16 MSET and MSETNX commands implemented
+2009-10-07 undoed all the sds hacking that lead just to random bugs and no memory saving ;)
+2009-10-07 initial multi-bulk query protocol, this will allow MSET and other interesting features.
+2009-10-03 benchmark now outputs the right command line to shorten the TIME_WAIT interval on Mac OS X when keep alive is set
+2009-10-02 Issue 69 fixed. Object integer encoding now works with replication and MONITORing again.
 2009-09-18 LREM fixed, used to crash since the new object integer encoding is on the stage
 2009-09-17 maxmemory didn't worked in 64 systems for values > 4GB since it used to be an unsigned int. Fixed
 2009-09-10 incremented version number to 1.001, AKA Redis edge is no longer stable...
diff --git a/redis.c b/redis.c
index 31402663251a85867bf066776cd5336443d3c466..41ebe18a0c5e17a08d63d03b0bda3e2ca2353ff1 100644 (file)
--- a/redis.c
+++ b/redis.c
@@ -27,7 +27,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define REDIS_VERSION "1.001"
+#define REDIS_VERSION "1.050"
 
 #include "fmacros.h"
 #include "config.h"
 #define REDIS_STRING 0
 #define REDIS_LIST 1
 #define REDIS_SET 2
-#define REDIS_HASH 3
+#define REDIS_ZSET 3
+#define REDIS_HASH 4
 
 /* Objects encoding */
 #define REDIS_ENCODING_RAW 0    /* Raw representation */
@@ -304,6 +305,11 @@ typedef struct _redisSortOperation {
     robj *pattern;
 } redisSortOperation;
 
+typedef struct zset {
+    dict *dict;
+    tree *tree;
+} zset;
+
 struct sharedObjectsStruct {
     robj *crlf, *ok, *err, *emptybulk, *czero, *cone, *pong, *space,
     *colon, *nullbulk, *nullmultibulk,
@@ -633,6 +639,12 @@ static void redisLog(int level, const char *fmt, ...) {
  * keys and radis objects as values (objects can hold SDS strings,
  * lists, sets). */
 
+static void dictVanillaFree(void *privdata, void *val)
+{
+    DICT_NOTUSED(privdata);
+    zfree(val);
+}
+
 static int sdsDictKeyCompare(void *privdata, const void *key1,
         const void *key2)
 {
@@ -709,6 +721,15 @@ static dictType setDictType = {
     NULL                       /* val destructor */
 };
 
+static dictType zsetDictType = {
+    dictEncObjHash,            /* hash function */
+    NULL,                      /* key dup */
+    NULL,                      /* val dup */
+    dictEncObjKeyCompare,      /* key compare */
+    dictRedisObjectDestructor, /* key destructor */
+    dictVanillaFree            /* val destructor */
+};
+
 static dictType hashDictType = {
     dictObjHash,                /* hash function */
     NULL,                       /* key dup */
@@ -1810,6 +1831,12 @@ static robj *createSetObject(void) {
     return createObject(REDIS_SET,d);
 }
 
+static robj *createZsetObject(void) {
+    dict *d = dictCreate(&zsetDictType,NULL);
+    if (!d) oom("dictCreate");
+    return createObject(REDIS_ZSET,d);
+}
+
 static void freeStringObject(robj *o) {
     if (o->encoding == REDIS_ENCODING_RAW) {
         sdsfree(o->ptr);