使用php操作redis需要开启php的redis扩展,开启很简单,首先去官网下载一个对应php版本的redis压缩包,https://github.com/dmajkic/redis/downloads,安装到windows随便一个盘符的根目录,之后再http://windows.php.net/downloads/pecl/snaps/redis/ 下载对应版本的redis扩展即可
下载完毕后,解压缩,将php_redis.dll放入php安装目录的ext文件夹之中。之后在php.ini中添加extension=php_redis.dll。
php redis扩展安装完毕,重启服务器,查看phpinfo();若出现
至此,redis扩展开启完毕,在此基础上就可以使用php操作redis了。
php中redis的写法非常简单,以比较常见的string型举例如下。
1> php 连接 redis 服务器,前提是redis服务器保持开启状态,代码如下:
$redis=new redis();
$redis->connect('127.0.0.1', 6379);
ok,,使用代码$this->redis->ping(),判断连接是否成功,$this->redis->ping() = '+PONG'时表示,连接成功。
2> set 赋值,get取值操作,用法如下:
$redis->set('ceshi','11111');
echo $redis->get('ceshi');
结果如下:
3> delete 删除指定key
$redis->set('ceshi','11111');
$redis->delete('ceshi');
var_dump($redis->get('ceshi'));
redis的delete 返回结果为true,结果如下:表示未找到key
一个redis的操作类:
<?php
class redisInit {
public $redis; //redis对象
/**
* 初始化Redis
* $config = array(
* 'server' => '127.0.0.1' 服务器
* 'port' => '6379' 端口号
* )
* @param array $config
*/
public function __construct($config = array()) {
if ($config['server'] == '') $config['server'] = 'ip';
if ($config['port'] == '') $config['port'] = 'port number';
$this->redis = new Redis();
$this->redis->connect($config['server'], $config['port']);
if($this->redis->ping()!='+PONG'){
$this->redis=false;
}
return $this->redis;
}
/**
* 设置值
* @param string $key KEY名称
* @param string|array $value 获取得到的数据
* @param int $timeOut 时间
*/
public function set($key, $value,$timeOut) {
$value = json_encode($value, TRUE);
$retRes = $this->redis->set($key, $value);
if($timeOut > 0) {
$retRes = $this->redis->expire($key, $timeOut);
}
return $retRes;
}
/**
* hash 存储
* @param string $key KEY名称
* @param string $filed 字段名称名称
* @param string|array $value 获取得到的数据
*/
public function hset($key,$filed,$value){
$value = json_encode($value, TRUE);
$retRes = $this->redis->hset($key,$filed,$value);
return $retRes;
}
/**
* 通过KEY FILED获取数据
* @param string $key KEY名称
* @param string $filed 字段名称
*/
public function hget($key,$filed){
$result = $this->redis->hget($key,$filed);
return json_decode($result, TRUE);
}
/**
* 通过KEY获取数据
* @param string $key KEY名称
*/
public function get($key) {
$result = $this->redis->get($key);
return json_decode($result, TRUE);
}
/**
* 删除一条数据
* @param string $key KEY名称
*/
public function delete($key) {
return $this->redis->delete($key);
}
/**
* 清空数据
*/
public function flushAll() {
return $this->redis->flushAll();
}
/**
* 数据入队列
* @param string $key KEY名称
* @param string|array $value 获取得到的数据
* @param bool $right 是否从右边开始入
*/
public function push($key, $value ,$right = true) {
$value = json_encode($value);
return $right ? $this->redis->rPush($key, $value) : $this->redis->lPush($key, $value);
}
/**
* 数据出队列
* @param string $key KEY名称
* @param bool $left 是否从左边开始出数据
*/
public function pop($key , $left = true) {
$val = $left ? $this->redis->lPop($key) : $this->redis->rPop($key);
return json_decode($val);
}
/**
* 数据自增
* @param string $key KEY名称
*/
public function increment($key) {
return $this->redis->incr($key);
}
/**
* 数据自减
* @param string $key KEY名称
*/
public function decrement($key) {
return $this->redis->decr($key);
}
/**
* key是否存在,存在返回ture
* @param string $key KEY名称
*/
public function exists($key) {
return $this->redis->exists($key);
}
public function hexists($key,$filed) {
return $this->redis->hexists($key,$filed);
}
/**
* 返回redis对象
* redis有非常多的操作方法,我们只封装了一部分
* 拿着这个对象就可以直接调用redis自身方法
*/
public function redis() {
return $this->redis;
}
}