linux下,PHP操作redis及redis、php-redis的安装

redis相关文档、手册、blog:

php-redis下载:https://github.com/phpredis/phpredis;github里也有phpredis的说明和redis的语法介绍
redis中文手册:http://redisdoc.com
php操作redis说明博客:作者:春哥也编程,http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html

1、安装redis

    # wget http://download.redis.io/releases/redis-2.8.6.tar.gz
    # tar -zxvf redis-2.8.6.tar.gz 
    # cd redis-2.8.6
    # make 
    # cd src && make all

如果安装出现以下错误:
        make[1]: Entering directory `/root/xc/redis-2.6.14/src‘
            LINK redis-server
        zmalloc.o: In function `zmalloc_used_memory‘:
        /root/xc/redis-2.6.14/src/zmalloc.c:223: undefined reference to `__sync_add_and_fetch_4‘
        collect2: ld 返回 1
        make[1]: *** [redis-server] 错误 1
        make[1]: Leaving directory `/root/xc/redis-2.6.14/src‘
        make: *** [all] 错误 2

则说明平台不兼容:则使用,如果没有出现那当然好了:

    # make CFLAGS="-march=i686"

到此编译完成

#建立一个redis的工作目录

    # mkdir -pv /usr/local/webserver/redis

redis的相关配置
     # 进入到解压redis软件的src目录下,拷贝redis的命令至你的工作目录

    # cd src/
    # cp redis-cli redis-server redis-sentinel redis-benchmark redis-check-aof redis-check-dump /usr/local/webserver/redis/

#回到上一级目录,拷贝redis的配置文件redis.conf

    # cd ../
    # cp redis.conf /usr/local/webserver/redis/
    # 启动redis服务
    # vim redis.conf

daemonize yes     ##开启后台运行
    
    ##添加到redis系统服务并配置开机启动

    # cd utils/
    # ./install_server.sh 
    其他的默认,这个填上redis-server的路径:
    Please select the redis executable path [] /usr/local/webserver/redis/redis-server
    出现这个说明成功:Installation successful!
    # cd /etc/init.d/
    # mv redis_6379 redis

这样就可以用这样的方式启动reids了,而不用进入到工作目录./redis-server redis.conf了
    只需,service redis start|restart|stop)就可启动redis了

但还差一步,清空redis脚本的内容,把下面这个脚本写入,之后就可以用service redis start启动redis了

    # vim redis

    #!/bin/sh
    #chkconfig: 345 86 14
    #description: Startup and shutdown script for Redis
     
    PROGDIR=/usr/local/webserver/redis        ##这个是你redis工作目录的路径
    PROGNAME=redis-server
    DAEMON=$PROGDIR/$PROGNAME
    CONFIG=/usr/local/webserver/redis/redis.conf
    PIDFILE=/var/run/redis.pid
    DESC="redis daemon"
    SCRIPTNAME=/etc/rc.d/init.d/redisd
     
    start()
    {
             if test -x $DAEMON
             then
            echo -e "Starting $DESC: $PROGNAME"
                       if $DAEMON $CONFIG
                       then
                                echo -e "OK"
                       else
                                echo -e "failed"
                       fi
             else
                       echo -e "Couldn‘t find Redis Server ($DAEMON)"
             fi
    }
     
    stop()
    {
             if test -e $PIDFILE
             then
                       echo -e "Stopping $DESC: $PROGNAME"
                       if kill `cat $PIDFILE`
                       then
                                echo -e "OK"
                       else
                                echo -e "failed"
                       fi
             else
                       echo -e "No Redis Server ($DAEMON) running"
             fi
    }
     
    restart()
    {
        echo -e "Restarting $DESC: $PROGNAME"
        stop
             start
    }
     
    list()
    {
             ps aux | grep $PROGNAME
    }
     
    case $1 in
             start)
                       start
            ;;
             stop)
            stop
            ;;
             restart)
            restart
            ;;
             list)
            list
            ;;
     
             *)
            echo "Usage: $SCRIPTNAME {start|stop|restart|list}" >&2
            exit 1
            ;;
    esac
    exit 0

启动redis:service redis start

2、安装httpd

    # yum -y install httpd

3、安装php

   # yum -y install php

