美文网首页Linux的那些事Linux学习|Gentoo/Arch/FreeBSD我用 Linux
CentOS下编译安装redis,并编译php的redis.so

CentOS下编译安装redis,并编译php的redis.so

作者: hellojammyPlus | 来源:发表于2015-02-10 17:41 被阅读2061次

    点击访问原文
    您还可以加入全栈技术交流群(QQ群号:254842154)


    介绍

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    官网:http://www.redis.io

    下面来看看在centos下如何安装redis

    下载安装

    wget http://download.redis.io/redis-stable.tar.gz
    tar -zxvf redis-stable.tar.gz
    cd redis-stable
    make
    make install
    

    配置方法一(推荐使用)

    在redis安装目录下进入utils目录,执行自动安装脚本

    cd utils/
    //执行脚本,然后一路回车都按照默认设置执行
    ./install_server.sh 
    
    //执行完脚本后,会出现以下提示:
    Selected config:
    Port           : 6379
    Config file    : /etc/redis/6379.conf
    Log file       : /var/log/redis_6379.log
    Data dir       : /var/lib/redis/6379
    Executable     : /usr/local/bin/redis-server
    Cli Executable : /usr/local/bin/redis-cli
    

    启动/关闭服务命令

    //查看是否启动redis服务
    ps -ef | grep redis
    //启动
    /etc/init.d/redis_6379 start
    //通过配置文件启动
    /usr/local/bin/redis-server /etc/redis/redis.conf
    //关闭
    /etc/init.d/redis_6379 stop
    //关闭,假如是默认端口号,可以省略 -p 参数
    /usr/local/bin/redis-cli -p 6379 shutdown
    

    给redis加密码锁,连接的时候就需要密码

    //编辑配置文件 
    vim /etc/redis/6379.conf
    //添加这一行,密码自行设置
    requirepass "redis-pass-xxyyzz"
    //重启redis服务
    /etc/init.d/redis_6379 stop
    /etc/init.d/redis_6379 start
    

    配置方法�二

    拷贝配置文件到 /etc下

    cp /tmp/redis-stable/redis.conf /etc/
    

    编辑sysctl.conf文件

    vi /etc/sysctl.conf
    //增加下面这句
    vm.overcommit_memory = 1
    

    新建自启动文件redis

    vi /etc/init.d/redis
    

    输入以下内容,路径部分根据需要修改:

    #!/bin/bash
    #chkconfig: 2345 80 90
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    REDIS_CLI=/usr/local/bin/redis-cli
    
    PIDFILE=/var/run/redis.pid
    CONF="/etc/redis.conf"
    AUTH="1234"
    
    case "$1" in
            start)
                    if [ -f $PIDFILE ]
                    then
                            echo "$PIDFILE exists, process is already running or crashed."  
                    else
                            echo "Starting Redis server..."  
                            $EXEC $CONF
                    fi
                    if [ "$?"="0" ]
                    then
                            echo "Redis is running..."  
                    fi
                    ;;
            stop)
                    if [ ! -f $PIDFILE ]
                    then
                            echo "$PIDFILE exists, process is not running."  
                    else
                            PID=$(cat $PIDFILE)
                            echo "Stopping..."  
                            $REDIS_CLI -p $REDISPORT -a $AUTH  SHUTDOWN
                            sleep 2
                            while [ -x $PIDFILE ]  
                            do
                                    echo "Waiting for Redis to shutdown..."  
                                    sleep 1
                            done
                            echo "Redis stopped"  
                    fi
                    ;;
            restart|force-reload)
                    ${0} stop
                    ${0} start;;
            *)
                    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
                    exit 1
    esac
    

    esc后:wq保存退出

    添加自启动

    //修改文件权限
    chmod 755 /etc/init.d/redis
    //添加自启动
    chkconfig --add redis
    
    //chkconfig -leve 启动级别 服务名 on 
    //(说明:3级别代表在命令行模式启动,
    // 5级别代表在图形界面启动,on表示开启)
    chkconfig --level 345 redis on
    //
    chkconfig --list redis
    
    //关闭自启动
    chkconfig redis off
    

    启动redis

    service redis start
    //或者
    /etc/init.d/redis start
    

    通过客户端命令行连接redis

    //连接
    redis-cli -h 127.0.0.1 -p 6379
    //带密码的连接方式
    redis-cli -h 127.0.0.1 -p 6379 -a "redis-pass-xxyyzz"
    

    远程连接redis

    在实际开发过程中,本地调试程序可能需要远程连接到测试服务器的redis。安装完redis之后,默认是不支持远程直接连接的。需要做些简单的设置。

    1、检查是否能远程连接。假设测试服务器ip为 11.12.13.14

    //看是否能连接成功,假如不能,则执行2,3步骤
    redis-cli -h 11.12.13.14 -p 6379
    

    2、检查远程服务器的6379端口是否被防火墙拦截。假如未开启,则开启

    /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
    /etc/init.d/iptables restart
    

    3、编辑redis配置文件,允许所有ip连接

    vim /etc/redis/6379.conf
    //找到bind 127.0.0.1这一行,替换成下面这行
    //假如没有bind 127.0.0.1,则新增下面这行
    bind 0.0.0.0
    //重启,假如没有密码,则省略-a参数和后面的密码
    redis-cli -p 6379 -a "redis-pass-xxyyzz" shutdown
    /etc/init.d/redis_6379 start
    

    常用命令

    redis 127.0.0.1:6379> info  #查看server版本内存使用连接等信息  
    
    redis 127.0.0.1:6379> client list  #获取客户连接列表  
    
    redis 127.0.0.1:6379> client kill 127.0.0.1:33441 #终止某个客户端连接  
    
    redis 127.0.0.1:6379> dbsize #当前保存key的数量  
    
    redis 127.0.0.1:6379> save #立即保存数据到硬盘  
    
    redis 127.0.0.1:6379> bgsave #异步保存数据到硬盘  
    
    redis 127.0.0.1:6379> flushdb #当前库中移除所有key  
    
    redis 127.0.0.1:6379> flushall #移除所有key从所有库中  
    
    redis 127.0.0.1:6379> lastsave #获取上次成功保存到硬盘的unix时间戳  
    
    redis 127.0.0.1:6379> monitor #实时监测服务器接收到的请求  
    
    redis 127.0.0.1:6379> slowlog len #查询慢查询日志条数  
    (integer) 3   
    
    redis 127.0.0.1:6379> slowlog get #返回所有的慢查询日志,最大值取决于slowlog-max-len配置  
    
    redis 127.0.0.1:6379> slowlog get 2 #打印两条慢查询日志  
    
    redis 127.0.0.1:6379> slowlog reset #清空慢查询日志信息 
    

    XAMPP扩展redis

    通过phpize扩展。下载phpredis,github地址:

    https://github.com/nicolasff/phpredis

    wget https://github.com/phpredis/phpredis/archive/develop.zip
    unzip develop.zip
    //进入目录
    cd phpredis-develop
    //phpize,路径根据实际情况修改
    /Applications/XAMPP/xamppfiles/bin/phpize
    //配置。路径根据实际情况修改
    ./configure --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config
    //make
    make
    //通过sudo方式获得权限,因为这一步会编译生成redis.so文件
    sudo make install
    //编译完成后,会看到类似这样的输出,代表生成redis.so成功,可以进到目录去查看是否有生成。
    Installing shared extensions:     /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20121212/
    
    //php.ini中加入redis.so扩展
    vim /Applications/XAMPP/etc/php.ini
    //加入这一行,保存退出。重启XAMPP
    extension=redis.so
    

    最后记得要重启XAMPP。

    在centos下扩展安装redis方法类似,记得要重启apache或者nginx、php-fpm。可能会遇到的问题主要有以下几个:

    1、运行phpize时提示:

    bash: phpize: command not found
    

    这是需要安装php-devel:

    yum install php-devel
    

    2、运行php --version 时,提示版本不兼容,报错如下:

    PHP Warning: PHP Startup: redis: Unable to initialize module
    Module compiled with module API=20050922
    PHP compiled with module API=20090626
    These options need to match in Unknown on line 0
    

    报错的差异可能是API的版本不一样。导致这个的原因主要是,编译redis.so时用的php module版本是20050922,而现在的php module版本是20090626。即编译时用的phpize版本和当前的phpize版本不兼容。可能是你进行了php的升级。

    解决方法很简单:

    (1)、删除解压出来的redis整个目录,和生成的redis.so文件(find / -name redis.so搜索)。

    (2)、检测/usr/sbin 目录下是否存在php、php-config、php-cgi、phpize 文件,如果存在删除这些文件,并重新建立对应的软连接到这个目录

    ln -s php /usr/local/php/bin/php
    ln -s php-cgi /usr/local/php/bin/php-cgi
    ln -s php-config /usr/local/php/bin/php-config
    ln -s phpize /usr/local/php/bin/phpize
    

    以上目录以php的当前安装目录为准。

    (3)、最后再重新解压,编译。这样就不会报错了。

    (有时候第二步不一定需要做)

    最后,通过phpinfo来查看是否安装成功redis扩展:

    1.pic.jpg

    参考:

    1、http://www.jeftom.com/?p=318

    2、http://blog.csdn.net/love__coder/article/details/8271832

    3、http://blog.csdn.net/love__coder/article/details/8272180

    4、http://blog.csdn.net/love__coder/article/details/8274331

    5、http://blog.csdn.net/xxmzumeng/article/details/38869799

    6、http://www.111cn.net/phper/linux-php/52319.htm

    相关文章

      网友评论

      本文标题:CentOS下编译安装redis,并编译php的redis.so

      本文链接:https://www.haomeiwen.com/subject/zamjxttx.html