当前位置:首页 » 编程语言 » ubuntuphpredis

ubuntuphpredis

发布时间: 2022-08-11 06:26:07

‘壹’ php连接redis是什么服务类型

要在PHP程序中使用Redis,首先需要确保Redis的PHP驱动程序和PHP安装设置在机器上。可以查看PHP教程教你如何在机器上安装PHP。现在,让我们来看看一下如何设置Redis的PHP驱动程序。
需要从github上资料库:https://github.com/nicolasff/phpredis下载phpredis。下载完成以后,将文件解压缩到phpredis目录。在Ubuntu上安装这个扩展,可使用如下图所示的命令来安装。
cdphpredis
sudophpize
sudo./configure
sudomake
sudomakeinstall
现在,复制和粘贴“moles”文件夹的内容复制到PHP扩展目录中,并在php.ini中添加以下几行。
extension=redis.so
现在Redis和PHP安装完成。
连接到Redis服务器
<?php
//
$redis=newRedis();
$redis->connect('127.0.0.1',6379);
echo"Connectiontoserversucessfully";
//
echo"Serverisrunning:".$redis->ping();
?>
当执行程序时,会产生下面的结果:
Connectiontoserversucessfully
Serverisrunning:PONG
Redis的PHP字符串实例
<?php
//
$redis=newRedis();
$redis->connect('127.0.0.1',6379);
echo"Connectiontoserversucessfully";
//setthedatainredisstring
$redis->set("tutorial-name","Redistutorial");
//Getthestoreddataandprintit
echo"Storedstringinredis::".$redis.get("tutorial-name");
?>
当执行程序时,会产生下面的结果:
Connectiontoserversucessfully
Storedstringinredis::Redistutorial
Redis的PHP列表示例
<?php
//
$redis=newRedis();
$redis->connect('127.0.0.1',6379);
echo"Connectiontoserversucessfully";
//storedatainredislist
$redis->lpush("tutorial-list","Redis");
$redis->lpush("tutorial-list","Mongodb");
$redis->lpush("tutorial-list","Mysql");
//Getthestoreddataandprintit
$arList=$redis->lrange("tutorial-list",0,5);
echo"Storedstringinredis::"
print_r($arList);
?>
当执行程序时,会产生下面的结果:
Connectiontoserversucessfully
Storedstringinredis::
Redis
Mongodb
Mysql
Redis的PHP键例
<?php
//
$redis=newRedis();
$redis->connect('127.0.0.1',6379);
echo"Connectiontoserversucessfully";
//Getthestoredkeysandprintit
$arList=$redis->keys("*");
echo"Storedkeysinredis::"
print_r($arList);
?>
当执行程序时,会产生下面的结果:
Connectiontoserversucessfully
Storedstringinredis::
tutorial-name
tutorial-list

‘贰’ 如何测试 php安装成功redis

解压安装:

复制代码代码如下:

tar -xvf redis-2.8.17.tar.gz
make
sudo make install

为方便使用,在/usr目录下创建redis目录,讲如下几个文件拷贝到/usr/redis/目录下:

复制代码代码如下:

/yourdir/redis-2.8.17/redis.conf
/yourdir/redis-2.8.17/src/redis-benchmark
/yourdir/redis-2.8.17/src/redis-server
/yourdir/redis-2.8.17/src/redis-cli

当然,你也可以通过软连接的方式达到方便使用的目的。此外,你也可以将redis-server加入开机启动,此处从略。

2.redis测试
1)先开启redis服务端程序
为方便测试,我们将redis.conf配置文件中的loglevel和logfile的值,修改后如下:
loglevel debug
logfile “/tmp/redis.log”
jay13@ubuntu:/usr/redis$ redis-server redis.conf
2)开启redi客户端,通过客户端向redis数据库中进行增删改查操作。整个操作过程中生成的日志可以到/tmp/redis.log中查看。
以最简单的key操作为例,实例如下:

复制代码代码如下:

