<?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)
/** * 点赞一条feed */ public function praise() { $feedid = intval(I('post.feedid', '')); \Predis\Autoloader::register(); $redis = new \Predis\Client(); if ($redis->zscore('feed:' . $feedid . ':praise', ACPopedom::getID())) { $res = $redis->zrem('feed:' . $feedid . ':praise', ACPopedom::getID()); $rs = $redis->hincrby('feed:' . $feedid, 'praise', -1); $this->ajaxReturn($res && $rs ? array('status' => true) : array('status' => false, 'message' => '由于服务器君罢工,取消点赞失败失败啦..')); } else { $rs = $redis->zadd('feed:' . $feedid . ':praise', time(), ACPopedom::getID()); $result = $redis->hincrby('feed:' . $feedid, 'praise', 1); $this->ajaxReturn($result && $rs ? array('status' => true, 'message' => '点赞成功了,么么哒') : array('status' => false, 'message' => '由于服务器君罢工,点赞失败失败啦..')); } }
// - 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 === echo 'Scan members of `predis:set`:', PHP_EOL;
public static function zsetAddAndReturn(Predis\Client $client, $keyName, array $values, $wipeOut = 0) { // $values: array(SCORE => VALUE, ...); if ($wipeOut == true) { $client->del($keyName); } foreach ($values as $value => $score) { $client->zadd($keyName, $score, $value); } return $values; }