Scaling example
Often the information can not fit in memory. In this case you can do "sharding" and scale between several Redis servers on several phisical servers.
The tricky part is the hash we use "crc32(md5($key))" which spreads the information between the instances. Note this setup will fail if some of the servers fail. To avoid this you man use replication.
// Servers list...
$servers = array(
"127.0.0.1:6379",
"127.0.0.1:6397",
"127.0.0.1:6739"
);
// Array of Redis()
$r = array();
// Make connection to each server...
foreach($servers as $s){
list($host, $port") = explode(":", $s);
$rx = new Redis();
$rx->connect($host, $port);
$r[] = $rx;
}
// Key to be set / get
$key = "user:435345:first_name";
// Make hash value;
$hash = crc32(md5($key)) % count($servers);
$r[$hash]->set($key, "Peters");
// ...
echo $r[$hash]->get($key);
Redis connection note
The example uses generic connection to the Redis server. To make the example work with our service you will need to use code similar to this one:
// change these parameter according to the information in your instance list
$host = '85.25.11.9';
$port = 1234;
$password = 'somehashcode';
$db = 0;
$r = new Redis();
$r->connect($host, $port);
$r->auth($password);
$r->select($db);
blog comments powered by Disqus
Code library
Note:
Because we want this page to be useful for memcached users,
we tagged with memcached all examples that may be "recreated" for memcached server.
MySQL cache in PHP
How to use Redis for cache MySQL queries in a way similar to memcached
Date: 2011-07
Tags: cache memcached mysql php
How to prevent website to be web-scraped
How to use Redis to prevent web-scraping parsing and web-spam
Date: 2011-07
Tags: memcached webstats security php anti-spam
'Rotating' news
How to do 'Rotating' news list
Date: 2011-07
Tags: php
Show random element
How pool random element from news list
Date: 2011-07
Tags: php
Accounting / Vote example
How Redis can help us with Accounting / Vote / Like / Recommend / +1 clicks
Date: 2011-07
Scoreboard example
How to implement fast hi-score table
Date: 2011-07
Tags: php
Scaling example
How to scale Redis on several servers using sharding
Date: 2011-07
Tags: cloud memcached sharding scaling php
Distributed work pool / pipeline example
How to implement distributed work pool and to scale some work across many computers
Date: 2011-07
Simple realtime web counter
How to collect and store information for page visitors
Date: 2011-07
Emulation of expiration of the set members
How to make set members to expire
Date: 2011-07
Tags: php
Lock example
How Redis can help us with user level locks
Date: 2011-08-23
Message queue example
Creating distributed message queue
Date: 2011-09-17
Index example
Building reverse index using sets
Date: 2011-11-01
Tags: php
Using Redis for MySQL autoincrement
Using Redis to speed up MySQL inserts
Date: 2011-01-13
Using Redis as "data buffer"
Using Redis for caching MySQL or Cassandra data inserts
Date: 2012-08-04
Tags: cloud mysql sharding webstats scaling php cassandra
Calculating how many visitors are on the same webpage using rolling average
How to produce 'There are 123 visitors on this page' sign
Date: 2011-07