Memcached¶
Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.
Note
For this guide you should be familiar with the basic concepts of supervisord.
License¶
Memcached is distributed under the Revised BSD license.
Installation¶
Download memcached¶
[isabell@stardust ~]$ wget https://memcached.org/latest -O ~/memcached-latest.tar.gz
--2020-01-17 17:41:28-- https://memcached.org/latest
Resolving memcached.org (memcached.org)... 107.170.231.145
Connecting to memcached.org (memcached.org)|107.170.231.145|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://www.memcached.org/files/memcached-1.5.20.tar.gz [following]
--2020-01-17 17:41:29-- https://www.memcached.org/files/memcached-1.5.20.tar.gz
Resolving www.memcached.org (www.memcached.org)... 107.170.231.145
Connecting to www.memcached.org (www.memcached.org)|107.170.231.145|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 531035 (519K) [application/octet-stream]
Saving to: '/home/isabell/memcached-latest.tar.gz'
100%[================================================>] 531,035 810KB/s in 0.6s
2020-01-17 17:41:31 (810 KB/s) - '/home/isabell/memcached-latest.tar.gz' saved [531035/531035]
Extract memcached¶
[isabell@stardust ~]$ tar -zxvf memcached-latest.tar.gz
memcached-1.5.20/
memcached-1.5.20/m4/
[…]
memcached-1.5.20/sasl_defs.c
memcached-1.5.20/Makefile.am
memcached-1.5.20/jenkins_hash.c
[isabell@stardust ~]$
Build memcached¶
[isabell@stardust ~]$ cd memcached-1.x.x/
[isabell@stardust memcached-1.x.x]$ ./configure && make && make test
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
[…]
File 'slabs.c' Lines executed:86.53% of 616 Creating 'slabs.c.gcov' File '/usr/include/stdlib.h' Lines executed:50.00% of 2 Creating 'stdlib.h.gcov'
File 'stats.c' Lines executed:90.36% of 83 Creating 'stats.c.gcov'
File 'thread.c' Lines executed:81.43% of 377 Creating 'thread.c.gcov'
File 'util.c' Lines executed:87.96% of 108 Creating 'util.c.gcov'
[isabell@stardust memcached-1.x.x]$
Try running memcached
to make sure everything works:
[isabell@stardust memcached-1.x.x]$ ./memcached -vvvv
slab class 1: chunk size 96 perslab 10922
slab class 2: chunk size 120 perslab 8738
slab class 3: chunk size 152 perslab 6898
slab class 4: chunk size 192 perslab 5461
[…]
Nothing left to crawl for 251
Nothing left to crawl for 252
Nothing left to crawl for 253
Nothing left to crawl for 254
Nothing left to crawl for 255
LRU crawler thread sleeping
If no errors occur, then everything should be fine and you can exit the program with Ctrl
+ C
.
Copy the memcached
binary to your ~/bin folder:
[isabell@stardust memcached-1.x.x]$ cp memcached ~/bin/
[isabell@stardust memcached-1.x.x]$
Configuration¶
Setup daemon¶
Use your favourite editor to create ~/etc/services.d/memcached.ini
with the following content:
[program:memcached]
command=memcached --port 11211 --listen=127.0.0.1
autostart=yes
autorestart=yes
After creating the configuration, tell supervisord to refresh its configuration and start the service:
[isabell@stardust ~]$ supervisorctl reread
SERVICE: available
[isabell@stardust ~]$ supervisorctl update
SERVICE: added process group
[isabell@stardust ~]$ supervisorctl status
SERVICE RUNNING pid 26020, uptime 0:03:14
[isabell@stardust ~]$
If it’s not in state RUNNING, check your configuration.
Testing memcached¶
Test if memcached is responding on it’s assigned port by issuing the following command to display the current configuration parameters.
[isabell@stardust ~]$ echo "stats settings" | nc localhost 11211
STAT maxbytes 67108864
STAT maxconns 1024
STAT tcpport 2021
[…]
STAT worker_logbuf_size 65536
STAT track_sizes no
STAT inline_ascii_response no
END
[isabell@stardust ~]$
Alternative configurations¶
Memcached can be configured to listen for connections using TCP, UDP or Unix sockets and tuned to maximize performance. The official documentation lists the possible options.