最近想详细学习下redis,利用vagrant复制了个linux系统,把安装过程及遇到的问题记录下来,以备后用.

一.在其中一台linux服务器上安装redis服务.

1.下载某版本的安装包:wget http://download.redis.io/releases/redis-4.0.8.tar.gz

解压:tar -zvxf redis-4.0.8.tar.gz

2.安装

cd redis-4.0.8
make
cd src
make install PREFIX=/usr/local/redis //安装到指定目录
//移动配置文件到安装目录
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc

3.配置

//配置redis为后台启动
vim /usr/local/redis/etc/redis.conf //将daemonize no 改成daemonize yes
//允许除本机外的其他机器访问
bind 192.168.66.59(redis服务器的某块网卡的地址:即其他服务器访问改redis服务器时访问对应访问该服务器的ip地址)
protected-mode no
//以上不做设置时,用其他服务器访问redis服务器时会被拒绝
//将redis加入到开机启动
vi /etc/rc.local
//在里面添加内容:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf (意思就是开机调用这段开启redis的命令)

4.开启服务

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
//开启客户端
/usr/local/redis/bin/redis-cli 

5.redis 支持 string,hash(用户存储对象),list,set(包括无序和有序)四种类型;

二.再另外一台lnmp服务器上安装php redis扩展

通过wget获取并安装phpredis-2.2.4 phpize后make&&make install出错,报:error: ext/standard/php_smart_str.h: No such file or directory#include <ext/standard/php_smart_str.h>

查了下原因,因为php是7.1+,最新的 phpredis 分了几大分支,针对最新的PHP稳定发行版 php7 有专门为php7的分支,所以从github拉下phpredis 源码.

1.下载安装:

git clone phpredis/phpredis,此时clone失败报:error: Peer reports incompatible or unsupported protocol version. while accessing https://github.com/nicolasff/phpredis/info/refs
解决:https请求的原因更新curl libcurl库。
yum update -y nss curl libcurl
然后重新克隆
cd phpredis
which phpize
//用phpize生成configure配置文件 执行
usr/bin/phpize
./configure --with-php-config=/usr/bin/php-config //此处为php-config的路径,可用whereis php-config查看路径 或者 find / -name phpize 得到路径
make && make install
vim php.ini
//在最后添加:
extension=redis.so;
重启php service php-fpm restart
报错:
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: php_json_decode_ex in Unknown on line 0这是因为和json扩展加载顺序冲突导致的解决方法:不要在php.ini里加入extension=redis.so这行,可在php.d文件夹下创建新文件redis.ini,在redis.ini里加入extension=redis.so这行.
重启php
php -m 发现redis扩展加载上了源码安装的redis开启关闭服务操作:
1.redis关闭
redis-cli -h 127.0.0.1 -p 6379 shutdown
2.redis启动
redis-server
如果上述方式都没有成功停止redis,则可以使用终极武器 kill -9
$ ps -ef | grep redis | awk ‘{print $2}’ | xargs kill -9

三.一个简单的redis连接封装类:

<?php
class redisServer{private $redis;private $attr=["dbId"=>0];//默认dbid;protected $dbId=0;private $expireTime;private $host;private $port;public function __construct($config=[],$attr=[]){$this->redis=new Redis();$this->attr=array_merge($this->attr,$attr);$this->host=$config["host"];$this->port=$config["port"] ? $config["port"]: 6379;$this->dbId=$attr["dbId"] ?$attr["dbId"]: 0;//$this->redis->connect($config["host"],$config["port"],$this->attr["timeout"]);$this->redis->connect($config["host"],$config["port"]);$this->redis->select($this->dbId);//$this->expireTime=time()+$this->attr["timeout"];}public   function getRedis($config=[],$attr=[]){return $this->redis;}}
?>
//调用:
<?php
require_once("redisServer.php");
$redisConfig=["host"=>"192.168.66.59","port"=>6379];
$attr=["dbId"=>0];$redisServer=new redisServer($redisConfig,$attr);
$redis=$redisServer->getRedis();
$redis->set("say","hello");
var_dump($redis->get("say"));exit;
?>

四.一个简单的memcached连接封装类:

<?php
class memcachedServer{private $host;private $port;private $memcache;public function __construct($config,$attr=[]){$this->memcache= new Memcached();$this->memcache->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);$this->host=$config["host"]??'127.0.0.1';$this->port=$config["port"]??11211;//避免单个php-fpm在建立完以persistent_id命名的长连接后不再重复建立长连接if(!count( $this->memcache->getServerList())){$this->memcache->addServer($this->host,$this->port);}}public function getMem(){return $this->memcache;}
}
?>
//调用;
<?php
include_once("memcacheServer.php");
$config=["host"=>"192.168.66.59","11211"];
$memServer=new memcachedServer($config);
$mem=$memServer->getMem();
$mem->set("say","hello memcacheService1");
var_dump($mem->get("say"));exit;
?>

docker php安装gd扩展_Linux安装redis及安装php-redis扩展相关推荐