4、安装php-devel

    # yum -y install php-devel

5、安装php-redis

#安装前,安装phpsize,phpsize是php的程序,在你php的安装目录的bin目录下,执行即可
    # phpsize
    # ./configure [--enable-redis-igbinary]
   #  make && make install

---安装完成----
Build complete.
Don‘t forget to run ‘make test‘.

Installing shared extensions:     /usr/lib64/php/modules/
---------------
    
    添加redis模块:vim php.ini
    extension=redis.so
    
    重启apache服务器
    service httpd restart
    
    测试:cd /var/www/html
    vim redis.php
        <?php

$redis = new Redis();

$redis->connect(‘127.0.0.1‘,6379);
            $redis->set(‘site‘,‘xcroom‘);

echo ‘name is:‘ . $redis->get(‘site‘),‘<br />‘;

echo ‘xcroom‘;

?>
    打开浏览器:
    ------------
    name is:xcroom
    xcroom
    ------------
    测试成功
    
    php操作redis的相关函数:

1、实例化redis类
    $redis = new Redis();
    
    2、open,connect
    host: string. can be a host, or the path to a unix domain socket(主机)
    port: int, optional(端口)
    timeout: float, value in seconds (optional, default is 0 meaning unlimited)(连接超时断开的时间)
    
    
    实例:
    $redis->connect(‘127.0.0.1‘, 6379);
    $redis->connect(‘127.0.0.1‘); // port 6379 by default
    $redis->connect(‘127.0.0.1‘, 6379, 2.5); // 2.5 sec timeout.
    $redis->connect(‘/tmp/redis.sock‘); // unix domain socket.
    $redis->connect(‘127.0.0.1‘, 6379, 1, NULL, 100); // 1 sec timeout, 100ms delay between reconnection attempts.
    
    3、pconnect, popen,长连接
    
    4、auth
    $redis->auth(‘foobared‘);
    
    5、select,切换数据库
    $redis->select(0);  // switch to DB 0
    
    6、close
    
    7、setOption 设置redis模式 ,Set client option.
    
    8、getOption 查看redis设置的模式
    
    9、ping #Check the current connection status
    
    
    <?php
    $redis = new Redis();

$redis->connect(‘127.0.0.1‘);

$va = array(‘val1‘=>‘hello‘,‘val2‘=>‘xcroom‘);
    $redis->mset($va);

$v = array(‘val1‘,‘val2‘);

var_dump($redis->mget($v));
    
    
    10、事务,multi进入事务状态,exec提交
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set pname jiangxi
    QUEUED
    127.0.0.1:6379> set pcity nancheng
    QUEUED
    127.0.0.1:6379> get pname
    QUEUED
    127.0.0.1:6379> get pcity
    QUEUED
    127.0.0.1:6379> exec
    1) OK
    2) OK
    3) "jiangxi"
    4) "nancheng"
    
    php操作事务:
    <?php
        $redis = new Redis();
        if($redis->connect(‘127.0.0.1‘)){
            echo ‘connect successfully‘,‘<br />‘;
        }

echo ‘a‘;
        $ret = $redis->multi()
                    ->set(‘a‘,‘aaaa‘)
                    ->set(‘b‘,‘bbbb‘)
                    ->get(‘a‘)
                    ->get(‘b‘)
                    ->exec();
        var_dump($ret);
~   ?>
    结果:
        
    connect successfully
    array(4) {
      [0]=>
      bool(true)
      [1]=>
      bool(true)
      [2]=>
      string(4) "aaaa"
      [3]=>
      string(4) "bbbb"
    }

11、watch, unwatch  监测一个key的值是否被其它的程序更改。
    
    <?php

$redis = new Redis();

$redis->connect(‘127.0.0.1‘,6379);

$redis->watch(‘x‘);

$arr = array(‘val‘,‘keys‘);
        $redis->watch($arr);

$ret = $redis->multi()
                ->incr(x)
                ->exec();

var_dump($ret);
    ?>

12、publish * 发表内容到某一个通道。注意,该方法可能在未来里发生改变(发布)
        
            publish chanel2 "hello" 发布一个内容
    
        subscribe * 方法回调。注意,该方法可能在未来里发生改变 (订阅)
            
            subscribe chanel2
        
    13、incr, incrBy key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值
    
    
    例子:
        <?php

