<?php require 'vendor/autoload.php'; Predis\Autoloader::register(); $client = new Predis\Client(array('host' => '127.0.0.1', 'port' => 6379), array('prefix' => 'php:')); $client->set("string:my_key", "Hello World"); $client->get("string:my_key"); # "Hello World" $client->incr("string:counter"); $client->mget(array("string:my_key", "string:counter")); # array('Hello World', '2') $client->rpush("list:my_list", "item1", "item2"); $client->lpop("list:my_list"); # 'item1' $client->hset("set:redis_book", "title", "Redis Essentials"); $client->hgetall("set:redis_book"); # array('title' => 'Redis Essentials') $client->sadd("set:users", "alice", "bob"); $client->smembers("set:users"); # array('bob', 'alice') $client->zadd("sorted_set:programmers", 1940, "Alan Kay"); $client->zadd("sorted_set:programmers", 1912, "Alan Turing"); $client->zrange("sorted_set:programmers", 0, -1, "withscores"); # array('Alan Turing' => 1912, 'Alan Kay' => 1940)
require "../shared.php"; $predis = new Predis\Client($single_server); //some common //var_dump($predis->zadd('zset-key1','a',3,'b',2,'c',1)); //var_dump($predis->zadd('zset-key1',3,'a',2,'b')); //var_dump($predis->zadd('zset-key1',2,'b',1,'c')); //var_dump($predis->zcard('zset-key1')); //var_dump($predis->zincrby('zset-key1',3,'c')); //var_dump($predis->zscore('zset-key','b')); //var_dump($predis->zrank('zset-key','c')); //var_dump($predis->zcount('zset-key',0,3)); //var_dump($predis->zrem('zset-key','b')); //var_dump($predis->zrange('zset-key',0,-1,array( 'withscores' => true))); //A sample interaction showing ZINTERSTORE and ZUNIONSTORE /* var_dump($predis->zadd('zset-1',1,'a')); var_dump($predis->zadd('zset-1',2,'b')); var_dump($predis->zadd('zset-1',3,'c')); var_dump($predis->zadd('zset-2',4,'b')); var_dump($predis->zadd('zset-2',0,'d')); var_dump($predis->zadd('zset-2',1,'c')); var_dump($predis->zinterstore('zset-i',['zset-1','zset-2'])); //交集运算 */ var_dump($predis->zrange('zset-i', 0, -1, array('withscores' => true))); var_dump($predis->zunionstore('zset-u', ['zset-1', 'zset-2'], array('aggregate' => 'min'))); var_dump($predis->zrange('zset-i', 0, -1, array('withscores' => true))); var_dump($predis->sadd('set-1', 'a', 'b')); var_dump($predis->zunionstore('zset-u2', ['zset-1', 'zset-2', 'set-1'])); var_dump($predis->zrange('zset-u2', 0, -1, array('withscores' => true)));
// - SCAN (iterates over the keyspace) // - SSCAN (iterates over members of a set) // - ZSCAN (iterates over members and ranks of a sorted set) // - HSCAN (iterates over fields and values of an hash). // Predis provides a specialized abstraction for each command based on standard // SPL iterators making it possible to easily consume SCAN-based iterations in // your PHP code. // // See http://redis.io/commands/scan for more details. // // Create a client using `2.8` as a server profile (needs Redis 2.8!) $client = new Predis\Client($single_server, array('profile' => '2.8')); // Prepare some keys for our example $client->del('predis:set', 'predis:zset', 'predis:hash'); for ($i = 0; $i < 5; $i++) { $client->sadd('predis:set', "member:{$i}"); $client->zadd('predis:zset', -$i, "member:{$i}"); $client->hset('predis:hash', "field:{$i}", "value:{$i}"); } // === Keyspace iterator based on SCAN === echo 'Scan the keyspace matching only our prefixed keys:', PHP_EOL; foreach (new Iterator\Keyspace($client, 'predis:*') as $key) { echo " - {$key}", PHP_EOL; } /* OUTPUT Scan the keyspace matching only our prefixed keys: - predis:zset - predis:set - predis:hash */ // === Set iterator based on SSCAN ===
/** * {@inheritdoc} */ public function send(MessageInterface $message) { $this->redis->sadd($this->key, $this->serializer->serialize($message)); }
$ip4 = $ip; } else { $ip6 = $ip; } //Did the client stop the torrent? //We dont care about other events if (isset($_GET['event']) && $_GET['event'] === 'stopped') { $r->srem($info_hash, $peer_id); die(track(array())); //The RFC says its OK to return whatever we want when the client stops downloading, //however, some clients will complain about the tracker not working, hence we return //an empty bencoded peer list } //Update information of this peer and get all the other peers downloading the same file. $map = $info_hash . ':' . $peer_id; $r->sadd('torrents', $info_hash); $r->sadd($info_hash, $peer_id); $pid_list = $r->smembers($info_hash); if (isset($ip4)) { $r->hmset($map, 'ip4', $ip4, 'port', $port, 'seed', $is_seed); } else { $r->hmset($map, 'ip6', $ip6, 'port', $port, 'seed', $is_seed); } $r->expire($map, __INTERVAL + __CLIENT_TIMEOUT); $peers = array(); $i = $s = $l = 0; foreach ($pid_list as $pid) { if ($pid == $peer_id) { continue; } $temp = $r->hmget($info_hash . ':' . $pid, 'ip4', 'ip6', 'port', 'seed');
public static function setAddAndReturn(Predis\Client $client, $keyName, array $values, $wipeOut = 0) { if ($wipeOut == true) { $client->del($keyName); } foreach ($values as $value) { $client->sadd($keyName, $value); } return $values; }
<?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * Description of sets * * @author changdi */ require "../shared.php"; $predis = new Predis\Client($single_server); var_dump($predis->sadd('set-key', 'a', 'b', 'c')); var_dump($predis->srem('set-key', 'c', 'd')); var_dump($predis->srem('set-key', 'c', 'd')); var_dump($predis->scard('set-key')); var_dump($predis->smembers('set-key')); var_dump($predis->smove('set-key', 'set-key2', 'a')); var_dump($predis->smove('set-key', 'set-key2', 'c')); var_dump($predis->smembers('set-key'));
<?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * Description of sets_diff_inter_union * 差集运算、交集运算以及并集运算 * @author changdi */ require "../shared.php"; $predis = new Predis\Client($single_server); var_dump($predis->sadd('skey1', 'a', 'b', 'c', 'd')); var_dump($predis->sadd('skey2', 'c', 'd', 'e', 'f')); var_dump($predis->sdiff('skey1', 'skey2')); //差集 var_dump($predis->sinter('skey1', 'skey2')); //并集 var_dump($predis->sunion('skey1', 'skey2')); //并集