<?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)
Esempio n. 2
3
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 ===
Esempio n. 4
0
 /**
  * {@inheritdoc}
  */
 public function send(MessageInterface $message)
 {
     $this->redis->sadd($this->key, $this->serializer->serialize($message));
 }
Esempio n. 5
0
    $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');
Esempio n. 6
0
 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;
 }
Esempio n. 7
0
<?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'));
Esempio n. 8
-1
<?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'));
//并集