Skip to content

KVolve: an extension to the popular Redis database, to support the evolution of high-availability applications and their data online.

Notifications You must be signed in to change notification settings

plum-umd/kvolve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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;

About

KVolve: an extension to the popular Redis database, to support the evolution of high-availability applications and their data online.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages