How does Pelikan cache compare to memcached/redis/...?
We envision Pelikan to have significant overlap, in terms of functionality, with many popular cache server implementations. After all, we are aiming to replace our use of Memcached (Twemcache) and Redis at Twitter with Pelikan. However, Pelikan is not a strict superset or subset of any of them. Without trying to be comprehensive, here are some notable similarities and differences:
* pelikan_twemcache fully replaces twemcache, and supports most of the commands specified by the memcached ASCII/text protocol. However, unlike memcached, pelikan_twemcache only has one worker thread per instance.
* pelikan_redis (in progress) will support a subset of data structures provided by Redis. However, we have no plan to add features such as master/slave replication, message queue, or on-disk data persistence. We also will manage memory using slabs/items instead of directly relying on external memory allocators.
* All binaries come with the ability to log each command for traffic analysis, which are not part of Memcached or Redis.
* pelikan_slimcache implements cuckoo hashing to store bounded-sized key/value pairs with minimum (~6-byte) overhead.
* Pelikan enforces the separation of data-plane and control-plane functionalities by using separate threads; further more, server and worker run on different threads as well, and there are no locks anywhere in our system.
6 comments
[ 3.3 ms ] story [ 24.3 ms ] threadhttps://github.com/getpelican/pelican
We envision Pelikan to have significant overlap, in terms of functionality, with many popular cache server implementations. After all, we are aiming to replace our use of Memcached (Twemcache) and Redis at Twitter with Pelikan. However, Pelikan is not a strict superset or subset of any of them. Without trying to be comprehensive, here are some notable similarities and differences:
* pelikan_twemcache fully replaces twemcache, and supports most of the commands specified by the memcached ASCII/text protocol. However, unlike memcached, pelikan_twemcache only has one worker thread per instance. * pelikan_redis (in progress) will support a subset of data structures provided by Redis. However, we have no plan to add features such as master/slave replication, message queue, or on-disk data persistence. We also will manage memory using slabs/items instead of directly relying on external memory allocators. * All binaries come with the ability to log each command for traffic analysis, which are not part of Memcached or Redis. * pelikan_slimcache implements cuckoo hashing to store bounded-sized key/value pairs with minimum (~6-byte) overhead. * Pelikan enforces the separation of data-plane and control-plane functionalities by using separate threads; further more, server and worker run on different threads as well, and there are no locks anywhere in our system.