jay13@ubuntu:/usr/redis$ redis-cli
127.0.0.1:6379> set jay13 jb51.net
OK
127.0.0.1:6379> set jay hello,world
OK
127.0.0.1:6379> get jay
"hello,world"
127.0.0.1:6379> get jay13
"jb51.net"
127.0.0.1:6379> del jay
(integer) 1
127.0.0.1:6379> get jay
(nil)
127.0.0.1:6379> set jay13 www.jb51.net
OK
127.0.0.1:6379> get jay13
"www.jb51.net"

3.安装phpredis扩展
在使用sudo apt-get install php5安装php时,默认是没有安装phpize的,我们安装phpredis时,需要用到phpize,因此,需要先安装phpize。
1)我们通过安装php开发者工具来获取phpize。执行如下命令即可:

复制代码代码如下:

sudo apt-get install php5-dev

2)获取phpredis源文件
按照GitHub上的说明进行如下安装时,

复制代码代码如下:

phpize
./configure --enable-redis-igbinary
make && make install

可能会出现如下出错说明:

复制代码代码如下:

checking for igbinary includes... configure: error: Cannot find igbinary.h

‘叁’ 如何是php支持redis 是如何配置的 是不是还需要扩展什么的

这个需要在php里面加载redis模块,该模块php默认是没有的,需要根据自己php的版本下载相应的redis dll 文件,同时还需要一个redis server 服务器端,只有开启了redis服务器和在php.ini中加载了redis dll 模块,才能正常的使用redis扩展,详细的配置的话,我就不太懂了,我只是用过,具体的详细配置没弄过...

‘肆’ php 连接redis,怎么判断Redis是否挂掉

一般链接redis,如果链接不上,或者redis挂掉,都会发生超时,你可以设置超时时间短一点,比如5秒。如果5秒链接不上则不连接了,继续往下,不影响整体代码运行。

<?php
$redis=newRedis();
$redis->connect($config['host'],$config['port'],$config['timeout']);
$redis->ping();//检测当前链接状态,返回PONG或者抛出异常。

‘伍’ php redis 什么时候用

默认情况下,Redis 服务会提供 16 个数据库,PHPHub 使用 0 号数据库来做缓存,1 号数据库来做会话存储 - Laravel 下配置 Redis 让缓存、Session 各自使用不同的 Redis 数据库_PHPHub
队列的话使用 Beanstalkd
最常用的就是缓存、队列,当然还有很多其它的,如归并计算、去重等。
我根据自己使用Redis的场景及个人最佳实践,整理了一篇文章,redis应用场景与最佳实践
比如网站抢购时,可以使用redis做队列,可以使用redis来代替session功能,还有可以拿redis中的无序集合做socket的客户端id存储。

‘陆’ php-redis扩展 怎么装安装啊

1、下载PHPredis安装包,可以去去pecl官网下载


2、解压安装并进入Redis目录

[root@Redis ~]# tar xzf redis-2.2.5.tgz
[root@Redis ~]# cd redis-2.2.5

3、在Redis文件夹下,生成configure配置文件

[root@Redis redis-2.2.5]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:20090626
Zend Mole Api No:20090626
Zend Extension Api No:220090626

