安装php的redis扩展:

http://pecl.php.net/package/redis

也可以用PHP直接连redis:

http://www.cnblogs.com/kudosharry/articles/2534694.html

<?php
/*******************************************************************************
* Redis PHP Bindings - http://code.google.com/p/redis/
*
* Copyright 2009 Ludovico Magnocavallo
* Released under the same license as Redis.
*
* Version: 0.1
*
* $Revision$
* $Date$
*
******************************************************************************/ class Redis { var $server;
var $port;
var $_sock; function Redis($host, $port=6379) {
$this->host = $host;
$this->port = $port;
} function connect() {
if ($this->_sock)
return;
if ($sock = fsockopen($this->host, $this->port, $errno, $errstr)) {
$this->_sock = $sock;
return;
}
$msg = "Cannot open socket to {$this->host}:{$this->port}";
if ($errno || $errmsg)
$msg .= "," . ($errno ? " error $errno" : "") . ($errmsg ? " $errmsg" : "");
trigger_error("$msg.", E_USER_ERROR);
} function disconnect() {
if ($this->_sock)
@fclose($this->_sock);
$this->_sock = null;
} function &ping() {
$this->connect();
$this->_write("PING\r\n");
return $this->_simple_response();
} function &do_echo($s) {
$this->connect();
$this->_write("ECHO " . strlen($s) . "\r\n$s\r\n");
return $this->_get_value();
} function &set($name, $value, $preserve=false) {
$this->connect();
$this->_write(
($preserve ? 'SETNX' : 'SET') .
" $name " . strlen($value) . "\r\n$value\r\n"
);
return $preserve ? $this->_numeric_response() : $this->_simple_response();
} function &get($name) {
$this->connect();
$this->_write("GET $name\r\n");
return $this->_get_value();
} function &incr($name, $amount=1) {
$this->connect();
if ($amount == 1)
$this->_write("INCR $name\r\n");
else
$this->_write("INCRBY $name $amount\r\n");
return $this->_numeric_response();
} function &decr($name, $amount=1) {
$this->connect();
if ($amount == 1)
$this->_write("DECR $name\r\n");
else
$this->_write("DECRBY $name $amount\r\n");
return $this->_numeric_response();
} function &exists($name) {
$this->connect();
$this->_write("EXISTS $name\r\n");
return $this->_numeric_response();
} function &delete($name) {
$this->connect();
$this->_write("DEL $name\r\n");
return $this->_numeric_response();
} function &keys($pattern) {
$this->connect();
$this->_write("KEYS $pattern\r\n");
return explode(' ', $this->_get_value());
} function &randomkey() {
$this->connect();
$this->_write("RANDOMKEY\r\n");
$s =& trim($this->_read());
$this->_check_for_error($s);
return $s;
} function &rename($src, $dst, $preserve=False) {
$this->connect();
if ($preserve) {
$this->_write("RENAMENX $src $dst\r\n");
return $this->_numeric_response();
}
$this->_write("RENAME $src $dst\r\n");
return trim($this->_simple_response());
} function &push($name, $value, $tail=true) {
// default is to append the element to the list
$this->connect();
$this->_write(
($tail ? 'RPUSH' : 'LPUSH') .
" $name " . strlen($value) . "\r\n$value\r\n"
);
return $this->_simple_response();
} function <rim($name, $start, $end) {
$this->connect();
$this->_write("LTRIM $name $start $end\r\n");
return $this->_simple_response();
} function &lindex($name, $index) {
$this->connect();
$this->_write("LINDEX $name $index\r\n");
return $this->_get_value();
} function &pop($name, $tail=true) {
$this->connect();
$this->_write(
($tail ? 'RPOP' : 'LPOP') .
" $name\r\n"
);
return $this->_get_value();
} function &llen($name) {
$this->connect();
$this->_write("LLEN $name\r\n");
return $this->_numeric_response();
} function &lrange($name, $start, $end) {
$this->connect();
$this->_write("LRANGE $name $start $end\r\n");
return $this->_get_multi();
} function &sort($name, $query=false) {
$this->connect();
if ($query === false) {
$this->_write("SORT $name\r\n");
} else {
$this->_write("SORT $name $query\r\n");
}
return $this->_get_multi();
} function &lset($name, $value, $index) {
$this->connect();
$this->_write("LSET $name $index " . strlen($value) . "\r\n$value\r\n");
return $this->_simple_response();
} function &sadd($name, $value) {
$this->connect();
$this->_write("SADD $name " . strlen($value) . "\r\n$value\r\n");
return $this->_numeric_response();
} function &srem($name, $value) {
$this->connect();
$this->_write("SREM $name " . strlen($value) . "\r\n$value\r\n");
return $this->_numeric_response();
} function &sismember($name, $value) {
$this->connect();
$this->_write("SISMEMBER $name " . strlen($value) . "\r\n$value\r\n");
return $this->_numeric_response();
} function &sinter($sets) {
$this->connect();
$this->_write('SINTER ' . implode(' ', $sets) . "\r\n");
return $this->_get_multi();
} function &smembers($name) {
$this->connect();
$this->_write("SMEMBERS $name\r\n");
return $this->_get_multi();
} function &scard($name) {
$this->connect();
$this->_write("SCARD $name\r\n");
return $this->_numeric_response();
} function &select_db($name) {
$this->connect();
$this->_write("SELECT $name\r\n");
return $this->_simple_response();
} function &move($name, $db) {
$this->connect();
$this->_write("MOVE $name $db\r\n");
return $this->_numeric_response();
} function &save($background=false) {
$this->connect();
$this->_write(($background ? "BGSAVE\r\n" : "SAVE\r\n"));
return $this->_simple_response();
} function &lastsave() {
$this->connect();
$this->_write("LASTSAVE\r\n");
return $this->_numeric_response();
} function &_write($s) {
while ($s) {
$i = fwrite($this->_sock, $s);
if ($i == 0)
break;
$s = substr($s, $i);
}
} function &_read($len=1024) {
if ($s = fgets($this->_sock))
return $s;
$this->disconnect();
trigger_error("Cannot read from socket.", E_USER_ERROR);
} function _check_for_error(&$s) {
if (!$s || $s[0] != '-')
return;
if (substr($s, 0, 4) == '-ERR')
trigger_error("Redis error: " . trim(substr($s, 4)), E_USER_ERROR);
trigger_error("Redis error: " . substr(trim($this->_read()), 5), E_USER_ERROR);
} function &_simple_response() {
$s =& trim($this->_read());
if ($s[0] == '+')
return substr($s, 1);
if ($err =& $this->_check_for_error($s))
return $err;
trigger_error("Cannot parse first line '$s' for a simple response", E_USER_ERROR);
} function &_numeric_response($allow_negative=True) {
$s =& trim($this->_read());
$i = (int)$s;
if ($i . '' == $s) {
if (!$allow_negative && $i < 0)
$this->_check_for_error($s);
return $i;
}
if ($s == 'nil')
return null;
trigger_error("Cannot parse '$s' as numeric response.");
} function &_get_value() {
$s =& trim($this->_read());
if ($s == 'nil')
return '';
else if ($s[0] == '-')
$this->_check_for_error($s);
$i = (int)$s;
if ($i . '' != $s)
trigger_error("Cannot parse '$s' as data length.");
$buffer = '';
while ($i > 0) {
$s = $this->_read();
$l = strlen($s);
$i -= $l;
if ($l > $i) // ending crlf
$s = rtrim($s);
$buffer .= $s;
}
if ($i == 0) // let's restore the trailing crlf
$buffer .= $this->_read();
return $buffer;
} function &_get_multi() {
$results = array();
$num =& $this->_numeric_response(false);
if ($num === false)
return $results;
while ($num) {
$results[] =& $this->_get_value();
$num -= 1;
}
return $results;
} } ?>

