ubunturedisphp
‘壹’ ubuntu下redis 怎么在程序中使用
一、获取Redis
二、编译安装Redis
1、解压源码安装包,通过tar -xvf redis-3.0.2.tar.gz解压源码,速度相当快;
2、进入解压后的目录,执行make编译源码;
make命令执行完成后,会在src目录下生成6个可执行文件,分别是redis-server、redis-cli、redis-benchmark、察租redis-check-aof、redis-check-mp、redis-sentinel。
3、执行make install安装,或者通过make PREFIX=/usr/local/redis install指定安装目录。这里默认安李搏装,默认将之前生成的可执行文件拷贝到/usr/local/bin目录下;
配置运行
三、修改配置文件
1、将源码目录下哪没祥redis配置文件redis.conf拷贝到/etc/redis目录下。
2、修改配置项,根据需要;如果不修改,使用默认配置也可以;
四、启动服务:
1、查看端口是否被占用:netstat –ntlp |grep 6379
方式一:通过命令redis-server 启动,可在命令后加上`&`号使redis以后台程序方式运行;
方式二:通过指定配置文件启动;redis-server /etc/redis/redis.conf
默认安装的路径已经加入环境变量中,可直接在命令行执行命令;
五、命令客户端检测链接
1、连接之前可以先检测服务是否启动;
2、测试启动 redis-cli ping 返回PONG,启动成功。
停止Redis:
关闭服务
redis-cli shutdown
如果非默认端口,可指定端口:
redis-cli -p 6380 shutdown
简单操作:
1、两种连接方式:
1:window DOS方式:tentel主机IP端口号(默认为127.0.0.1:6379)
2:linux客户端方式:redis-cli 主机IP 端口号(默认为127.0.0.1 6379)
2、命令行操作:
#redis-cli
redis 127.0.0.1:6379> set name clj
OK
redis 127.0.0.1:6379> get name
"clj"
‘贰’ 如何在ubuntu14.04下配置php环境
ubuntu下的开发环境和windows下一样都是jdk + android sdk + eclipse + adt 具体搭歼迹建方法型改腊有卜滑所不同,可参考以下链接:
http://jingyan..com/article/4d58d541dd939f9dd5e9c010.html
‘叁’ 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
‘肆’ ubuntu 下php 如何编写以及该用什么软件编写
,就别说别人了。在linux上用DW.....
--------------------------------------------------------------------------------
很多可用的。
比如使用eclipse,安装上PDT插件。或者netbeans,或者komodo.
也可以使用bluefish,vim,gedit等等。
‘伍’ php怎样使用redis缓存数据
<?php
/**
* Redis缓存操作
* @author hxm
* @version 1.0
* @since 2015.05.04
*/
class RCache extends Object implements CacheFace
{
private $redis = null; //redis对象
private $sId = 1; //servier服务ID
private $con = null;//链接资源
/**
* 初始化Redis
*
* @return Object
*/
public function __construct()
{
if ( !class_exists('Redis') )
{
throw new QException('PHP extension does not exist: Redis');
}
$this->redis = new Redis();
}
/**
* 链接memcahce服务
*
* @access private
* @param string $key 关键字
* @param string $value 缓存内容
* @return array
*/
private function connect( $sid )
{
$file = $this->CacheFile();
require $file;
if(! isset($cache) )
{
throw new QException('缓存配置文件不存在'.$file);
}
$server = $cache[$this->cacheId];
$sid = isset($sid) == 0 ? $this->sId : $sid;//memcache服务选择
if ( ! $server[$sid])
{
throw new QException('当前操作的缓存服务器配置文件不存在');
}希望能帮到你,我还在后盾网学习呢,有不会的可以问我,一会有空回答你。(^ω^)
‘陆’ Ubuntu安装PHP
apt-get update 更新
apt-get install language-pack-en-base software-properties-common -y 解决语言冲突和中文乱码
locale-gen en_US.UTF-8 语言环境
apt-get install vim -y 安装vim
LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php 使用ppa安装php
apt-get update 再次更新
apt-get install php7.4 php7.4-fpm php7.4-cli php7.4-dev php7.4-redis php7.4-mysql php7.4-curl php7.4-xml php7.4-json php7.4-gd php7.4-mbstring php7.4-zip php7.4-bcmath -y 安装php和相关组件
php -v 查看php版本
‘柒’ 解决-ubuntu18.04 安装redis无法启动
Ubuntu 18.04
Port 6379
Redis version 5:4.0.9-1
主机上禁用了IPv6,而Ubuntu的redis-server软件简简野包(版本5:4.0.9-1)附带了:绑定127.0.0.1 :: 1
修改redis配置文件中的 bind 地址;注释 bind 地址或将 bind 地址拦喊修咐敬改为 0.0.0.0
‘捌’ ubuntu下redis安装与登录
默认无密码登录
密码登录:requirepass password
注码汪释掉绑定地址#bind 127.0.0.1
修改Redis的默认端口port 6379
命令行输入 redis-cli
设置了密码 redis-cli -a password
返回PONG表示畅通
命令迟乱仔行的帮助
退出陪厅命令
‘玖’ ubuntu 编译安装redis 需要哪些依赖包
进入先前解压后得到的文件夹(我的在/usr/redis),复制配置文件redis.conf到/etc/redis/下,并用vi命令编辑该文件,将“daemonize no”修改为“daemonize yes”,即设置成作为后台进程运行,修改完成后保存退出。
‘拾’ redis是一个第三方插件吗
对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached、FileSystem等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器。但是往往又有数据可靠性的需求,采用MySQL作为数据存储前乱,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特模笑性实现很多功能。所以就会很自然的想到是否可以采用MySQL作为数据存储引擎,Redis则作为Cache。而这种需求目前还没有看到有特别成熟的解决方案或工具,因此采用Gearman+PHP+MySQLUDF的组合异步实现MySQL到Redis的数据复制。MySQL到Redis数据复制方案无论MySQL还是Redis,自身都带有数据同步的机制,比较常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog来实现的,这样的数据复制其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略。那么理论上也可以用同样方式,分析MySQL的binlog文件并将数据插入Redis。但是这需要对binlog文件以及MySQL有非常深入的理解,同时由于binlog存在Statement/Row/Mixedlevel多种形式,分析binlog实现同步的工作量是非常大的。因此这里选择了一种开发成本更加低廉的方式,借用已经比较成熟的MySQLUDF,将MySQL数据首先放入Gearman中,然后慧码档通过一个自己编写的PHPGearmanWorker,将数据同步到Redis。比分析binlog的方式增加了不少流程,但是实现成本更低,更容易操作。Gearman的安装与使用Gearman是一个支持分布式的任务分发框架。设计简洁,获得了非常广泛的支持。一个典型的Gearman应用包括以下这些部分:GearmanJobServer:Gearman核心程序,需要编译安装并以守护进程形式运行在后台GearmanClient:可以理解为任务的收件员,比如在后台执行一个发送邮件的任务,可以在程序中调用一个GearmanClient并传入邮件的信息,然后就可以将执行结果立即展示给用户,而任务本身会慢慢在后台运行。GearmanWorker:任务的真正执行者,一般需要自己编写具体逻辑并通过守护进程方式运行,GearmanWorker接收到GearmanClient传递的任务内容后,会按顺序处理。以前曾经介绍过类似的后台任务处理项目Resque。两者的设计其实非常接近,简单可以类比为:GearmanJobServer:对应Resque的Redis部分GearmanClient:对应Resque的Queue操作GearmanWorker:对应Resque的Worker和Job这里之所以选择Gearman而不是Resque是因为Gearman提供了比较好用的MySQLUDF,工作量更小。安装Gearman及PHPGearman扩展以下均以Ubuntu12.04为例。apt-getinstallgearmangearman-serverlibgearman-dev检查Gearman的运行状况:/etc/init.d/gearman-job-serverstatus*gearmandisrunning说明Gearman已经安装成功。PHP的Gearman扩展可以通过pecl直接安装peclinstallgearmanecho"extension=gearman.so">/etc/php5/conf.d/gearman.iniservicephp5-fpmrestart但是实测发现ubuntu默认安装的gearman版本过低,直接运行peclinstallgearman会报错configure:error:libgearmanversion1.1.0orlaterrequired因此Gearman+PHP扩展建议通过编译方式安装,这里为了简单说明,选择安装旧版本扩展:peclinstallgearman-1.0.3Gearman+PHP实例为了更容易理解后文Gearman的运行流程,这里不妨从一个最简单的Gearman实例来说明,比如要进行一个文件处理的操作,首先编写一个GearmanClient并命名为client.php:addServer();$client->doBackground('writeLog','Logcontent');echo'文件已经在后台操作';运行这个文件,相当于模拟用户请求一个Web页面后,将处理结束的信息返回用户:phpclient.php查看一下Gearman的状况:(echostatus;sleep0.1)|netcat127.0.0.14730可以看到输出为writeLog100.说明已经在Gearman中建立了一个名为writeLog的任务,并且有1个任务在队列等待中。而上面的4列分别代表当前的Gearman的运行状态:任务名称在等待队列中的任务正在运行的任务正在运行的Worker进程可以使用watch进行实时监控:watch-n1"(echostatus;sleep0.1)|nc127.0.0.14730"然后我们需要编写一个GearmanWorker命名为worker.php:addServer();$worker->addFunction('writeLog','writeLog');while($worker->work());functionwriteLog($job){$log=$job->workload();file_put_contents(__DIR__.'/gearman.log',$log."\n",FILE_APPEND|LOCK_EX);}Worker使用一个while死循环实现守护进程,运行phpworker.php可以看到Gearman状态变为:writeLog001同时查看同目录下gearman.log,内容应为从Client传入的值Logcontent。通过MySQLUDF+Trigger同步数据到GearmanMySQL要实现与外部程序互通的最好方式还是通过MySQLUDF(MySQLuserdefinedfunctions)来实现。为了让MySQL能将数据传入Gearman,这里使用了lib_mysqludf_json和gearman-mysql-udf的组合。安装lib_mysqludf_json使用lib_mysqludf_json的原因是因为Gearman只接受字符串作为入口参数,可以通过lib_mysqludf_json将MySQL中的数据编码为JSON字符串apt-getinstalllibmysqlclient-devwget/mysqludf/lib_mysqludf_json/archive/master.zipunzipmaster.zipcdlib_mysqludf_json-master/rmlib_mysqludf_json.sogcc$(mysql_config--cflags)-shared-fPIC-olib_mysqludf_json.solib_mysqludf_json.c可以看到重新编译生成了lib_mysqludf_json.so文件,此时需要查看MySQL的插件安装路径:mysql-uroot-pPASSWORD--execute="showvariableslike'%plugin%';"+---------------+------------------------+|Variable_name|Value|+---------------+------------------------+|plugin_dir|/usr/lib/mysql/plugin/|+---------------+------------------------+然后将lib_mysqludf_json.so文件复制到对应位置:cplib_mysqludf_json.so/usr/lib/mysql/plugin/最后登入MySQL运行语句注册UDF函数:CREATEFUNCTIONjson_objectRETURNSSTRINGSONAME'lib_mysqludf_json.so';安装gearman-mysql-udf方法几乎一样:apt-getinstalllibgearman-devwgetmake&&makeinstall登入MySQL运行语句注册UDF函数:CREATEFUNCTIONgman_do_backgroundRETURNSSTRINGSONAME'libgearman_mysql_udf.so';CREATEFUNCTIONgman_servers_setRETURNSSTRINGSONAME'libgearman_mysql_udf.so';最后指定Gearman服务器的信息:SELECTgman_servers_set('127.0.0.1:4730');通过MySQL触发器实现数据同步最终同步哪些数据,同步的条件,还是需要根据实际情况决定,比如将数据表data的数据在每次更新时同步,那么编写Trigger如下:DELIMITER$$@ret=gman_do_background('syncToRedis',json_object(NEW.idas`id`,NEW.volumeas`volume`));END$$DELIMITER;尝试在数据库中更新一条数据查看Gearman是否生效。GearmanPHPWorker将MySQL数据异步复制到RedisRedis作为时下当热的NoSQL缓存解决方案无需过多介绍,其安装及使用也非常简单:apt-getinstallredis-serverpeclinstallredisecho"extension=redis.so">/etc/php5/conf.d/redis.ini然后编写一个GearmanWorker:redis_worker.php#!/usr/bin/envphpaddServer();$worker->addFunction('syncToRedis','syncToRedis');$redis=newRedis();$redis->connect('127.0.0.1',6379);while($worker->work());functionsyncToRedis($job){global$redis;$workString=$job->workload();$work=json_decode($workString);if(!isset($work->id)){returnfalse;}$redis->set($work->id,$workString);}最后需要将Worker在后台运行:nohupphpredis_worker.php&通过这种方式将MySQL数据复制到Redis,经测试单Worker基本可以瞬时完成。