zoukankan      html  css  js  c++  java
  • redis的安装,使用

    一:安装redis
      1》下载
        wget http://download.redis.io/releases/redis-3.2.0.tar.gz
      2》解压安装包
        tar xzf redis-3.2.0.tar.gz
      3》安装,编译源代码
        cd redis-3.2.0
        make
      4》编译完成后在src目录下,启动Redis服务:
         src/redis-server
      5》redis内置的客户端命令redis-cli进行使用:
        src/redis-cli
        redis> set foo 你好    //写入
        OK
        redis> get foo    //获取
        "你好"

        (此时说明redis安装成功)
        redis> exit     //退出客户端
    redis 官网:http://www.redis.cn/
    二:安装php的redis的拓展

       1. [root@VM_34_34_centos /]# wget https://github.com/phpredis/phpredis/archive/2.2.8.tar.gz      //下载redis拓展
       2. [root@VM_34_34_centos /]# tar zxvf 2.2.8.tar.gz       //解压
       3. [root@VM_34_34_centos /]# cd    phpredis-2.2.8        //进入phpredis-2.2.8目录    
       4. [root@VM_34_34_centos phpredis-2.2.8]# /phpstudy/server/php/bin/phpize        //执行命令
        /phpstudy/server/php/bin/phpize(phpize的位置,根据你的php安装目录有所不同),得到configure文件;
       5.[root@VM_34_34_centos phpredis-2.2.8]# /phpstudy/server/php/bin/phpize    //执行命令
       6.[root@VM_34_34_centos phpredis-2.2.8]# ./configure --with-php-config=/phpstudy/server/php/bin/php-config    
        //然后再执行 ./configure --width-php-config=/phpstudy/server/php/bin/php-config(php-config目录位置,
        可通过find / -name  php-config命令找到php-config文件)得到makefile文件
       7.[root@iZ94ijenvxaZ phpredis-2.2.8]# make & make install      //编译安装
        安装完成之后,出现下面的安装路径
            /phpstudy/server/php/lib/php/extensions/no-debug-non-zts-20121212/
       8.[root@iZ94ijenvxaZ phpredis-2.2.8]# vim /phpstudy/server/php/etc/php.ini
        //#编辑配置文件,在最后一行添加以下内容
        添加
              extension="redis.so"
        :wq! #保存退出
      9. [root@iZ94ijenvxaZ phpredis-2.2.8]# /phpstudy/phpstudy.sh restart        //重启服务器哦

    三:redis在php中的使用
     1.数据类型以及使用场景
          1>string(字符串):String是最常用的一种数据类型,普通的key/value存储都可以归为此类,这里就不所做解释了。
          2>hash(哈希):存储一个用户信息对象数据,用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,
            如果用普通的key/value结构来存储(其实存的是以为关联数组)
          3>list(列表):Redis list的应用场景非常多,也是Redis最重要的数据结构之一,比如twitter的关注列表,粉丝列表等
          都可以用Redis的list结构来实现,并且我们在做秒杀的时候,为了可以让mysql在高并发的时候不会崩掉,可以
          先把数据存入队列,在做数据库添加(使用的是一维索引数组),
          4>set(集合):Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存
                   储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集
              合内的重要接口,这个也是list所不能提供的。
          5>zset(sorted set:有序集合):Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以
              通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的
             并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为
             score来存储,这样获取时就是自动按时间排好序的。
     2.举例使用:
        $redis = new redis();
        $redis->connect('127.0.0.1', 6379);
        var_dump($redis_);  //如果为true,连接成功
         1>.string(key-value)    比较简单可以存字符串,数据,最大键可以存512MB。
          $arr=json_encode(['q','w']);
          $redis->set('ce',$arr);     //存
          $redis->delete('ce');      //删除缓存
          $arr= $redis->get('ce');    //取
          var_dump($arr);
         2>.Hash (哈希)   Redis hash是一个string类型的field和value的映射表,hash特别适合用
              于存储对象。相对于将对象的每个字段存成单个 string 类型。将一个对象 存储在 hash 类
              型中会占用更少的内存,并且可以更方便的存取整个对象。
              $redis->delete('test');    //删除
              $redis->hSet('test', 'a', 'x');
              $redis->hSet('test', 'b', 'y');
              $redis->hSet('test', 'c', 'z');
               print_r($redis->hkeys('test'));  //结果:Array ( [0] => a [1] => b [2] => c )
               print_r($redis->hvals('test'));  //结果:Array ( [0] => x [1] => y [2] => z )
               print_r($redis->hgetall('test'));  //结果:Array ( [a] => x [b] => y [c] => z )
          3>list(对列)      列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
             $redis->lpush('test','a');       //lpush lpush lpushkey string 在 key 对应 list 的头部添加字符串元素,
                    // 返回 1 表示成功,0 表示 key 存 在且不是 list 类型
              $redis->delete('test');
              $redis->lpush('test','c');
              $redis->lpush('test','3');
              $redis->rpush('test','a');      // 对应 list 的尾部添加字符串元素。
              $redis->rpush('test','b');
              $redis->rpush('test','c');
              $redis->rpush('test','a');
         print_r($redis->lRange('test','0','3'));    //结果:Array ( [0] => c [1] => b [2] => a [3] => a )   // 返回指定区间      内的元素
        4>序列
               $redis->sadd('test','111');   //存
               $redis->sadd('test','333');
               print_r($redis->sort('test'));   //结果:Array ( [0] => 111 [1] => 333 )
     3.持久化:
        通常 Redis 将数据存储在内存中或虚拟内存中,它是通过以下两种方式实现对数据的持 久化。
        1> 快照方式:(默认持久化方式)
                   这种方式就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为 dump.rdb。 客户
            端也可以使用 save 或者 bgsave 命令通知 redis 做一次快照持久化。save 操作是在 主线程中保存
            快照的,由于 redis 是用一个主线程来处理所有客户端的请求,这种方式会阻 塞所有客户端请求。所
            以不推荐使用。另一点需要注意的是,每次快照持久化都是将内存数 据完整写入到磁盘一次,并不是
            增量的只同步增量数据。如果数据量大的话,写操作会比较 多,必然会引起大量的磁盘 IO 操作,可能
            会严重影响性能。
       注意:由于快照方式是在一定间隔时间做一次的,所以如果 redis 意外当机的话,就会 丢失最后一次快照
               后的所有数据修改。
        2>日志追加方式
        这种方式 redis 会将每一个收到的写命令都通过 write 函数追加到文件中(默认 appendonly.aof)。
           当 redis 重启时会通过重新执行文件中保存的写命令来在内存中重建整 个数据库的内容。当然由于操作系
           统会在内核中缓存 write 做的修改,所以可能不是立即写 到磁盘上。这样的持久化还是有可能会丢失部分修改。
          不过我们可以通过配置文件告诉 redis 我们想要通过 fsync 函数强制操作系统写入到磁盘的时机。有三种方式
           如下(默认是: 每秒 fsync 一次)
              appendonlyyes //启用日志追加持久化方式
         appendfsyncalways //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全 的持久化,不推荐使用
         appendfsynceverysec //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折 中,推荐
         appendfsyncno //完全依赖操作系统,性能最好,持久化没保证
               日志追加方式同时带来了另一个问题。持久化文件会变的越来越大。例如我们调用 incr test 命令 100 次,文件中必
        须保存全部 100 条命令,其实有 99 条都是多余的。因为要恢复 数据库状态其实文件中保存一条 settest100 就够了。为
        了压缩这种持久化方式的日志文件。 redis 提供了 bgrewriteaof bgrewriteaof bgrewriteaof bgrewriteaof命令。收
         到此命令 redis 将使用与快照类似的方式将内存中的数据 以命令的方式保存到临时文件中,最后替换原来的持久化日志文
        件。

  • 相关阅读:
    STM32的DMA
    stm32f1的IO,推挽与开漏
    STM32_GPIO配置及库函数讲解——独立按键
    STM32-外部中断学习笔记
    关于STM32的NVIC问题
    梯度下降<1>
    QString toInt()函数慎用
    linux→查看当前系统时间和修改系统当前时间
    oracle函数→数值型函数
    oracle函数→字符型函数
  • 原文地址:https://www.cnblogs.com/taikongliu/p/6733418.html
Copyright © 2011-2022 走看看