常见问题:

http://www.taocms.org/392.html

http://segmentfault.com/q/1010000000095030

phpredis的更多相关文章

  1. linux下安装Redis以及phpredis模块

    一:redis的安装 1. 首先上官网下载Redis 压缩包,地址:http://redis.io/download 下载 2. 通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作 3. ...

  2. Mac Pro 编译安装 Redis 的 PHP 客户端 phpredis

    1.去官网下载 redis 扩展源码包 https://github.com/phpredis/phpredis 2.安装 redis 扩展 /usr/local/src/mac-sdk/source ...

  3. phpRedis安装、配置及简单使用

    安装phpRedis前,请先安装Redis,再安装phpRedis插件. 1.下载安装 在linux服务器上,命令行执行以下命令(cd ./usr local/src 一般源码放在这里(推荐源码安装) ...

  4. phpredis中文文档 [转]

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/ow ...

  5. php-redis扩展安装

    1 phpredis 在php中访问redis需要安装 https://github.com/phpredis/phpredis 基本上安装上面的readme既可以完成安装,需要注意的是在编译安装的时 ...

  6. PHP-redis中文文档

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/wi ...

  7. [Linux]安装phpredis扩展

    1.下载phpredis,解压并进入目录,在目录下运行phpize /usr/local/php/bin/phpize ./configure --enable-redis-igbinary --wi ...

  8. 通过PHP扩展phpredis操作redis

    我们使用phpredis,这个扩展能让你用PHP操作redis. 源码下载: phpize ./configure ); var_dump($result); echo $redis->get( ...

  9. 安装 phpredis 扩展

    /************************************************//********************* phpredis  ***************** ...

  10. mac 安装phpredis扩展

    curl -O https://nodeload.github.com/nicolasff/phpredis/zip/master tar -zxf master cd phpredis-master ...

随机推荐

  1. JQ限制输入字数,并提示剩余字数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. freemarker list (长度,遍历,下标,嵌套,排序)

    1. freemarker获取list的size : Java ArrayList<String> list = new ArrayList<String>(); Freema ...

  3. windows 文件名太长无法删除的解决方法

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. android 文件读取(assets、raw)

    需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作. assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. ...

  5. Integer Inquiry_hdu_1047(大数).java

    Integer Inquiry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. jekyll bootstrap更改主题theme

    使用主题 介绍: 由于JB版本号0.2.X的主题,如今全然是模块化的.他们跟踪和单独版本号的主题包. 这让每一个人都能够自由公布和共享主题. Jekyll-Bootstrap v 0.2.x仅仅附带t ...

  7. Google高级技巧—google Hack★★★★

    google hacking事实上并算不上什么新东西,当时并没有重视这样的技术,觉得webshell什么的,并无太大实际用途.google hacking事实上并非如此简单... 经常使用的googl ...

  8. PHP获取客户端和服务器IP地址

    /** * 获取客户端IP地址 * @return string */ function get_client_ip() { if(getenv('HTTP_CLIENT_IP')){ $client ...

  9. java10 WeakHashMap

    WeakHashMap: 对象所占用的区域是不能直接操作的,都是通过引用来操作. 引用分类: .强引用(StrongReference):gc(垃圾回收机制)运行时不回收.例如字符串常量池.字符串虽然 ...

  10. 阿里技术保障-KeepAlive

    http://blog.sina.cn/dpool/blog/s/blog_e59371cc0102ux5w.html?wm=3049_a111