X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/f2923becc6cb11dc5cd979ad72a32d1801560df4..fd8ccf4419ab94ab5a9250c0dc7a8d1761056b48:/TODO diff --git a/TODO b/TODO index 4c932d34..bb2c7f91 100644 --- a/TODO +++ b/TODO @@ -1,22 +1,34 @@ -BEFORE REDIS 1.0.0-rc1 +Pre 1.1 todo -- TTL command that returns -1 if a key is not volatile otherwise the time to live of a volatile key. -- Remove max number of args limit -- What happens if the saving child gets killed or segfaults instead of ending normally? Handle this. -- Make sinterstore / unionstore / sdiffstore returning the cardinality of the resulting set. -- maxclients directive -- check 'server.dirty' everywere -- replication automated tests -- Shutdown must kill other background savings before to start saving. Otherwise the DB can get replaced by the child that rename(2) after the parent for some reason. -- Document replication -- Objects sharing configuration, add the directive "objectsharingpool " -- Make sure to convert all the fstat() calls to 64bit versions. -- SINTERCOUNT, SUNIONCOUNT, SDIFFCOUNT +* For now only the last argument gets integer encoded, so make sure that: 1) every multi bulk commands implemented will have the last arg that is indeed a value, and not used otherwise. 2) to explicitly call the function to encode the object in MSET and other commands where there are multiple "values". +* Man pages for MSET MSETNX and SRANDMEMBER. +* Hashes (HSET, HGET, HEXISTS, HLEN, ...). +* ZSETs +* An utility able to export an .rdb file into a text-only JSON dump, we can't live anymore without such a tool. Probably an extension to redis-cli. -AFTER 1.0 stable release +After 1.1 todo -- Use partial qsort for SORT + LIMIT -- Locking primitives +* Expiring algorithm should be adaptive, if there are a lot of keys with an expire set and many of this happen to be already expired it should be, proportionally, more aggressive. + * Add a command to inspect the currently selected DB index + * Consistent hashing implemented in all the client libraries having an user base + * SORT: Don't copy the list into a vector when BY argument is constant. + * SORT ... STORE keyname. Instead to return the SORTed data set it into key. + * Profiling and optimization in order to limit the CPU usage at minimum + * Write the hash table size of every db in the dump, so that Redis can resize the hash table just one time when loading a big DB. + * Elapsed time in logs for SAVE when saving is going to take more than 2 seconds + * LOCK / TRYLOCK / UNLOCK as described many times in the google group + * Replication automated tests + * some kind of sorted type, example: + ZADD mykey foo 100 + ZADD mykey bar 50 + ZRANGE mykey 0 1 => bar foo + This is able to take elements sorted because a binary tree is used to store + the elements by 'score', with the actual value being the key. On the other + side the type also takes an hash table with key->score mapping, so that when + there is an update we lookup the current score and can traverse the tree. + * BITMAP / BYTEARRAY type? + * LRANGE 4 0 should return the same elements as LRANGE 0 4 but in reverse order (only if we get enough motivated requests about it) + * zmalloc() should avoid to add a private header for archs where there is some other kind of libc-specific way to get the size of a malloced block. FUTURE HINTS