  1. 源码安装mysql数据库_Linux下源码安装mysql数据库

    1.  创建mysql安装目录: [root@localhost ~]#mkdir –pv /usr/local/mysql/ 2.  创建数据存放目录: [root@localhost ~]#mkd ...

  2. 烂泥:centos单独编译安装gd库

    本文首发于烂泥行天下. 这几天一直在弄一个商城系统,该系统的源码及数据库都已经上传并创建完毕.但是在安装该系统时,却提示缺少gd库.如下: 使用php探针查看,发现php确实没有安装gd库.如下: 目 ...

  3. docker php安装gd扩展_php安装redis扩展

    前言 本文假定已经通过编译安装php程序,如果您是通过其他方式安装的php,实现方式可能有所不同. 运行环境:Centos 7.4.PHP7.2.x. 教程 安装redis 可以通过 PEAR / P ...

  4. docker php安装gd扩展_给docker里的php安装gd扩展

    docker官方镜像为安装php扩展封装了函数,为开发者提供了很大的便利,以下以Dockerfile的形式演示安装gd扩展的方法,安装gd扩展需要安装几个依赖包,安装依赖包使用系统命令,安装命令根据基 ...

  5. docker php安装gd扩展_Docker php安装扩展步骤

    演示docker-php-source , docker-php-ext-install ,docker-php-enable-docker-configure 这四个命令到底是用来干嘛的,它们在PH ...

  6. docker php7 mysql分开,Docker nginx+php74+mysql57, 并安装gd和mysql扩展

    --subnet=172.18.0.0/24 mxd 1. 复制配置文件到宿主机: # 创建宿主机目录结构 mkdir-p /www/docker/nginx/logs mkdir-p /www/do ...

  7. docker php安装gd扩展_docker php 容器安装GD库

    用thinkphp 5 Image库,创建缩略图报错:Call to undefined function imagecreatefromjpeg(),度娘一下发现是php 环境没有配置GD库扩展,因 ...

  8. docker php安装gd扩展_docker安装php扩展gd库

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 ...

  9. docker php gd png.h,docker php 容器安装GD库

    用thinkphp 5 Image库,创建缩略图报错:Call to undefined function imagecreatefromjpeg(),度娘一下发现是php 环境没有配置GD库扩展,因 ...

最新文章

  1. java考勤与工资管理系统
  2. 在没有安装OpenCV的电脑运行OpenCV程序
  3. VueJS定义组件规则
  4. Windows Server 2016-图形化迁移FSMO角色
  5. 选防晒霜 要看四个要点 - 健康程序员,至尚生活!
  6. javascript 公历与农历相互转换工具类
  7. Linux操作系统下激活网卡命令
  8. Mysql优化(出自官方文档) - 第八篇(索引优化系列)
  9. Java Session 会话技术
  10. 妙用Vista光盘轻松制作Windows PE 2.0启动光盘/闪存
  11. 雷云驱动2从云服务器,Razer Synapse 2.0(雷蛇云驱动)
  12. Fragment和Activity之间的通信
  13. 视觉层次设计方法论:提升界面设计的易读性
  14. h标签和p标签和hr标签
  15. C++ Primer 笔记——IO类
  16. 使用R进行pubmed爬虫
  17. 大数据实时处理第一周课
  18. windows2012r2文件服务器部署,Windows server 2012部署和配置群集文件服务器
  19. Web信息架构——设计大型网站(第3版)
  20. 凸优化笔记(2)-凸函数的四种定义

热门文章

  1. php大文件上传失败的原因及解决方法
  2. 解读千人千面,洞悉数据智能的价值(附ppt下载链接)
  3. 解压.solitairetheme8文件
  4. 比特币的双花和51%算力攻击
  5. matlab 模拟滤波器转换为数字滤波器,一种模拟滤波电路数字化方法
  6. c语言分治法求众数重数_分治法求众数 - osc_twlari2q的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. facebook 广告目标详解
  8. Leetcde每日一题:160.intersection-of-two-linked-lists(相交链表)
  9. 面试题——C++/C
  10. Java并发(五)——锁