KVolve: an extension to the popular Redis database, to support the evolution of high-availability applications and their data online.
C Tcl HTML Perl Ruby M4 Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
redis-2.8.17
target_programs
tests/redis_server_tests
.gitignore
README.md

README.md

See our Kvolve paper for full description

Kvolve files: (See redis-2.8.17/src/)

  • kvolve.c: code for kvolve wrapper functions, command table, and command parsing
  • kvolve.h: header listing all implemented wrapper functions
  • kvolve_internal.c: update mechanics, internal state tracking, version tracking
  • kvolve_internal.h: header/documentation for update mechanics
  • kvolve_upd.h: header/documentation for user-supplied update functions
  • uthash.h: a hashtable to help with data tracking

Getting started:

Tested on Ubuntu 12.04, 14.04, RHEL 6.5

Making redis:

make in redis-2.8.17
If you get an error about jemalloc: cd deps; make jemalloc

To run:

./redis-2.8.17/src/redis-server

To run tests:

tests/redis_server_tests$ ./run_all_tests.sh
(tests in parent directory, not tests in redis directory)

Changes made to redis-2.8.17 source code (7 lines of code in redis-2.8.17/src/):

4 lines of code to implement the version tag:

  • networking.c (2 changes)
    < #include "kvolve.h"
    < kvolve_process_command(c);

  • redis.h (1 change)
    < int vers;

  • object.c (1 change)
    < o->vers = -1;

3 lines of code so version data can be stored to the database:

  • rdb.c:
    int vers;
    if ((vers = rdbLoadType(&rdb)) == -1) goto eoferr;
    val->vers = vers;