[root@Redis redis-2.2.5]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@Redis redis-2.2.5]# make
[root@Redis redis-2.2.5]# make install
Installing shared extensions:/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
cp: cannot create regularfile`/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/#INST@6338#': Permission denied
make:***[install-moles]Error1

注意:一定要用root用户。
[root@Redis redis-2.2.5]# su
Password:
[root@web redis-2.2.5]# make install

4、在PHP配置文件php.ini里面加载Redis扩展

extension=redis.so

5、查看phpinfo,Redis扩展是否加载
redis
Redis Support enabled
Redis Version 2.2.5
至此,Redis扩展已经安装成功并加载,可以用PHP操作Redis了。
附:
windows下安装Redis扩展就更加简单了,找到对应的版本,下载dll文件,放到PHP目录下面的ext,修改PHP的配置文件php.ini,加载extension=php_redis.dll,重启Apache,查看phpinfo是否有Redis,如果有就恭喜你,已经安装成功了,就是这么简单。

‘柒’ ubuntu 阿里云服务器安装的redis配置文件在哪

redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。问题是这个项目还很新,可能还不足够稳定,redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。问题是这个项目还很新,可能还不足够稳定,而且没有在实际的一些大型系统应用的实例。此外,缺乏mc中批量get也是比较大的问题,始终批量获取跟多次获取的网络开销是不一样的。
性能测试结果:
SET操作每秒钟 110000 次,GET操作每秒钟 81000 次,服务器配置如下:
Linux 2.6, Xeon X3320 2.5Ghz.
stackoverflow 网站使用 Redis 做为缓存服务器。
安装过程:

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。
Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。

‘捌’ php redis做mysql的缓存,怎么异步redis同步到mysql数据库

对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached、File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器。

但是往往又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能。

所以就会很自然的想到是否可以采用MySQL作为数据存储引擎,Redis则作为Cache。而这种需求目前还没有看到有特别成熟的解决方案或工具,因此采用Gearman+PHP+MySQL UDF的组合异步实现MySQL到Redis的数据复制。

MySQL到Redis数据复制方案

无论MySQL还是Redis,自身都带有数据同步的机制,比较常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog来实现的,这样的数据复制其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略。

那么理论上也可以用同样方式,分析MySQL的binlog文件并将数据插入Redis。但是这需要对binlog文件以及MySQL有非常深入的理解,同时由于binlog存在Statement/Row/Mixedlevel多种形式,分析binlog实现同步的工作量是非常大的。

因此这里选择了一种开发成本更加低廉的方式,借用已经比较成熟的MySQL UDF,将MySQL数据首先放入Gearman中,然后通过一个自己编写的PHP Gearman Worker,将数据同步到Redis。比分析binlog的方式增加了不少流程,但是实现成本更低,更容易操作。

Gearman的安装与使用

Gearman是一个支持分布式的任务分发框架。设计简洁,获得了非常广泛的支持。一个典型的Gearman应用包括以下这些部分:

Gearman Job Server:Gearman核心程序,需要编译安装并以守护进程形式运行在后台

Gearman Client:可以理解为任务的收件员,比如在后台执行一个发送邮件的任务,可以在程序中调用一个Gearman Client并传入邮件的信息,然后就可以将执行结果立即展示给用户,而任务本身会慢慢在后台运行。

Gearman Worker:任务的真正执行者,一般需要自己编写具体逻辑并通过守护进程方式运行,Gearman Worker接收到Gearman Client传递的任务内容后,会按顺序处理。

以前曾经介绍过类似的后台任务处理项目Resque。两者的设计其实非常接近,简单可以类比为:

Gearman Job Server:对应Resque的Redis部分

Gearman Client:对应Resque的Queue操作

Gearman Worker:对应Resque的Worker和Job

这里之所以选择Gearman而不是Resque是因为Gearman提供了比较好用的MySQL UDF,工作量更小。

安装Gearman及PHP Gearman扩展

以下均以Ubuntu12.04为例。

apt-get install gearman gearman-server libgearman-dev

检查Gearman的运行状况:

/etc/init.d/gearman-job-server status

* gearmand is running

说明Gearman已经安装成功。

PHP的Gearman扩展可以通过pecl直接安装

pecl install gearman

echo "extension=gearman.so">/etc/php5/conf.d/gearman.ini

service php5-fpm restart

但是实测发现ubuntu默认安装的gearman版本过低,直接运行pecl install gearman会报错

configure: error: libgearman version 1.1.0or later required

因此Gearman + PHP扩展建议通过编译方式安装,这里为了简单说明,选择安装旧版本扩展:

pecl install gearman-1.0.3

Gearman + PHP实例

为了更容易理解后文Gearman的运行流程,这里不妨从一个最简单的Gearman实例来说明,比如要进行一个文件处理的操作,首先编写一个Gearman Client并命名为client.php:

<?php

$client =newGearmanClient();

$client->addServer();

$client->doBackground('writeLog','Log content');

echo '文件已经在后台操作';

运行这个文件,相当于模拟用户请求一个Web页面后,将处理结束的信息返回用户:

php client.php

查看一下Gearman的状况:

(echo status ; sleep 0.1)| netcat127.0.0.14730

可以看到输出为

writeLog 100.

说明已经在Gearman中建立了一个名为writeLog的任务,并且有1个任务在队列等待中。

而上面的4列分别代表当前的Gearman的运行状态:

任务名称

在等待队列中的任务

正在运行的任务

正在运行的Worker进程

可以使用watch进行实时监控:

watch -n 1"(echo status; sleep 0.1) | nc 127.0.0.1 4730"

然后我们需要编写一个Gearman Worker命名为worker.php:

<?php

$worker =newGearmanWorker();

$worker->addServer();

$worker->addFunction('writeLog','writeLog');while($worker->work());function writeLog($job){

$log = $job->workload();file_put_contents(__DIR__ .'/gearman.log', $log ." ", FILE_APPEND | LOCK_EX);}

Worker使用一个while死循环实现守护进程,运行

php worker.php

可以看到Gearman状态变为:

writeLog 001

同时查看同目录下gearman.log,内容应为从Client传入的值Log content。

通过MySQL UDF + Trigger同步数据到Gearman

MySQL要实现与外部程序互通的最好方式还是通过MySQL UDF(MySQL user defined functions)来实现。为了让MySQL能将数据传入Gearman,这里使用了lib_mysqludf_json和gearman-mysql-udf的组合。

安装lib_mysqludf_json

使用lib_mysqludf_json的原因是因为Gearman只接受字符串作为入口参数,可以通过lib_mysqludf_json将MySQL中的数据编码为JSON字符串

apt-get install libmysqlclient-dev

wget https://github.com/mysqludf/lib_mysqludf_json/archive/master.zip

unzip master.zip

cd lib_mysqludf_json-master/

rm lib_mysqludf_json.so

gcc $(mysql_config --cflags)-shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c

可以看到重新编译生成了 lib_mysqludf_json.so 文件,此时需要查看MySQL的插件安装路径:

mysql -u root -pPASSWORD --execute="show variables like '%plugin%';"+---------------+------------------------+|Variable_name|Value|+---------------+------------------------+| plugin_dir |/usr/lib/mysql/plugin/|+---------------+------------------------+

然后将 lib_mysqludf_json.so 文件复制到对应位置:

cp lib_mysqludf_json.so /usr/lib/mysql/plugin/

最后登入MySQL运行语句注册UDF函数:

CREATE FUNCTION json_object RETURNS STRING SONAME 'lib_mysqludf_json.so';

安装gearman-mysql-udf

方法几乎一样:

apt-get install libgearman-dev

wget https://launchpad.net/gearman-mysql-udf/trunk/0.6/+download/gearman-mysql-udf-0.6.tar.gz

tar -xzf gearman-mysql-udf-0.6.tar.gz

cd gearman-mysql-udf-0.6./configure --with-mysql=/usr/bin/mysql_config

-libdir=/usr/lib/mysql/plugin/

make && make install

登入MySQL运行语句注册UDF函数:

CREATE FUNCTION gman_do_background RETURNS STRING SONAME 'libgearman_mysql_udf.so';

CREATE FUNCTION gman_servers_set RETURNS STRING SONAME 'libgearman_mysql_udf.so';

最后指定Gearman服务器的信息:

SELECT gman_servers_set('127.0.0.1:4730');

通过MySQL触发器实现数据同步

最终同步哪些数据,同步的条件,还是需要根据实际情况决定,比如将数据表data的数据在每次更新时同步,那么编写Trigger如下:

DELIMITER $$

CREATE TRIGGER datatoredis AFTER UPDATE ON data

FOR EACH ROW BEGIN

SET @ret=gman_do_background('syncToRedis', json_object(NEW.id as`id`, NEW.volume as`volume`));END$$

DELIMITER ;

尝试在数据库中更新一条数据查看Gearman是否生效。

Gearman PHP Worker将MySQL数据异步复制到Redis

Redis作为时下当热的NoSQL缓存解决方案无需过多介绍,其安装及使用也非常简单:

apt-get install redis-server

pecl install redis

echo "extension=redis.so">/etc/php5/conf.d/redis.ini

然后编写一个Gearman Worker:redis_worker.php

#!/usr/bin/env php<?

$worker =newGearmanWorker();

$worker->addServer();

$worker->addFunction('syncToRedis','syncToRedis');

$redis =newRedis();

$redis->connect('127.0.0.1',6379);while($worker->work());function syncToRedis($job){global $redis;

$workString = $job->workload();

$work = json_decode($workString);if(!isset($work->id)){returnfalse;}

$redis->set($work->id, $workString);}

最后需要将Worker在后台运行:

nohup php redis_worker.php &

通过这种方式将MySQL数据复制到Redis,经测试单Worker基本可以瞬时完成。

‘玖’ php redis如何使用

开始在 PHP 中使用 Redis 前,要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。
PHP安装redis扩展
/usr/local/php/bin/phpize #php安装后的路径
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
修改php.ini文件
vi /usr/local/php/lib/php.ini
增加如下内容:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626"
extension=redis.so
安装完成后重启php-fpm 或 apache。查看phpinfo信息,就能看到redis扩展。
连接到 redis 服务
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//查看服务是否运行
echo "Server is running: " . $redis->ping();
?>
执行脚本,输出结果为:
Connection to server sucessfully
Server is running: PONG
Redis PHP String(字符串) 实例
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//设置 redis 字符串数据
$redis->set("tutorial-name", "Redis tutorial");
// 获取存储的数据并输出
echo "Stored string in redis:: " . jedis.get("tutorial-name");
?>
执行脚本,输出结果为:
Connection to server sucessfully
Stored string in redis:: Redis tutorial
Redis PHP List(列表) 实例
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//存储数据到列表中
$redis->lpush("tutorial-list", "Redis");
$redis->lpush("tutorial-list", "Mongodb");
$redis->lpush("tutorial-list", "Mysql");
// 获取存储的数据并输出
$arList = $redis->lrange("tutorial-list", 0 ,5);
echo "Stored string in redis:: "
print_r($arList);
?>
执行脚本,输出结果为:
Connection to server sucessfully
Stored string in redis::
Redis
Mongodb
Mysql
Redis PHP Keys 实例
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
// 获取数据并输出
$arList = $redis->keys("*");
echo "Stored keys in redis:: "
print_r($arList);
?>
执行脚本,输出结果为:
Connection to server sucessfully
Stored string in redis::
tutorial-name
tutorial-list

热点内容
openwrt编译零基础 发布:2025-01-21 01:53:30 浏览:19
视频聊天室源码php 发布:2025-01-21 01:39:29 浏览:938
游戏脚本xp 发布:2025-01-21 01:25:48 浏览:209
cfa建模需要什么电脑配置 发布:2025-01-21 01:16:41 浏览:96
配置获取异常怎么办 发布:2025-01-21 01:16:29 浏览:641
植发都加密吗 发布:2025-01-21 01:16:28 浏览:735
工商保障卡原始密码是什么 发布:2025-01-21 01:09:33 浏览:786
sqlserver2012sp 发布:2025-01-21 01:06:23 浏览:888
惊变在线看ftp 发布:2025-01-21 01:06:20 浏览:233
用近似归算法 发布:2025-01-21 00:51:56 浏览:517