You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Guo XIn
291e661666
|
5 months ago | |
---|---|---|
.. | ||
extra/memcached | 5 months ago | |
include | 5 months ago | |
scripts | 5 months ago | |
src | 5 months ago | |
unit | 5 months ago | |
CMakeLists.txt | 5 months ago | |
FindMemcached.cmake | 5 months ago | |
README | 5 months ago | |
atomics.cmake | 5 months ago | |
memcached_path.pl.in | 5 months ago | |
memclient.pl | 5 months ago | |
sandbox.sh.in | 5 months ago |
README
-------------------------------------------------------------------------
The Memcache API for MySQL Cluster 7.2
-------------------------------------------------------------------------
Memcached is a high-performance data cache. Memcached servers are often
expected to serve 100,000 operations per second or more.
The API is based on Memcached 1.6 from http://www.memcached.org/.
It is designed to do everything memcached does, with similar performance,
and automatically persist data to MySQL Cluster.
The Memcache API is highly configurable. Multiple memcached servers can connect
to multiple clusters and access data from many different tables. It supports a
large number of cache policies, based on the prefix of a memcache key. Some
keys can be stored in local cache only, while other keys are written though
synchronously to the database but stored in cacne, and still other keys go
directly to the database without using a local cache at all.
In the default configuration, all values will be persistently stored in
MySQL Cluster, except keys that begin with "mc:" or "t:" which are treated
specially.
-------------------------------------------------------------------------
QUICK START
-------------------------------------------------------------------------
STARTING THE SERVER
-------------------
To create a simple sandbox to demonstrate MySQL Cluster with memcache,
run "sandbox.sh start", then continue reading.
Alternately, if you have a running cluster (with room to add a new API node)
and want to add a memcache server to it, there are two steps.
(1) Create the "ndbmemcache" configuration database
# mysql -u root < ndb_memcache_metadata.sql
(2) Start a memcached server
# ../bin/memcached -E ../lib/ndb_engine.so
It is not possible to start a memcached server until the configuration tables
have been created.
TESTING
-------
Once the server is running, if you have installed the libmemcached clients
(from http://libmemcached.org), you should be able to run "memcapable" and
see all tests pass.
You can also test the installation using mysql-test-run. From the mysql-test
directory, run "mysql-test-run.pl --suite=ndb_memcache". This is a preview
release, so test failures are still expected on some platforms.
If you see a test failure some other problem, please report it on the "Cluster"
forum at http://forums.mysql.com/
RUN SOME CLIENT COMMANDS
--------------------------
From another window, you can run any sort of memcached client using either the
text protocol or the binary protocol -- including plain "telnet".
$ telnet localhost 11211
Escape character is '^]'.
set key1 0 0 4
abcd
get key1
delete key1
-------------------------------------------------------------------------
UPGRADING THE CONFIGURATION SCHEMA FROM EARLIER PRE-RELEASE VERSIONS
-------------------------------------------------------------------------
The current version of the configuration schema and demonstration tables
is 1.2. The SQL script "update_to_1.2.sql" is available and can be used
to update version 1.1 configuration and demo tables to version 1.2.
-------------------------------------------------------------------------
THE DEFAULT SERVER ROLE
-------------------------------------------------------------------------
In the default configuration, all keys except those beginning with "mc:", "t:"
or "b:" are stored in the table called "demo_table" in the ndbmemcache schema.
In this table, memcache keys are stored in the 250-byte VARCHAR column called
mkey, and memcache values are stored in the VARBINARY(13500) column called
string_value. Values larger than 13,500 bytes cannot be stored in this table.
Keys beginning with "b:" allow storage of large values. For this prefix,
a main table row is stored in the demo_table_large table, and large values
are partitioned into stripes in the table called external_values. The size
limit on large objects depends on the stripe size of the parts table; in
the demonstration schema, the size limit is approximately 3.5 MB. However,
memcached itself also imposes a size limit values, which by default is 1 MB.
Keys beginning with "mc:" are stored only in local cache (their cache policy
is "mc-only").
Keys beginning with "t:" demonstrate some other features of the memcached
server, including:
* using tab-separated values to store data in multiple columns.
* automatically expiring stored data based on stored expiration times
* storing of memcached flags in the database
These values are stored in "demo_table_tabs". Note that the key to this table
is an integer, so valid memcache keys are "t:1", "t:2", etc.
-------------------------------------------------------------------------
LIMITATIONS
-------------------------------------------------------------------------
"SET" and "ENUM" columns rely on metadata which is only properly available to
the MySQL server. While they may work in some situations, they are not
fully supported. Bitfields are not supported at all. TEXT and BLOB columns
are also not supported, though BLOB-like large values can be stored in an
external values table, as described above.