zoukankan      html  css  js  c++  java
  • Linux 之 Redis

    Linux 之 Redis


      参考教程:【千峰教育


    一、Redis简介:

      说明:  

        1、也是一种类似于Memcached的key-value机制的存储服务
        2、是非关系型数据库(NoSQL)的一种
        3、官网:www.redis.io,中文网:www.redis.cn

      特点:

        1、能够持久化存储数据,而Memcached不能
        2、value支持更多的数据类型
        3、支持数据备份,主从模式 


    二、Redis安装:

      1、解压:
        tar -zxvf redis-3.2.8.tar.gz
        (我选择的版本:wget http://download.redis.io/releases/redis-5.0.3.tar.gz)
      2、移动
        cp -R redis-3.2.8 /usr/local/redis
      3、安装(无需配置编译)
        cd /usr/local/redis
        make install
      4、redis服务介绍:
        安装完成后,/usr/local/redis/src 目录中有两个服务程序
        客户端:redis-cli
        服务端:redis-server
      5、服务端测试:./redis-server

      6、将服务添加到环境变量中:

        默认配置文件路径:/usr/local/redis/redis.conf
        添加环境变量:
          vim /etc/profile
          export PATH=$PATH:/usr/local/redis/src/
          source /etc/profile
      7、设置开机启动:
        (1)编辑配置文件
          cd /usr/local/redis/
          cp redis.conf redis.conf.bak #备份一下
          vim redis.conf
          daemonize yes #默认是no,是否以守护进程的方式运行
        (2)编辑启动脚本文件
          cd /usr/local/redis/utils/
          cp redis_init_script redis_init_script.bak #备份一下
          vim redis_init_script
          EXEC=/usr/local/redis/src/redis-server
          CLIEXEC=/usr/local/redis/src/redis-cli
          CONF=/usr/local/redis/redis.conf
        (3)测试启动脚本(可以通过ps查看并用redis-cli连接)
          ./redis_init_script start
        (4)开机启动
          vim /etc/rc.local
          添加:
          /usr/local/redis/utils/redis_init_script start
      8、服务测试:
        (1)查看进程
          ps aux | grep redis
        (2)使用客户端连接
          /usr/local/redis/src/redis-cli
          参数:
            -h 主机
            -p 端口号,默认6379
            -a 指定密码
          输入:ping,显示pong,表示通了。
      9、设置密码
        (默认是没有密码的)
        (1)单次生效
          设置密码:config set requirepass 123456
          获取密码:config get requirepass
          授权使用:auth 123456
        (2)永久生效
          修改配置文件:vim redis.conf
          取消requirepass行前的注释,后面加上密码即可。
          requirepass 123456
          说明:启动密码后,无密码也可以连接,但是没有权限进行操作。
      10、客户端操作:
        常用命令:
          ping:查看服务器是否允许(结果显示pong表示允许)
          quit:关闭当前连接
          auth:验证当前连接(auth 密码)
          select:选择库,1-15,共16个,默认使用0(示例:select 2)
          flushdb:删除当前数据库数据
          flushall:删除所有数据库数据
          DEL:删除键
          EXISTS:检查键是否存在
      11、数据类型介绍:
          (1)字符串(String):是最基本的数据类型,与Memcached的Key-Value一样。
            设置:SET key value
            获取:GET key
          (2)哈希(Hash):是一个键值对集合,特别适合存储对象。
            设置:HMSET user:1 name zhangsan age 12
            获取所有信息:HGETALL user:1
            获取单个信息:HGET user:1 name
          (3)列表(List):按照插入顺序排序,可以添加一个元素到列表的头部或尾部。
            左侧压入:lpush key value [value2 value3 ...]
            右侧压入:rpush key value [value2 value3 ...]
            左侧弹出:lpop
            右侧弹出:rpop
            范围显示:lrange key start stop(示例:lrange key 0 -1显示全部)
            显示个数:llen key
          (4)集合(Set):string类型的无序集合,集合中的数据是唯一的。
            添加数据:sadd key value [value2 value3 ...]
            显示数据:smembers key
            显示总数:scard key
            随机移除:spop key [count] 默认随机移除一个

          (5)有序集合(zset:zort set)
            不同于set的是每个元素都会关联一个double类型的分数。
            redis正是通过分数来为集合中的成员进行从小到大的排序。
            添加数据:zadd key score value
            显示数据:zrange key start stop
            显示总数:zcard key
            显示范围:zcount key start stop
            显示序号:zrank key member
            显示分数:zscore key member


    三、PHP操作redis:

      1、安装php-redis扩展:
        教程中的示例:  

          下载:https://github.com/phpredis/phpredis/tree/php7/phpredis-php7.zip
          解压:unzip phpredis-php7.zip
          进入:cd phpredis-php7
          解压:phpize
          配置:./configure --with-php-config=/usr/local/php7/bin/php-config
          编译:make
          安装:make install
        我选择的版本:
          下载:wget https://github.com/phpredis/phpredis/archive/4.3.0.tar.gz
          解压:tar -zxvf 4.3.0.tar.gz
          进入解压后的目录:cd 4.3.0
          解压:phpize
          配置:./configure --with-php-config=/usr/local/php7/bin/php-config
          编译:make
          安装:make install

        安装完成,结果显示(这里的路径下面要用):

        Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20180731/

      2、修改PHP配置文件php.ini
        vim /usr/local/php7/etc/php.ini
        将上一步的路径添加进来
        extension=/usr/local/php7/lib/php/extensions/no-debug-no-zts-20180731/redis.so
      3、重启php-fpm
        service php-fpm restart
      4、测试扩展库是否安装成功
        phpinfo()
      5、php代码操作redis
        示例一:

    //创建对象
    $redis = new Redis();
    //连接服务器
    $redis->connect('127.0.0.1',6379);
    //密码认证
    $redis->auth('123456');
    //设置
    $redis->set('name','zhang san');
    //获取
    $name = $redis->get('name');
    var_dump($name);

      示例二:

        (假设要进行抢购秒杀,lpush.php记录抢到的用户,rpop.php处理队列中的中奖用户。)
        lpush.php:

    $redis = new Redis();
    $redis->connect('127.0.0.1',6379);
    $redis->auth('123456');
    //记录抢到的用户,为了测试这里用随机的名字代替,实际是记录真实的用户
    $redis->lpush('user_id','user_'.mt_rand(1,10000));

        rpop.php: 

    $redis = new Redis();
    $redis->connect('127.0.0.1',6379);
    $redis->auth('123456');
    var_dump($redis->rpop('user_id'));

    注意事项:

      选择php-redis扩展时,选择不同的版本,可能结果不一样,我开始选择的是,php官网的redis-2.2.5.tgz版本,编译时就报错:

    ...
    
    ...,致命错误:ext/standard/php_smart_str.h:没有那个文件或目录
    ...
    编译中断。
    make: *** [redis.lo] 错误 1

    在网上搜索后,得到的说法是:
    因为最新的 phpredis 分了几大分支,针对最新的PHP稳定发行版 php7 有专门为php7的分支,
    所以我们从github拉下phpredis 源码。

    然后从github上找了一个版本:https://github.com/phpredis/phpredis/archive/4.3.0.tar.gz。

    下载重新安装成功了。


  • 相关阅读:
    Linux网络相关命令firewalld和netfilter、iptables 使用(6/22)
    Linux时间设置与iptables命令
    负载均衡集群ipvsadm命令及基本用法
    LVS原理详解以及部署
    linux比较两个文件的不同(6/21)
    如何使用sql函数平均值、总数、最小值、最大值
    python中数据类型转换
    使用 getopt 处理命令行长参数
    Mysql常用命令行大全
    C#控制台程序使用Log4net日志组件
  • 原文地址:https://www.cnblogs.com/gyfluck/p/10530186.html
Copyright © 2011-2022 走看看