Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据的字典,客户端可以指定将数据存储在哪个字典中。
想要在php中操作redis,那就必须安装php-redis扩展。
一、安装PHP7
1.1 安装PHP7
参考《PHP安装(CentOS)》
二、下载及安装phpredis
版本需要匹配,否则编译报错
2.1 下载
下载:https://github.com/phpredis/phpredis
2.2 解压缩
需要用到unzip命令,没有的话,需要安装:
安装加压缩软件:yum install -y unzip zip
解压缩:unzip phpredis-develop.zip
移动到安装目录:mv phpredis-develop /usr/phpredis
2.3 安装
生成confiure文件:[root@localhost phpredis]# /usr/bin/phpize
检查:./configure --with-php-config=/usr/bin/php-config --enable-redis;
编译:make
安装:make install
三、配置
3.1 配置php.ini
vi /etc/php.ini
extension=redis.so
报错是因为缺少json组件,需要安装json组件:yum install json
安装完json后,在php.ini中添加:vi /etc/php.ini
3.2 确认redis模块是否正确安装
查看php加载模块:php-m
[root@localhost ~]# php -m
PHP Warning: Module 'json' already loaded in Unknown on line 0
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
[root@localhost ~]#
至此,php-redis扩展安装完毕
四、试验
4.1 PHP连接默认库
编写代码
<?php
$redis = new Redis();
$redis->connect('192.168.0.150', 9736);//serverip port
$redis->auth('chp0811');//my redis password
$redis ->set( "test" , "Hello World");
echo $redis ->get( "test");
运行代码
通过工具查看结果
4.2 PHP操作指定库
编写代码
<?php
/**
* 如果不传入$host和$port默认读取Laravel环境变量的参数
* redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi
*/
function RedisSet($key, $value, $dbid=0, $expire=0, $host='', $port='', $auth=''){
if(!$key||!$value) return false;
$host = $host?$host:getenv('REDIS_HOST');
$port = $port?$port:getenv('REDIS_PORT');
$redis = new Redis();
$redis->connect($host, $port);
$redis->auth($auth);//my redis password
$redis->select($dbid);//选择数据库2
$value = is_array($value)?json_encode($value):$value;
return $expire>0?$redis->setex(getenv('REDIS_PREFIX').$key, $expire,$value):$redis->set(getenv('REDIS_PREFIX').$key,$value);
}
/**
* redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi
*/
function RedisGet($key, $dbid=0, $host='',$port='', $auth=''){
$redis = new Redis();
$host = $host?$host:getenv('REDIS_HOST');
$port = $port?$port:getenv('REDIS_PORT');
$redis->connect($host, $port);
$redis->auth($auth);//my redis password
$redis->select($dbid);//选择数据库2
$result = $redis->get(getenv('REDIS_PREFIX').$key);
return is_null(json_decode($result))?$result:json_decode($result,true);
}
RedisSet('name', 'name1', 0, 0, '192.168.0.150', 9736, 'chp0811');
RedisSet('age', 21, 2, 0, '192.168.0.150', 9736, 'chp0811');
echo RedisGet('name', 0, '192.168.0.150', 9736, 'chp0811') . "\n";
echo RedisGet('age', 2, '192.168.0.150', 9736, 'chp0811') . "\n";
运行代码
通过工具查看运行结果