Comparison Index |
Memcached |
Redis |
What is |
Memcached is in-memory key-value store,
originally intended for caching purpose. |
Redis is in-memory data structure store,
used as database, cache and message broker. |
Description |
MemcacheD is easy, simply designed yet
powerful. Its simple design promotes fast deployment, ease of exaggeration,
and solves many problems related to large data caches. It has its inbuilt
APIs which provide a very large hash table distributed across multiple
machines & uses internal memory management to provide more efficiency.
MemcacheD supports only String data type which are ideal for storing
read-only data. Memcached is a volatile in-memory key-value origin. It is
multi-threaded and used primarily for caching objects. |
Redis is an open source in-memory data
structure store which also can be used as a database as well as caching. It
supports almost all types of data structures such as strings, hashes, lists,
sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial
indexes through radius queries. Redis also can be used for messaging system
used as pub/sub. |
Primary database model |
Memcached follows Key-value store database
model. |
Redis also follows Key-value store database
model. |
Developed By |
Memcached is developed by Danga Interactive. |
Redis is developed by Salvatore Sanfilippo. |
Initial release |
Memcached was initially released in 2003. |
Redis was initially released in 2009. |
Current release |
Memcached current version is 1.5.1, released
in August 2017. |
Redis current version is 4.0.2, released in
September 2017. |
License |
Memcached is free and open source. |
Redis is also free and open source. |
Cloud-based |
No |
No |
Implementation language |
Memcached is implemented in C language. |
Redis is also implemented in C language. |
Server operating systems |
FreeBSD Linux OS X Unix Windows |
BSD Linux OS X Windows |
Supported programming languages |
.Net, C, C++, ColdFusion, Erlang, Java,
Lisp, Lua, OCaml, Perl, PHP, Python, Ruby |
C,C#,C++, Clojure, Crystal, D, Dart, Elixir,
Erlang, Fancy, Go, Haskell, Haxe, Java, JavaScript (Node.js), Lisp, Lua,
MatLab, Objective-C, OCaml info, Perl, PHP, Prolog, Pure Data, Python, R,
Rebol, Ruby, Rust, Scala, Scheme, Smalltalk, Tcl |
Server-side scripts |
No |
Lua |
Triggers |
No |
No |
Partitioning methods |
None |
Sharding |
Replication methods |
None |
Master-slave replication |
MapReduce |
No |
No |
Foreign keys |
No |
No |
Transaction concepts |
No |
Optimistic locking, atomic execution of
commands blocks and scripts |
Concurrency |
Yes |
Yes |
Durability |
No |
Yes |
User concepts |
Yes |
Simple password-based access control |
Installation |
Memcached is little bit complicated to
install and run. |
Installing Redis is so much easier. No
dependencies required. |
Memory Usage |
MemcacheD is more memory efficient than
Redis because it consumes comparatively less memory resources for metadata. |
Redis is more memory efficient, only after
you use Redis hashes. |
Persistence |
Memcached doesn't use persistent data. While
using Memcached, data might be lost with a restart and rebuilding cache is a
costly process. |
Redis can handle persistent data. By default
it syncs data to the disk at least every 2 seconds, offering optional &
tuneable data persistence meant to bootstrap the cache after a planned
shutdown or an unintentional failure. While we tend to regard the data in
caches as volatile and transient, persisting data to disk can be quite
valuable in caching scenarios. |
Replication |
Memcached does not support replication. |
Redis supports master-slave replication. |
Storage type |
MemcacheD stores variables in its memory and
retrieves any information directly from the server memory instead of hitting
the database again. |
Redis is like a database that resides in
memory. It executes (reads and writes) a key/value pair from its database to
return the result set. That's why it is used by develepors for real-time
metrics and analytics. |
Execution Speed and Performance |
MemcacheD is very good to handle high
traffic websites. It can read many information at a time and give you back at
a great response time. |
Redis can neither handle high traffic on
read nor heavy writes. |
Data Structure |
MemcacheD uses only strings and integers in
its data structure. So, everything you save can either be a string or an
integer. It is complicated because with integers, the only data manipulation
you can do is adding or subtracting them. If you need to save arrays or
objects, you will have to serialize them first and then save them. To read
them back, you will need to un-serialize. |
Redis has stronger data structures, which
can handle not only strings integers but also binary-safe strings, lists of
binary-safe strings, sets of binary-safe strings and sorted sets. |
Key Length |
Memcached's key length has a maximum of 250
bytes. |
Redis' key-length has a maximum of 2GB. |
0 Comments