PHP7访问Redis

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"; 

运行代码

通过工具查看运行结果

发表回复