$redis = new Redis();

$redis->connect(‘127.0.0.1‘);

$redis->set(‘a‘,18);

$a = $redis->get(‘a‘);

echo $a,‘<br />‘;
            echo $redis->incrby($a,10); #每刷新一次值自增一
    13、sdiff、sdiffstore,求差集
        127.0.0.1:6379> sdiff key1 key2
            1) "a"
            2) "d"
            127.0.0.1:6379> sdiffstore key1 key2
            (integer) 2
            127.0.0.1:6379> smembers key1
            1) "b"
            2) "c"
            127.0.0.1:6379> smembers key2
            1) "b"
            2) "c"
    14、sinter、sinterstore,求交集
        127.0.0.1:6379> smembers key1
        1) "a"
        2) "b"
        3) "c"
        127.0.0.1:6379> smembers key2
        1) "b"
        2) "c"
        127.0.0.1:6379> sinter key1 key2
        1) "b"
        2) "c"
    15、sunion,sunionstore,求并集
        127.0.0.1:6379> smembers key1
        1) "a"
        2) "b"
        3) "c"
        127.0.0.1:6379> smembers key2
        1) "b"
        2) "c"
        127.0.0.1:6379> sinter key1 key2
        1) "a"
        2) "b"
        3) "c"
    
    16、sMembers, sGetMembers 返回名称为key的set的所有元素
   
    17、zAdd(key, score,member):向名称为key的zset中添加元素member,score用亍排序。如果该元素已经存在,
        则根据score更新该元素的顺序。
        zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中
         的index从start到end的所有元素
    <?php

$redis = new Redis();

$redis->connect(‘127.0.0.1‘);

echo ‘a‘;

$redis->zadd(‘love‘,1,‘a‘);
        $redis->zadd(‘love‘,4,‘b‘);
        $redis->zadd(‘love‘,3,‘c‘);

var_dump($redis->zrange(‘love‘,0,-1));
    
    
    18、zcount:
    $redis->zCount(key, star, end);
    返回名称为key的zset中score >= star且score <= end的所有元素的个数,score为用于排序的数字
    
    echo $redis->zcount(‘love‘,1,4);
    
    
    19、zrank、zrevrank
    
    $redis->zadd(‘love‘,1,‘a‘);
    $redis->zadd(‘love‘,4,‘b‘);
    $redis->zadd(‘love‘,3,‘c‘);
    
    echo $redis->zrank(‘love‘,‘c‘);
    echo $redis->zrevrank(‘love‘,‘b‘);
    返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回“null”。zRevRank 是从大到小排序 zIncrBy $redis->
    
    
    redis 操作相关

flushDB 清空当前数据库
    
    flushAll 清空所有数据库
    
    
    randomKey 随机返回key空间的一个key
    
    $key = $redis->randomKey();
    
    select 选择一个数据库

move 转移一个key到另外一个数据库
    
    $redis->select(0); // switch to DB 0
    
    $redis->set(‘x‘, ‘42‘); // write 42 to x
    
    $redis->move(‘x‘, 1); // move to DB 1
    
    $redis->select(1); // switch to DB 1
    
    
    rename, renameKey 给key重命名
    
    renameNx 不remane类似,但是,如果重新命名的名字已经存在,不会替换成功
    
    
    setTimeout, expire 设定一个key的活劢时间(s)
    
        $redis->setTimeout(‘x‘, 3);
    
    expireAt key存活到一个unix时间戳时间
    
        $redis->expireAt(‘x‘, time() + 3);
    
    dbSize 查看现在数据库有多少key
    
        $count = $redis->dbSize();
    
    auth 密码认证
    
        $redis->auth(‘foobared‘);

bgrewriteaof 使用aof来进行数据库持久化
    
        $redis->bgrewriteaof();
    
    slaveof 选择从服务器
    
        $redis->slaveof(‘10.0.1.7‘, 6379);
    
    save 将数据同步保存到磁盘
    
    bgsave 将数据异步保存到磁盘
    
    lastSave 返回上次成功将数据保存到磁盘的Unix时戳
    
    info 返回redis的版本信息等详情
    
    type 返回key的类型值

