mirror of
https://github.com/kennethreitz-archive/redis-docs.git
synced 2026-06-05 23:40:18 +00:00
139 lines
4.5 KiB
ReStructuredText
139 lines
4.5 KiB
ReStructuredText
Features (DRAFT)
|
|
================
|
|
|
|
Checking Redis for the first time? Here your will find the most
|
|
important features, and pointers to a lot more information.
|
|
|
|
|
|
Speed
|
|
-----
|
|
|
|
Redis is written in ANSI C, and loads the whole dataset in memory,
|
|
so it is wicked ***fast**!* Up to 110,000
|
|
`SETs <SETs.html>`_/second, 81,000 GETs/second can be achieved in
|
|
an entry level Linux box. Read more about Redis
|
|
`Speed <Speed.html>`_.
|
|
Also Redis supports `Pipelining <Pipelining.html>`_ of commands and
|
|
`getting and setting múltiple values in a single command <MultiBulkCommands.html>`_
|
|
to speed up communication with the client libraries.
|
|
|
|
|
|
Persistence
|
|
-----------
|
|
|
|
While all the data lives in memory, changes are *asynchronously*
|
|
saved on disk using flexible policies based on elapsed time and/or
|
|
number of updates since last save.
|
|
If you can't afford losing some data, starting on version 1.1
|
|
(currently in beta but you can download it from the Git repository)
|
|
Redis supports an append-only file persistence mode. Check more on
|
|
`Persistence <Persistence.html>`_, or read the
|
|
`AppendOnlyFileHowto <AppendOnlyFileHowto.html>`_ for more
|
|
information.
|
|
|
|
|
|
Support for Data Structures
|
|
---------------------------
|
|
|
|
Values in Redis can be `Strings <Strings.html>`_ as in a
|
|
conventional key-value store, but also `Lists <Lists.html>`_,
|
|
`Sets <Sets.html>`_, and `SortedSets <SortedSets.html>`_ (to be
|
|
support in `version 1.1 <RoadMap.html>`_). This data types allow
|
|
pushing/poping elements, or adding/removing them, also perform
|
|
server side union, intersection, difference between sets, and so
|
|
forth depending on the types. Redis supports different kind of
|
|
sorting abilities for `Sets <Sets.html>`_ and
|
|
`Lists <Lists.html>`_.
|
|
You can think in Redis as a **Data Structures Server**, that allows
|
|
you to model non trivial problems. Read
|
|
`Data Types <DataTypes.html>`_ to learn more about the way Redis
|
|
handle `Strings <Strings.html>`_, and the
|
|
`Commands <Commands.html>`_ supported by `Lists <Lists.html>`_,
|
|
`Sets <Sets.html>`_ and `SortedSets <SortedSets.html>`_
|
|
|
|
|
|
Atomic Operations
|
|
-----------------
|
|
|
|
Redis operations working on the different Data Types are
|
|
**atomic**, so setting or increasing a key, adding and removing
|
|
elements from a set, increasing a counter will all be accomplished
|
|
safely.
|
|
|
|
|
|
Variety of Supported Languages
|
|
------------------------------
|
|
|
|
Ruby, Python, Twisted Python, PHP, Erlang, Tcl, Perl, Lua, Java,
|
|
Scala, Clojure, choose your poison. Check the list of
|
|
`Supported Languages <SupportedLanguages.html>`_ for all the
|
|
details.
|
|
If your favorite language is not supported yet, you can write your
|
|
own client library, as the `Protocol <ProtocolSpecification.html>`_
|
|
is pretty simple.
|
|
|
|
|
|
Master/Slave Replication
|
|
------------------------
|
|
|
|
Redis supports a very simple and fast Master/Slave replication. Is
|
|
so simple it takes only one line in the
|
|
`configuration file <Configuration.html>`_ to set it up, and 21
|
|
seconds for a Slave to complete the initial sync of 10 MM key set
|
|
in a Amazon EC2 instance.
|
|
Read more about Master/Slave `Replication <Replication.html>`_.
|
|
|
|
|
|
Sharding
|
|
--------
|
|
|
|
Distributing the dataset across multiple Redis instances is easy in
|
|
Redis, as in any other key-value store. And this depends basically
|
|
on the `Languages <Supported.html>`_ client libraries being able to
|
|
do so.
|
|
Read more about `Sharding <Sharding.html>`_ if you want to know
|
|
more abour distributing data and workload in Redis.
|
|
|
|
|
|
Hot Backups
|
|
-----------
|
|
|
|
TODO
|
|
|
|
|
|
Simple to Install, Setup and Manage
|
|
-----------------------------------
|
|
|
|
Installing Redis requires little more than downloading it,
|
|
uncompressing it and running make. Management is near zero, so you
|
|
can start using Redis in a matter of minutes.
|
|
Go on and read about Redis `installation <Installation.html>`_, its
|
|
`Setup <Setup.html>`_ and `Management <Management.html>`_.
|
|
|
|
|
|
Portable
|
|
--------
|
|
|
|
Redis is written in ANSI C and works in most POSIX systems like
|
|
Linux, BSD, Mac OS X, Solaris, and so on. Redis is reported to
|
|
compile and work under WIN32 if compiled with Cygwin, but there is
|
|
no official support for Windows currently.
|
|
|
|
|
|
Liberal Licensing
|
|
-----------------
|
|
|
|
Redis is free software released under the very liberal BSD license.
|
|
|
|
|
|
What's next?
|
|
------------
|
|
|
|
Want to get started with Redis? Try the
|
|
`Quick Start <QuickStart.html>`_ you will be up and running in just
|
|
a matter of minutes.
|
|
Check the `Code Samples <CodeSamples.html>`_ and find how you can
|
|
use Redis with your favorite programming language.
|
|
`Compare <Comparisons.html>`_ Redis with other key-value stores,
|
|
like Tokyo Cabinet or Memcached.
|
|
.. |Redis Documentation| image:: redis.png |