string: Redis::REDIS_STRING
    
    set: Redis::REDIS_SET
    
    list: Redis::REDIS_LIST
    
    zset: Redis::REDIS_ZSET
    
    hash: Redis::REDIS_HASH
    
    other: Redis::REDIS_NOT_FOUND

时间: 2024-10-05 05:10:09

linux下,PHP操作redis及redis、php-redis的安装的相关文章

Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数

文章转载:http://blog.snsgou.com/post-793.html 1.查看物理CPU的个数 [[email protected] ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l1 2.查看逻辑CPU的个数 [[email protected] ~]# cat /proc/cpuinfo |grep "processor"|wc -l4 3.查看CPU是几核(即,核心数) [[em

Linux下RPM操作

在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装.卸载及管理等操作.RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件.Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装. RPM 有五种操作模式,分别为:安装.卸载.升级.查询和验证. RPM 安装操作 命令: rpm -i 需要安装的包文件名 举例如下: rpm -i example.rpm 安装 example.rp

linux下mysql操作的命令

最近在学习mysql,还是只菜鸟,找到下面篇文章对初学者挺有用的,所以共享下 1.linux下启动mysql的命令:   mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令:   mysqladmin restart /ect/init.d/mysql restart (前面为mysql的安装路径) 3.linux下关闭mysql的命令:   mysqladmin shutdown   /ect/

Linux下python3、virtualenv、Mysql、redis安装配置

一.在Linux安装python解释器 1.下载python3源码包 cd /opt/ wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 2.下载python3编译的依赖包(复制粘贴下载即可) yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel read

Linux下Nginx、PHP、MySQL、Redis开机自启动设置

一.Nginx开机启动设置 1.在/etc/init.d/目录下创建脚本 vi /etc/init.d/nginx 2.更改脚本权限 chmod 775 /etc/init.d/nginx 3.编写脚本内容 #! /bin/shset -ePATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binDESC="nginx daemon"NAME=nginxDAEMON=/usr/local/nginx/sbin/$N

python opencv linux下合作操作摄像头

设想: 之前使用C#控制摄像头的,现在厌烦了windows,决定转移到linux下玩耍.感觉能够python语言特有的好入手,正好替代C#,选择了deepin2014.1作为试验品.现在的设想是第一步实现在自己电脑上对视频的采集,第二步实现视频传输.慢慢来吧.百度说python想操作摄像头,VideoCapture是windows特有的,linux要用opencv才行. 下载: 百度下载了最新的opencv,2.4.9版本,正好和deepin2014.1自带的python2.7般配,不冲突.且发

【大话QT之五】Windows与Linux下文件操作监控的实现

一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场上网盘实现有一些的不同,主要在客户端与服务器端的操作需要双向进行,即:用户在客户端的操作需要及时同步到服务器端:在服务器端作业渲染生成的文件要及时同步到客户端.即:用户不在需要单独的下载数据,而是在作业运行的同时,渲染就过就会自动同步到客户端,大大缩短了等待时间.当然,无论是在客户端还是在服务端都面

【转】Linux下mysql操作

本文转自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/18/2216279.html 1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令:mysqladmin restart/ect/init.d/mysql restart (前面为mysql的安装路径) 3.linux下关闭mysql的命

liunx学习(一):linux下目录操作大全

Linux C函数之文件及目录函数(全):http://blog.sina.com.cn/s/blog_695e489c01013ldd.html linux目录操作发:http://www.cnblogs.com/onlycxue/p/3154341.html linux中遍历文件夹下的所有文件 :http://www.jb51.net/article/37664.htm Linux下C获取文件夹下所有文件名:http://blog.csdn.net/sinat_30071459/articl

Windows与Linux下文件操作监控的实现

一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场上网盘实现有一些的不同,主要在客户端与服务器端的操作需要双向进行,即:用户在客户端的操作需要及时同步到服务器端:在服务器端作业渲染生成的文件要及时同步到客户端.即:用户不在需要单独的下载数据,而是在作业运行的同时,渲染就过就会自动同步到客户端,大大缩短了等待时间.当然,无论是在客户端还是在服务端都面