浏览模式: 标准 | 列表

    Windows环境安装PHP redis扩展

    发布时间:2017-11-01, 18:13:40 | 评论:5 | 分类:PHP

    1、简介
    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

    在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,

    2、windows下安装
    下载地址。下载到的Redis支持32bit和64bit。把文件内容拷贝到需要安装的目录下,比如:D:\dev\redis-2.4.5。

    打开一个cmd窗口(不能关闭),使用cd命令切换到指定目录(D:\dev\redis-2.4.5)运行
    redis-server.exe redis.conf
    Run code
    Cut to clipboard
      。运行以后出现如下界面。
      这就说明Redis服务端已经安装成功。

      重新打开一个cmd窗口(不能关闭)(windows系统环境服务器安装使用Sphinx和coreseek中文分词核心配置uni.lib词典 将SPHINX安装成windows服务程序,这样系统启动时会自行运行sphinx),使用cd命令切换到指定目录(D:\dev\redis-2.4.5)运行
      redis-cli.exe -h 127.0.0.1 -p 6379
      Run code
      Cut to clipboard
        ,其中 127.0.0.1是本地ip,6379是redis服务端的默认端口。运行成功如下图所示。
        这样,Redis windows环境下搭建已经完成,

        测试:存储一个key为test,value为hello word的字符串,然后获取key值。
        正确输出 hell word,

        3、PHP中使用
        下载 dll文件 官方
        首先把php_redis.dll 和 php_igbinary.dll 放入PHP的ext文件夹,

        Non Thread Safe 和 Thread Safe 两个版本
        通过phpinfo(); <?php phpinfo(); ?> 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全, 如果是:enabled,一般来说应该是ts版,否则是nts版。
        Run code
        Cut to clipboard


          然后在php.ini配置文件里添加如下代码(可能需要填写完整路径):
          extension=php_igbinary.dll extension=php_redis.dll extension="D:\UPUPW_NP5.6-1511\UPUPW_NP5.6\PHP5\ext\php_igbinary.dll" extension="D:\UPUPW_NP5.6-1511\UPUPW_NP5.6\PHP5\ext\php_redis.dll"
          Run code
          Cut to clipboard

            重启web服务器(可能需要重启服务器)

            注意:extension=php_igbinary.dll一定要放在extension=php_redis.dll的前面,否则此扩展不会生效

            4、PHP中使用
            <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $redis->set('test','hello redis'); echo $redis->get('test'); ?>
            Run code
            Cut to clipboard

              输出 hello redis 成功!

              PHP操作redis

              发布时间:2018-08-23, 14:58:09 | 评论:0 | 分类:PHP


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

              Redis支持的数据类型有 Stirng(字符串), List(列表), Hash(字典), Set(集合), Sorted Set(有序集合);
              redis版本是Redis 2.6.12 系统是在Windows+Apache2.4+php5.6

              连接
              //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //检测是否连接成功 echo "Server is running: " . $redis->ping(); // 输出结果 Server is running: +PONG
              Run code
              Cut to clipboard

                Strng(字符串)
                // 设置一个字符串的值 $redis->set('cat', 111); //获取一个字符串的值 echo $redis->get('cat'); // 111 // 重复set $redis->set('cat', 222); echo $redis->get('cat'); // 222
                Run code
                Cut to clipboard

                  List(列表)
                  //列表 //存储数据到列表中 $redis->lpush('list', 'html'); $redis->lpush('list', 'css'); $redis->lpush('list', 'php'); //获取列表中所有的值 $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //从右侧加入一个 $redis->rpush('list', 'mysql'); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //从左侧弹出一个 $redis->lpop('list'); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //从右侧弹出一个 $redis->rpop('list'); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; // 结果 // Array ( [0] => php [1] => css [2] => html ) // Array ( [0] => php [1] => css [2] => html [3] => mysql ) // Array ( [0] => css [1] => html [2] => mysql ) // Array ( [0] => css [1] => html )
                  Run code
                  Cut to clipboard

                    <?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //列表 //存储数据到列表中 $redis->lpush('list', 'html'); $redis->lpush('list', 'css'); $redis->lpush('list', 'php'); $redis->lpush('list', 'mysql'); $redis->lpush('list', 'javascript'); $redis->lpush('list', 'ajax'); //获取列表中所有的值 $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //获取列表的长度 $length = $redis->lsize('list'); echo $length;echo '<br>'; //返回列表key中index位置的值 echo $redis->lget('list', 2);echo '<br>'; echo $redis->lindex('list', 2);echo '<br>'; //设置列表中index位置的值 echo $redis->lset('list', 2, 'linux');echo '<br>'; $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //返回key中从start到end位置间的元素 $list = $redis->lrange('list', 0, 2); print_r($list);echo '<br>'; $list = $redis->lgetrange('list', 0, 2); print_r($list);echo '<br>'; //截取链表中start到end的元素     //截取列表后列表发生变化,列表保留截取的元素,其余的删除 $list = $redis->ltrim('list', 0, 1); print_r($list);echo '<br>'; $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; // 结果 // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css [5] => html ) // 6 // mysql // mysql // 1 // Array ( [0] => ajax [1] => javascript [2] => linux [3] => php [4] => css [5] => html ) // Array ( [0] => ajax [1] => javascript [2] => linux ) // Array ( [0] => ajax [1] => javascript [2] => linux ) // 1 // Array ( [0] => ajax [1] => javascript )
                    Run code
                    Cut to clipboard

                      <?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //列表 //存储数据到列表中 $redis->lpush('list', 'html'); $redis->lpush('list', 'html'); $redis->lpush('list', 'html'); $redis->lpush('list', 'css'); $redis->lpush('list', 'php'); $redis->lpush('list', 'mysql'); $redis->lpush('list', 'javascript'); $redis->lpush('list', 'html'); $redis->lpush('list', 'html'); $redis->lpush('list', 'html'); $redis->lpush('list', 'ajax'); //获取列表中所有的值 $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //删除列表中count个值为value的元素 //从左向右删 $redis->lrem('list', 'html', 2); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //从右向左删 $redis->lrem('list', 'html', -2); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; //删除所有 $redis->lrem('list', 'html', 0); $list = $redis->lrange('list', 0, -1); print_r($list);echo '<br>'; // 结果 // Array ( [0] => ajax [1] => html [2] => html [3] => html [4] => javascript [5] => mysql [6] => php [7] => css [8] => html [9] => html [10] => html ) // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html [7] => html [8] => html ) // Array ( [0] => ajax [1] => html [2] => javascript [3] => mysql [4] => php [5] => css [6] => html ) // Array ( [0] => ajax [1] => javascript [2] => mysql [3] => php [4] => css )
                      Run code
                      Cut to clipboard

                        Hash(字典)
                        <?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //字典 //给hash表中某个key设置value //如果没有则设置成功,返回1,如果存在会替换原有的值,返回0,失败返回0 echo $redis->hset('hash', 'cat', 'cat');echo '<br>'; echo $redis->hset('hash', 'cat', 'cat');echo '<br>'; echo $redis->hset('hash', 'cat', 'cat1');echo '<br>'; echo $redis->hset('hash', 'dog', 'dog');echo '<br>'; echo $redis->hset('hash', 'bird', 'bird');echo '<br>'; echo $redis->hset('hash', 'monkey', 'monkey');echo '<br>'; //获取hash中某个key的值 echo $redis->hget('hash', 'cat');echo '<br>'; //获取hash中所有的keys $arr = $redis->hkeys('hash'); print_r($arr);echo '<br>'; //获取hash中所有的值 顺序是随机的 $arr = $redis->hvals('hash'); print_r($arr);echo '<br>'; //获取一个hash中所有的key和value 顺序是随机的 $arr = $redis->hgetall('hash'); print_r($arr);echo '<br>'; //获取hash中key的数量 echo $redis->hlen('hash');echo '<br>'; //删除hash中一个key 如果表不存在或key不存在则返回false echo $redis->hdel('hash', 'dog');echo '<br>'; var_dump($redis->hdel('hash', 'rabbit'));echo '<br>'; // 结果 // 1 // 0 // 0 // 1 // 1 // 1 // cat1 // Array ( [0] => cat [1] => dog [2] => bird [3] => monkey ) // Array ( [0] => cat1 [1] => dog [2] => bird [3] => monkey ) // Array ( [cat] => cat1 [dog] => dog [bird] => bird [monkey] => monkey ) // 4 // 1 // int(0)
                        Run code
                        Cut to clipboard

                          <?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //字典 //批量设置多个key的值 $arr = [1=>1, 2=>2, 3=>3, 4=>4, 5=>5]; $redis->hmset('hash', $arr); print_r($redis->hgetall('hash'));echo '<br>'; // 批量获得额多个key的值 $arr = [1, 2, 3, 5]; $hash = $redis->hmget('hash', $arr); print_r($hash);echo '<br>'; //检测hash中某个key知否存在 echo $redis->hexists('hash', '1');echo '<br>'; var_dump($redis->hexists('hash', 'cat'));echo '<br>'; print_r($redis->hgetall('hash'));echo '<br>'; //给hash表中key增加一个整数值 $redis->hincrby('hash', '1', 1); print_r($redis->hgetall('hash'));echo '<br>'; //给hash中的某个key增加一个浮点值 $redis->hincrbyfloat('hash', 2, 1.3); print_r($redis->hgetall('hash'));echo '<br>'; //结果 // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) // Array ( [1] => 1 [2] => 2 [3] => 3 [5] => 5 ) // 1 // bool(false) // Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) // Array ( [1] => 2 [2] => 2 [3] => 3 [4] => 4 [5] => 5 ) // Array ( [1] => 2 [2] => 3.3 [3] => 3 [4] => 4 [5] => 5 )
                          Run code
                          Cut to clipboard

                            Set(集合)
                            <?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //集合 // 添加一个元素 echo $redis->sadd('set', 'cat');echo '<br>'; echo $redis->sadd('set', 'cat');echo '<br>'; echo $redis->sadd('set', 'dog');echo '<br>'; echo $redis->sadd('set', 'rabbit');echo '<br>'; echo $redis->sadd('set', 'bear');echo '<br>'; echo $redis->sadd('set', 'horse');echo '<br>'; // 查看集合中所有的元素 $set = $redis->smembers('set'); print_r($set);echo '<br>'; //删除集合中的value echo $redis->srem('set', 'cat');echo '<br>'; var_dump($redis->srem('set', 'bird'));echo '<br>'; $set = $redis->smembers('set'); print_r($set);echo '<br>'; //判断元素是否是set的成员 var_dump($redis->sismember('set', 'dog'));echo '<br>'; var_dump($redis->sismember('set', 'bird'));echo '<br>'; //查看集合中成员的数量 echo $redis->scard('set');echo '<br>'; //移除并返回集合中的一个随机元素(返回被移除的元素) echo $redis->spop('set');echo '<br>'; print_r($redis->smembers('set'));echo '<br>'; // 结果 // 1 // 0 // 1 // 1 // 1 // 1 // Array ( [0] => rabbit [1] => cat [2] => bear [3] => dog [4] => horse ) // 1 // int(0) // Array ( [0] => dog [1] => rabbit [2] => horse [3] => bear ) // bool(true) // bool(false) // 4 // bear // Array ( [0] => dog [1] => rabbit [2] => horse )
                            Run code
                            Cut to clipboard

                              <?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //集合 $redis->sadd('set', 'horse'); $redis->sadd('set', 'cat'); $redis->sadd('set', 'dog'); $redis->sadd('set', 'bird'); $redis->sadd('set2', 'fish'); $redis->sadd('set2', 'dog'); $redis->sadd('set2', 'bird'); print_r($redis->smembers('set'));echo '<br>'; print_r($redis->smembers('set2'));echo '<br>'; //返回集合的交集 print_r($redis->sinter('set', 'set2'));echo '<br>'; //执行交集操作 并结果放到一个集合中 $redis->sinterstore('output', 'set', 'set2'); print_r($redis->smembers('output'));echo '<br>'; //返回集合的并集 print_r($redis->sunion('set', 'set2'));echo '<br>'; //执行并集操作 并结果放到一个集合中 $redis->sunionstore('output', 'set', 'set2'); print_r($redis->smembers('output'));echo '<br>'; //返回集合的差集 print_r($redis->sdiff('set', 'set2'));echo '<br>'; //执行差集操作 并结果放到一个集合中 $redis->sdiffstore('output', 'set', 'set2'); print_r($redis->smembers('output'));echo '<br>'; // 结果 // Array ( [0] => cat [1] => dog [2] => bird [3] => horse ) // Array ( [0] => bird [1] => dog [2] => fish ) // Array ( [0] => bird [1] => dog ) // Array ( [0] => dog [1] => bird ) // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish ) // Array ( [0] => cat [1] => dog [2] => bird [3] => horse [4] => fish ) // Array ( [0] => horse [1] => cat ) // Array ( [0] => horse [1] => cat )
                              Run code
                              Cut to clipboard

                                Sorted Set(有序集合)
                                <?php //实例化redis $redis = new Redis(); //连接 $redis->connect('127.0.0.1', 6379); //有序集合 //添加元素 echo $redis->zadd('set', 1, 'cat');echo '<br>'; echo $redis->zadd('set', 2, 'dog');echo '<br>'; echo $redis->zadd('set', 3, 'fish');echo '<br>'; echo $redis->zadd('set', 4, 'dog');echo '<br>'; echo $redis->zadd('set', 4, 'bird');echo '<br>'; //返回集合中的所有元素 print_r($redis->zrange('set', 0, -1));echo '<br>'; print_r($redis->zrange('set', 0, -1, true));echo '<br>'; //返回元素的score值 echo $redis->zscore('set', 'dog');echo '<br>'; //返回存储的个数 echo $redis->zcard('set');echo '<br>'; //删除指定成员 $redis->zrem('set', 'cat'); print_r($redis->zrange('set', 0, -1));echo '<br>'; //返回集合中介于min和max之间的值的个数 print_r($redis->zcount('set', 3, 5));echo '<br>'; //返回有序集合中score介于min和max之间的值 print_r($redis->zrangebyscore('set', 3, 5));echo '<br>'; print_r($redis->zrangebyscore('set', 3, 5, ['withscores'=>true]));echo '<br>'; //返回集合中指定区间内所有的值 print_r($redis->zrevrange('set', 1, 2));echo '<br>'; print_r($redis->zrevrange('set', 1, 2, true));echo '<br>'; //有序集合中指定值的socre增加 echo $redis->zscore('set', 'dog');echo '<br>'; $redis->zincrby('set', 2, 'dog'); echo $redis->zscore('set', 'dog');echo '<br>'; //移除score值介于min和max之间的元素 print_r($redis->zrange('set', 0, -1, true));echo '<br>'; print_r($redis->zremrangebyscore('set', 3, 4));echo '<br>'; print_r($redis->zrange('set', 0, -1, true));echo '<br>'; //结果 // 1 // 0 // 0 // 0 // 0 // Array ( [0] => cat [1] => fish [2] => bird [3] => dog ) // Array ( [cat] => 1 [fish] => 3 [bird] => 4 [dog] => 4 ) // 4 // 4 // Array ( [0] => fish [1] => bird [2] => dog ) // 3 // Array ( [0] => fish [1] => bird [2] => dog ) // Array ( [fish] => 3 [bird] => 4 [dog] => 4 ) // Array ( [0] => bird [1] => fish ) // Array ( [bird] => 4 [fish] => 3 ) // 4 // 6 // Array ( [fish] => 3 [bird] => 4 [dog] => 6 ) // 2 // Array ( [dog] => 6 )
                                Run code
                                Cut to clipboard

                                  php redis 学习笔记

                                  发布时间:2018-08-29, 09:57:50 分类:PHP


                                  PHP操作redis

                                  Redis 安装

                                  Window 下安装
                                  下载地址:https://github.com/dmajkic/redis/downloads

                                  下载到的Redis支持32bit和64bit。根据自己实际情况选择,将64bit的内容cp到自定义盘符安装目录取名redis。 如 C:\reids

                                  打开一个cmd窗口 使用cd命令切换目录到 C:\redis 运行
                                  redis-server.exe redis.conf
                                  Run code
                                  Cut to clipboard
                                    。Windows PowerShell
                                    ./redis-server.exe redis.conf
                                    Run code
                                    Cut to clipboard
                                      前面加 ./

                                      如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:

                                      这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。

                                      切换到redis目录下运行
                                      redis-cli.exe -h 127.0.0.1 -p 6379
                                      Run code
                                      Cut to clipboard
                                        Windows PowerShell 前面加 ./ 。
                                        设置键值对 set myKey abc
                                        取出键值对 get myKey

                                        Linux 下安装
                                        下载地址:http://www.redis.net.cn/download/,下载最新文档版本。

                                        本教程使用的最新文档版本为 2.8.17,下载并安装:
                                        $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make
                                        Run code
                                        Cut to clipboard

                                          make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli

                                          下面启动redis服务.
                                          $ ./redis-server
                                          Run code
                                          Cut to clipboard

                                            注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。
                                            $ ./redis-server redis.conf
                                            Run code
                                            Cut to clipboard

                                              redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

                                              启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:
                                              $ ./redis-cli redis> set foo bar OK redis> get foo "bar"
                                              Run code
                                              Cut to clipboard


                                                Ubuntu 下安装
                                                在 Ubuntu 系统安装 Redi 可以使用以下命令:
                                                $sudo apt-get update $sudo apt-get install redis-server
                                                Run code
                                                Cut to clipboard

                                                  启动 Redis
                                                  $redis-server
                                                  Run code
                                                  Cut to clipboard

                                                    查看 redis 是否启动?
                                                    $redis-cli
                                                    Run code
                                                    Cut to clipboard

                                                      以上命令将打开以下终端:
                                                      redis 127.0.0.1:6379>
                                                      Run code
                                                      Cut to clipboard

                                                        127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。
                                                        redis 127.0.0.1:6379> ping PONG
                                                        Run code
                                                        Cut to clipboard

                                                          以上说明我们已经成功安装了redis。
                                                          Redis 安装_redis教程

                                                          php处理redis

                                                          connect 实例连接到一个Redis
                                                          描述:实例连接到一个Redis.
                                                          参数:host: string,port: int
                                                          返回值:BOOL 成功返回:TRUE;失败返回:FALSE
                                                          示例:
                                                          <?php $redis = new redis(); $result = $redis->connect('127.0.0.1', 6379); var_dump($result); //结果:bool(true)
                                                          Run code
                                                          Cut to clipboard


                                                            set 设置key和value的值
                                                            描述:设置key和value的值
                                                            参数:Key Value
                                                            返回值:BOOL 成功返回:TRUE;失败返回:FALSE
                                                            示例:
                                                            <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $result = $redis->set('test',"11111111111"); var_dump($result); //结果:bool(true)
                                                            Run code
                                                            Cut to clipboard


                                                              get 获取有关指定键的值
                                                              描述:获取有关指定键的值
                                                              参数:key
                                                              返回值:string或BOOL 如果键不存在,则返回 FALSE。否则,返回指定键对应的value值。
                                                              范例:
                                                              <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $result = $redis->get('test'); var_dump($result); //结果:string(11) "11111111111"
                                                              Run code
                                                              Cut to clipboard


                                                                delete 删除指定的键
                                                                描述:删除指定的键
                                                                参数:一个键,或不确定数目的参数,每一个关键的数组:key1 key2 key3 … keyN
                                                                返回值:删除的项数
                                                                范例:
                                                                <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->set('test',"1111111111111"); echo $redis->get('test'); //结果:1111111111111 $redis->delete('test'); var_dump($redis->get('test')); //结果:bool(false)
                                                                Run code
                                                                Cut to clipboard


                                                                  setnx 如果在数据库中不存在该键,设置关键值参数
                                                                  描述:如果在数据库中不存在该键,设置关键值参数
                                                                  参数:key value
                                                                  返回值:BOOL 成功返回:TRUE;失败返回:FALSE
                                                                  范例:
                                                                  <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->set('test',"1111111111111"); $redis->setnx('test',"22222222"); echo $redis->get('test'); //结果:1111111111111 $redis->delete('test'); $redis->setnx('test',"22222222"); echo $redis->get('test'); //结果:22222222
                                                                  Run code
                                                                  Cut to clipboard


                                                                    exists 验证指定的键是否存在
                                                                    描述:验证指定的键是否存在
                                                                    参数key
                                                                    返回值:Bool 成功返回:TRUE;失败返回:FALSE
                                                                    范例:
                                                                    <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->set('test',"1111111111111"); var_dump($redis->exists('test')); //结果:bool(true)
                                                                    Run code
                                                                    Cut to clipboard


                                                                      incr 数字递增存储键值键
                                                                      描述:数字递增存储键值键.
                                                                      参数:key value:将被添加到键的值
                                                                      返回值:INT the new value
                                                                      范例:
                                                                      <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->set('test',"123"); var_dump($redis->incr("test")); //结果:int(124) var_dump($redis->incr("test")); //结果:int(125)
                                                                      Run code
                                                                      Cut to clipboard


                                                                        decr 数字递减存储键值
                                                                        描述:数字递减存储键值。
                                                                        参数:key value:将被添加到键的值
                                                                        返回值:INT the new value
                                                                        范例:
                                                                        <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->set('test',"123"); var_dump($redis->decr("test")); //结果:int(122) var_dump($redis->decr("test")); //结果:int(121)
                                                                        Run code
                                                                        Cut to clipboard


                                                                          getMultiple 取得所有指定键的值
                                                                          描述:取得所有指定键的值。如果一个或多个键不存在,该数组中该键的值为假
                                                                          参数:其中包含键值的列表数组
                                                                          返回值:返回包含所有键的值的数组
                                                                          范例:
                                                                          <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->set('test1',"1"); $redis->set('test2',"2"); $result = $redis->getMultiple(array('test1','test2')); print_r($result); //结果:Array ( [0] => 1 [1] => 2 )
                                                                          Run code
                                                                          Cut to clipboard


                                                                            lpush 由列表头部添加字符串值
                                                                            描述:由列表头部添加字符串值。如果不存在该键则创建该列表。如果该键存在,而且不是一个列表,返回FALSE。
                                                                            参数:key,value
                                                                            返回值:成功返回数组长度,失败false
                                                                            范例:
                                                                            <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); var_dump($redis->lpush("test","111")); //结果:int(1) var_dump($redis->lpush("test","222")); //结果:int(2)
                                                                            Run code
                                                                            Cut to clipboard


                                                                              rpush 由列表尾部添加字符串值
                                                                              描述:由列表尾部添加字符串值。如果不存在该键则创建该列表。如果该键存在,而且不是一个列表,返回FALSE。
                                                                              参数:key,value
                                                                              返回值:成功返回数组长度,失败false
                                                                              范例:
                                                                              <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); var_dump($redis->lpush("test","111")); //结果:int(1) var_dump($redis->lpush("test","222")); //结果:int(2) var_dump($redis->rpush("test","333")); //结果:int(3) var_dump($redis->rpush("test","444")); //结果:int(4)
                                                                              Run code
                                                                              Cut to clipboard


                                                                                lpop 返回和移除列表的第一个元素
                                                                                描述:返回和移除列表的第一个元素
                                                                                参数:key
                                                                                返回值:成功返回第一个元素的值 ,失败返回false
                                                                                范例:
                                                                                <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->lpush("test","111"); $redis->lpush("test","222"); $redis->rpush("test","333"); $redis->rpush("test","444"); var_dump($redis->lpop("test")); //结果:string(3) "222"
                                                                                Run code
                                                                                Cut to clipboard


                                                                                  lsize llen 返回的列表的长度
                                                                                  描述:返回的列表的长度。如果列表不存在或为空,该命令返回0。如果该键不是列表,该命令返回FALSE
                                                                                  参数:Key
                                                                                  返回值:成功返回数组长度,失败false
                                                                                  范例:
                                                                                  <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->lpush("test","111"); $redis->lpush("test","222"); $redis->rpush("test","333"); $redis->rpush("test","444"); var_dump($redis->lsize("test")); //结果:int(4)
                                                                                  Run code
                                                                                  Cut to clipboard


                                                                                    lget 返回指定键存储在列表中指定的元素
                                                                                    描述:返回指定键存储在列表中指定的元素。 0第一个元素,1第二个… -1最后一个元素,-2的倒数第二…错误的索引或键不指向列表则返回FALSE。
                                                                                    参数:key index
                                                                                    返回值:成功返回指定元素的值,失败false
                                                                                    范例:
                                                                                    <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->lpush("test","111"); $redis->lpush("test","222"); $redis->rpush("test","333"); $redis->rpush("test","444"); var_dump($redis->lget("test",3)); //结果:string(3) "444"
                                                                                    Run code
                                                                                    Cut to clipboard


                                                                                      lset 为列表指定的索引赋新的值
                                                                                      描述:为列表指定的索引赋新的值,若不存在该索引返回false.
                                                                                      参数:key index value
                                                                                      返回值:成功返回true,失败false
                                                                                      范例:
                                                                                      <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->lpush("test","111"); $redis->lpush("test","222"); var_dump($redis->lget("test",1)); //结果:string(3) "111" var_dump($redis->lset("test",1,"333")); //结果:bool(true) var_dump($redis->lget("test",1)); //结果:string(3) "333"
                                                                                      Run code
                                                                                      Cut to clipboard


                                                                                        lgetrange 返回在该区域中的指定键列表中开始到结束存储的指定元素
                                                                                        描述:返回在该区域中的指定键列表中开始到结束存储的指定元素,lGetRange(key, start, end)。0第一个元素,1第二个元素… -1最后一个元素,-2的倒数第二…
                                                                                        参数:key start end
                                                                                        返回值:成功返回查找的值,失败false
                                                                                        范例:
                                                                                        <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->lpush("test","111"); $redis->lpush("test","222"); print_r($redis->lgetrange("test",0,-1)); //结果:Array ( [0] => 222 [1] => 111 )
                                                                                        Run code
                                                                                        Cut to clipboard


                                                                                          lremove 从列表中从头部开始移除count个匹配的值
                                                                                          描述:从列表中从头部开始移除count个匹配的值。如果count为零,所有匹配的元素都被删除。如果count是负数,内容从尾部开始删除。
                                                                                          参数:key count value
                                                                                          返回值:成功返回删除的个数,失败false
                                                                                          范例:
                                                                                          <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->lpush('test','a'); $redis->lpush('test','b'); $redis->lpush('test','c'); $redis->rpush('test','a'); print_r($redis->lgetrange('test', 0, -1)); //结果:Array ( [0] => c [1] => b [2] => a [3] => a ) var_dump($redis->lremove('test','a',2)); //结果:int(2) print_r($redis->lgetrange('test', 0, -1)); //结果:Array ( [0] => c [1] => b )
                                                                                          Run code
                                                                                          Cut to clipboard


                                                                                            sadd 为一个Key添加一个值
                                                                                            描述:为一个Key添加一个值。如果这个值已经在这个Key中,则返回FALSE。
                                                                                            参数:key value
                                                                                            返回值:成功返回true,失败false
                                                                                            范例:
                                                                                            <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); var_dump($redis->sadd('test','111')); //结果:bool(true) var_dump($redis->sadd('test','333')); //结果:bool(true) print_r($redis->sort('test')); //结果:Array ( [0] => 111 [1] => 333 )
                                                                                            Run code
                                                                                            Cut to clipboard


                                                                                              sremove 删除Key中指定的value值
                                                                                              描述:删除Key中指定的value值
                                                                                              参数:key member
                                                                                              返回值:true or false
                                                                                              范例:
                                                                                              <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd('test','111'); $redis->sadd('test','333'); $redis->sremove('test','111'); print_r($redis->sort('test')); //结果:Array ( [0] => 333 )
                                                                                              Run code
                                                                                              Cut to clipboard


                                                                                                smove 将Key1中的value移动到Key2中
                                                                                                描述:将Key1中的value移动到Key2中
                                                                                                参数:srcKey dstKey member
                                                                                                返回值:true or false
                                                                                                范例
                                                                                                <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->delete('test1'); $redis->sadd('test','111'); $redis->sadd('test','333'); $redis->sadd('test1','222'); $redis->sadd('test1','444'); $redis->smove('test',"test1",'111'); print_r($redis->sort('test1')); //结果:Array ( [0] => 111 [1] => 222 [2] => 444 )
                                                                                                Run code
                                                                                                Cut to clipboard


                                                                                                  scontains 检查集合中是否存在指定的值
                                                                                                  描述:检查集合中是否存在指定的值。
                                                                                                  参数:key value
                                                                                                  返回值:true or false
                                                                                                  范例:
                                                                                                  <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd('test','111'); $redis->sadd('test','112'); $redis->sadd('test','113'); var_dump($redis->scontains('test', '111')); //结果:bool(true)
                                                                                                  Run code
                                                                                                  Cut to clipboard


                                                                                                    ssize 返回集合中存储值的数量
                                                                                                    描述:返回集合中存储值的数量
                                                                                                    参数:key
                                                                                                    返回值:成功返回数组个数,失败0
                                                                                                    范例:
                                                                                                    <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd('test','111'); $redis->sadd('test','112'); echo $redis->ssize('test'); //结果:2
                                                                                                    Run code
                                                                                                    Cut to clipboard


                                                                                                      spop 随机移除并返回key中的一个值
                                                                                                      描述:随机移除并返回key中的一个值
                                                                                                      参数:key
                                                                                                      返回值:成功返回删除的值,失败false
                                                                                                      范例
                                                                                                      <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd("test","111"); $redis->sadd("test","222"); $redis->sadd("test","333"); var_dump($redis->spop("test")); //结果:string(3) "333"
                                                                                                      Run code
                                                                                                      Cut to clipboard


                                                                                                        sinter 返回一个所有指定键的交集
                                                                                                        描述:返回一个所有指定键的交集。如果只指定一个键,那么这个命令生成这个集合的成员。如果不存在某个键,则返回FALSE。
                                                                                                        参数:key1, key2, keyN
                                                                                                        返回值:成功返回数组交集,失败false
                                                                                                        范例:
                                                                                                        <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd("test","111"); $redis->sadd("test","222"); $redis->sadd("test","333"); $redis->sadd("test1","111"); $redis->sadd("test1","444"); var_dump($redis->sinter("test","test1")); //结果:array(1) { [0]=> string(3) "111" }
                                                                                                        Run code
                                                                                                        Cut to clipboard


                                                                                                          sinterstore 执行sInter命令并把结果储存到新建的变量中
                                                                                                          描述:执行sInter命令并把结果储存到新建的变量中。
                                                                                                          参数:
                                                                                                          Key: dstkey, the key to store the diff into.
                                                                                                          Keys: key1, key2… keyN. key1..keyN are intersected as in sInter.
                                                                                                          返回值:成功返回,交集的个数,失败false
                                                                                                          范例:
                                                                                                          <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd("test","111"); $redis->sadd("test","222"); $redis->sadd("test","333"); $redis->sadd("test1","111"); $redis->sadd("test1","444"); var_dump($redis->sinterstore('new',"test","test1")); //结果:int(1) var_dump($redis->smembers('new')); //结果:array(1) { [0]=> string(3) "111" }
                                                                                                          Run code
                                                                                                          Cut to clipboard


                                                                                                            sunion 返回一个所有指定键的并集
                                                                                                            描述:返回一个所有指定键的并集
                                                                                                            参数:Keys: key1, key2, … , keyN
                                                                                                            返回值:成功返回合并后的集,失败false
                                                                                                            范例:
                                                                                                            <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd("test","111"); $redis->sadd("test","222"); $redis->sadd("test","333"); $redis->sadd("test1","111"); $redis->sadd("test1","444"); print_r($redis->sunion("test","test1")); //结果:Array ( [0] => 111 [1] => 222 [2] => 333 [3] => 444 )
                                                                                                            Run code
                                                                                                            Cut to clipboard


                                                                                                              sunionstore 执行sunion命令并把结果储存到新建的变量中
                                                                                                              描述:执行sunion命令并把结果储存到新建的变量中。
                                                                                                              参数:
                                                                                                              Key: dstkey, the key to store the diff into.
                                                                                                              Keys: key1, key2… keyN. key1..keyN are intersected as in sInter.
                                                                                                              返回值:成功返回,交集的个数,失败false
                                                                                                              范例:
                                                                                                              <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd("test","111"); $redis->sadd("test","222"); $redis->sadd("test","333"); $redis->sadd("test1","111"); $redis->sadd("test1","444"); var_dump($redis->sinterstore('new',"test","test1")); //结果:int(4) print_r($redis->smembers('new')); //结果:Array ( [0] => 111 [1] => 222 [2] => 333 [3] => 444 )
                                                                                                              Run code
                                                                                                              Cut to clipboard


                                                                                                                sdiff 返回第一个集合中存在并在其他所有集合中不存在的结果
                                                                                                                描述:返回第一个集合中存在并在其他所有集合中不存在的结果
                                                                                                                参数:Keys: key1, key2, … , keyN: Any number of keys corresponding to sets in redis.
                                                                                                                返回值:成功返回数组,失败false
                                                                                                                范例:
                                                                                                                <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd("test","111"); $redis->sadd("test","222"); $redis->sadd("test","333"); $redis->sadd("test1","111"); $redis->sadd("test1","444"); print_r($redis->sdiff("test","test1")); //结果:Array ( [0] => 222 [1] => 333 )
                                                                                                                Run code
                                                                                                                Cut to clipboard


                                                                                                                  sdiffstore 执行sdiff命令并把结果储存到新建的变量中
                                                                                                                  描述:执行sdiff命令并把结果储存到新建的变量中。
                                                                                                                  参数:
                                                                                                                  Key: dstkey, the key to store the diff into.
                                                                                                                  Keys: key1, key2, … , keyN: Any number of keys corresponding to sets in redis
                                                                                                                  返回值:成功返回数字,失败false
                                                                                                                  范例:
                                                                                                                  <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd("test","111"); $redis->sadd("test","222"); $redis->sadd("test","333"); $redis->sadd("test1","111"); $redis->sadd("test1","444"); var_dump($redis->sdiffstore('new',"test","test1")); //结果:int(2) print_r($redis->smembers('new')); //结果:Array ( [0] => 222 [1] => 333 )
                                                                                                                  Run code
                                                                                                                  Cut to clipboard


                                                                                                                    smembers sgetmembers 返回集合的内容
                                                                                                                    描述:返回集合的内容
                                                                                                                    参数:Key: key
                                                                                                                    返回值:An array of elements, the contents of the set.
                                                                                                                    范例:
                                                                                                                    <?php $redis = new redis(); $redis->connect('127.0.0.1', 6379); $redis->delete('test'); $redis->sadd("test","111"); $redis->sadd("test","222"); print_r($redis->smembers('test')); //结果:Array ( [0] => 111 [1] => 222 )
                                                                                                                    Run code
                                                                                                                    Cut to clipboard


                                                                                                                      PHP高并发Redis MySQL重复插入测试笔记

                                                                                                                      发布时间:2018-08-31, 19:59:41 | 评论:12 | 分类:PHP

                                                                                                                      <?php error_reporting(E_ALL); //E_ALL function cache_shutdown_error() { $_error = error_get_last(); if ($_error && in_array($_error['type'], array(1, 4, 16, 64, 256, 4096, E_ALL))) { echo '<font color=red>你的代码出错了:</font></br>'; echo '致命错误:' . $_error['message'] . '</br>'; echo '文件:' . $_error['file'] . '</br>'; echo '在第' . $_error['line'] . '行</br>'; } } register_shutdown_function("cache_shutdown_error"); function dump($arr){ echo '<pre>'; var_dump($arr); echo '</pre>'; } function glog($file,$content,$file_type='.txt'){ //return false; $file=$file?$file:date('Y-m-d'); $content=$content?$content:date('Y-m-d h:m:s'); $f=file_put_contents($file.$file_type,$content.PHP_EOL,FILE_APPEND); return $f; } //写入数据 function tin($login){ global $dbh; /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login,':password'=>'123')); $c_id=$stmt->rowCount(); return $c_id; try { $dbh->beginTransaction(); // 开启一个事务 $sql = "SELECT * FROM `user`"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$slogin)); $row = $stmt->fetchAll(PDO::FETCH_ASSOC); if(empty($row)){ /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$slogin,':password'=>'123')); $c_id=$dbh->lastinsertid(); }else{ foreach($row as $k=>$v){ if($v['login']!=$slogin){ /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$slogin,':password'=>'123')); $c_id=$dbh->lastinsertid(); } } } $dbh->commit(); } catch (PDOException $e) { $dbh->rollback(); // 执行失败,事务回滚 glog('',$e->getMessage()); } return $c_id; } //ab -n 50000 -c 100 http://oc.com/r.php //select login,count(*) as count from user group by login having count>1; Global $redis,$dbh; $redis = new redis(); $redis->connect('127.0.0.1', 6379); /*$redis->delete('test'); $redis->lpush("test","111"); $redis->lpush("test","222"); print_r($redis->lgetrange("test",0,-1)); //结果:Array ( [0] => 222 [1] => 111 )*/ $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'DRsXT5ZJ6Oi55LPQ'); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //$dbh->setAttribute(PDO::ATTR_AUTOCOMMIT, false);//关闭自动提交 $dbh->exec('set names utf8'); try { $now = time(); //限流 $qps_num=$redis->incr("qps_num"); $redis->expireAt('qps_num', $now + 1); if($qps_num>100){ //echo '限流'.$qps_num; //glog('','限流'.$qps_num); return false; } //dump($redis->lgetrange("test",0,-1));exit; //$login=date('s',time()); //$redis->delete('login_set');exit; //$redis->expireAt('x', $now + 3); // x will disappear in 3 seconds. $s_x=$redis->setnx('x',1); //加一个标志位 $redis->expireAt('x', $now + 60); //后于集合过期 if(!$s_x){ //glog('','请排队'); return false; } //事务 写在前面 意外退出 ?没有提交 commit 不回滚? $dbh->beginTransaction(); // 开启一个事务 //$set = $redis->smembers('login_set'); //dump($set);exit; //echo $redis->ttl('login_set');exit; $login_set_num=$redis->sCard('login_set'); //返回SET容器的成员数 //echo $login_set_num;exit; if(!$login_set_num){ glog('','查询'); //查询 缓存数据 假设字段login唯一 $sql = 'SELECT login FROM user'; $stmt = $dbh->prepare($sql); $row = $stmt->fetchAll(PDO::FETCH_ASSOC); //多个成员元素加入到集合中 注意:在Redis2.4版本以前, SADD 只接受单个成员值 foreach($row as $k=>$v){ $redis->sAdd('login_set',$v); } unset($row,$k,$v); } //模拟生成插入值 login static $login; $login=rand(100,9999); //检查是否成员 是已经存在数据库 否录入 //$login_set_is=$redis->sIsMember('login_set',$login); $login_set_is=$redis->sAdd('login_set',$login); //设计修改操作 才是原子性? if($login_set_is){ $in_id=tin($login); //if($in_id) $redis->sAdd('login_set',$login); //插入成功 加入集合缓存 }else glog('','已经存在-'.$login); $redis->expireAt('login_set', $now + 30); //glog('','ttl-'.$redis->ttl('login_set')); $dbh->commit(); } catch (Exception $e) { $dbh->rollBack(); glog('',"Failed: " . $e->getMessage()); $redis->sRem('login_set', $login); }finally{ } $redis->delete('x'); exit; //防止重复写入 $hnum=$redis->incr('num'); //glog('',$hnum); $oldstr=$redis->get('login'); if($hnum>50 || ($oldstr && $oldstr==$login)){ $redis->set('num',-99); exit;//已经存在 }else if($hnum>0){ $redis->set('login',$login); if(tin($login)) glog('','incr22-'.$login.'-'.$oldstr); else glog('','EE-incr22-'.$login.'-'.$oldstr); } exit; $tadd=$redis->rpush("test",$login); while(true){ try{ $slogin = $redis->BLPOP('test',1); if(!$slogin){ break; } //var_dump($value)."\n"; if(tin($slogin)) glog('','incr22-'.$login.'-'.$slogin); else glog('','EE-incr22-'.$login.'-'.$slogin); /* * 利用$value进行逻辑和数据处理 */ }catch(Exception $e){ glog('',$e->getMessage()); } } exit; //$tadd=$redis->rpush("test",$login); //exit; //$gnum=$redis->flushall(); $gnum=$redis->get('gnum'); if(!$gnum){ $redis->set('gnum','1'); if(tin($login)) glog('','rob_result_ok-'.$login); else glog('','rob_result_ok-E-'.$login); $redis->delete('gnum'); }else glog('','rob_result_EE-'.time()); exit; $redis->incr('gnum'); $gnum=$redis->get('gnum'); $redis->watch("gnum"); $redis->multi(); if(tin($login)) glog('','rob_result_ok-'.$login); else glog('','rob_result_ok-E-'.$login); //$redis->set('sdf',1); $rob_result=$redis->exec(); //dump($rob_result); if($rob_result=='nil'){ $tadd=$redis->rpush("test",$login); if($tadd) glog('','rob_result_E-'.$login); else glog('','rob_result_E-_EL'.$login); $redis->unwatch("gnum"); } exit; //$redis->delete('gnum test');exit; $tadd=$redis->rpush("test",$login); //$redis->watch("gnum"); //$redis->multi(); while(true){ try{ $slogin = $redis->LPOP('test'); if(!$slogin){ break; } //var_dump($value)."\n"; if(tin($slogin)) glog('','incr22-'.$login.'-'.$slogin); else glog('','E-incr22-'.$login); /* * 利用$value进行逻辑和数据处理 */ }catch(Exception $e){ glog('',$e->getMessage()); } } //$rob_result = $redis->exec(); //if(!$rob_result) $redis->unwatch("gnum"); exit; //$redis->delete('test'); $tadd=$redis->rpush("test",$login); //dump($redis->lpop("test")); //dump($redis->lgetrange("test",0,-1)); //$list_arr=$redis->lgetrange("test",0,-1); while(true){ try{ $slogin = $redis->LPOP('test'); if(!$slogin){ break; } //var_dump($value)."\n"; /* * 利用$value进行逻辑和数据处理 */ }catch(Exception $e){ glog('',$e->getMessage()); } } exit; //$redis->expire('test',1); //glog('',$tadd);exit; $redis->watch("test"); $redis->multi(); if($tadd<2){ glog('',$tadd);exit; /*查询*/ //$login = 'kevin2'; $sql = "SELECT * FROM `user`"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login)); $row = $stmt->fetchAll(PDO::FETCH_ASSOC); if(empty($row)){ /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login,':password'=>'123')); if($dbh->lastinsertid()){ $redis->delete('test'); } }else{ foreach($row as $k=>$v){ if($v['login']!=$login){ /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login,':password'=>'123')); if($dbh->lastinsertid()){ $redis->delete('test'); } } } } }else if($tadd<50){ glog('','并发五百内'); }else{ glog('','高并发大于五百,队列完毕,重置'); $redis->delete('test'); } $rob_result = $redis->exec(); exit; //$redis->lpush("test",$login); $redis->sadd('isdata',$login); $rcnum=$redis->scard('isdata'); if($rcnum>3){ echo '抢完了'; $set = $redis->smembers('isdata'); dump($set); exit; } exit; //$redis->sadd('isdata',$login);exit; /*$redis->sadd('isdata',$login);//$redis->delete('isdata'); var_dump($redis->sort('isdata'));exit;*/ //dump($redis->sort('isdata'));exit; $inarr=$redis->sort('isdata'); $redis->delete('isdata'); if(!count($inarr)){ $result=json_encode(array("errcode" => 2004, "errmsg" => "no data", 'data' => 'dataLength:' . $dataLength . 'liveKey:' . $listKey)); //glog('',$result); exit($result); }; $sql = "INSERT INTO user(login,password) values "; $data=array(); foreach($inarr as $k=>$v){ $sql.='(?,?),'; array_push($data,$v,'test'.$k); //$data[$k]=$v; //$data[($k+1)]='test'.$k; //$stmt->execute(array(':login'=>$v,':password'=>'123')); } $inarr=null; $sql = substr($sql,0,strlen($sql)-1); //echo $sql;exit; //dump($data);exit; try { $stmt = $dbh->prepare($sql); $stmt->execute($data); } catch (PDOException $e) { glog('',"Error!: " . $e->getMessage()); return false; } /*if($dbh->lastinsertid()){ //$redis->sremove('isdata',$v); //unset($inarr[$k]); $redis->delete('isdata'); }*/ exit; /*查询*/ //$login = 'kevin2'; $sql = "SELECT * FROM `user`"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login)); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ /*print_r($row); exit; */ if($row['login']!=$login){ /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login,':password'=>'123')); echo $dbh->lastinsertid(); } } exit; /*修改*/ $sql = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':userId'=>'7', ':password'=>'4607e782c4d86fd5364d7e4508bb10d9')); echo $stmt->rowCount(); /*删除*/ $sql = "DELETE FROM `user` WHERE `login` LIKE 'kevin_'"; //kevin% $stmt = $dbh->prepare($sql); $stmt->execute(); echo $stmt->rowCount(); /*查询*/ $login = 'kevin%'; $sql = "SELECT * FROM `user` WHERE `login` LIKE :login"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login)); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ print_r($row); } print_r( $stmt->fetchAll(PDO::FETCH_ASSOC)); /*添加*/ /*//$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login,':password'=>'123')); $dbh->lastinsertid(); $row=null; $login=null; exit;*/ /*查询*/ //$login = 'kevin2'; $sql = "SELECT * FROM `user`"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login)); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ /*print_r($row); exit; */ if($row['login']!=$login){ /*添加*/ //$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; $sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)"; $stmt = $dbh->prepare($sql); $stmt->execute(array(':login'=>$login,':password'=>'123')); $dbh->lastinsertid(); } } $row=null; $login=null; exit;
                                                                                                                      Run code
                                                                                                                      Cut to clipboard

                                                                                                                        laravel redis

                                                                                                                        发布时间:2019-11-17, 06:12:35 | 评论:0 | 分类:PHP



                                                                                                                        set/get
                                                                                                                        普通得set/get操作,set操作,如果键名存在,则会覆盖原有得值
                                                                                                                        $redis = app("redis.connection"); $redis->set('library' , 'phpredis');//存储key为library ,值phpredis得记录 $redis->get("library");//获取key为library得记录值 set/get 多个key-value $mkv = array( "user:001"=>'First user', "user:002"=>"Second user", "user:003"=>"Third user" ); $redis->mset($mkv); // 存储多个key对应的value $retval = $redis->mget( array_keys($mkv) );//获取多个key对应的value
                                                                                                                        Run code
                                                                                                                        Cut to clipboard

                                                                                                                          setex
                                                                                                                          setex 存放带存储时效的记录
                                                                                                                          $redis->setex("library" , 10 , 'phpredis'); //存储key为library,值为phpredis的记录,有效时长为10秒
                                                                                                                          Run code
                                                                                                                          Cut to clipboard


                                                                                                                            add操作,不会覆盖已有值
                                                                                                                            $redis->setnx("foo" , 12); //返回true, 添加成功 存在不做任何操作 否则创建 $redis->setnx('foo' , 34); //返回false ,添加失败,因为存在键名foo的记录
                                                                                                                            Run code
                                                                                                                            Cut to clipboard

                                                                                                                              getset
                                                                                                                              getset 是 set的变种,结果返回替换前的值
                                                                                                                              $redis->getset('foo' , 56);//返回12;如果之前不存在记录,则返回null
                                                                                                                              Run code
                                                                                                                              Cut to clipboard

                                                                                                                                递增和递减
                                                                                                                                incrby/incr/decrby/decr对值得递增和递减
                                                                                                                                $redis->incr('foo'); //返回57 ,递增 阶梯为1 $redis->incrby('foo' , 2); //返回59 递增 阶梯为2
                                                                                                                                Run code
                                                                                                                                Cut to clipboard

                                                                                                                                  exists
                                                                                                                                  exists 检测是否存在 存在返回1 否则返回0
                                                                                                                                  $redis->exists("foo");
                                                                                                                                  Run code
                                                                                                                                  Cut to clipboard

                                                                                                                                    type
                                                                                                                                    type 类型检测,字符串返回 string ,列表返回 list , set表返回 set/zset ,hash表返回 hash
                                                                                                                                    $redis->type('foo');
                                                                                                                                    Run code
                                                                                                                                    Cut to clipboard

                                                                                                                                      append
                                                                                                                                      append 连接到已存在字符串
                                                                                                                                      $redis->get('str');//返回test $redis->append('str' , "_123");
                                                                                                                                      Run code
                                                                                                                                      Cut to clipboard

                                                                                                                                        setrange
                                                                                                                                        setrange 部分替换操作,并返回字符串长度
                                                                                                                                        $redis->setrange('str' , 0 , 'abc'); //返回3,第2个参数为0等同于set操作 $redis->setrange('str' , 2 , 'cd'); //返回4,表示从第2个字符后替换,这时‘str’ 为 ‘abcd’
                                                                                                                                        Run code
                                                                                                                                        Cut to clipboard

                                                                                                                                          substr
                                                                                                                                          substr 部分获取操作
                                                                                                                                          $redis->substr('str' , 0 , 2);//返回abc 表示从第0个起,取到第2个字符串 $redis->strlen('str'); // 返回4 此时‘str’ 为‘abcd’
                                                                                                                                          Run code
                                                                                                                                          Cut to clipboard

                                                                                                                                            setbit
                                                                                                                                            setbit 位存储

                                                                                                                                            $redis->setbit('library' , 31 ,1); // 表示在第31位存入1
                                                                                                                                            Run code
                                                                                                                                            Cut to clipboard


                                                                                                                                              getbit 位获取

                                                                                                                                              $redis->getbit('library' , 31); //返回1
                                                                                                                                              Run code
                                                                                                                                              Cut to clipboard

                                                                                                                                                keys
                                                                                                                                                keys 模糊查找功能,支持 * 号 以及 ?号 (匹配一个字符)
                                                                                                                                                $redis->set('foo1',123); $redis->set('foo2' , 456); $redis->keys('foo*'); //返回foo1和foo2的array $redis->keys('f?0?'); // 同上
                                                                                                                                                Run code
                                                                                                                                                Cut to clipboard

                                                                                                                                                  randomkey
                                                                                                                                                  randomkey 随机返回一个key
                                                                                                                                                  $redis->randomkey(); //可能是返回‘foo1’ 或者是foo2 及其它任何已存在的key
                                                                                                                                                  Run code
                                                                                                                                                  Cut to clipboard

                                                                                                                                                    rename/renamenx
                                                                                                                                                    rename/renamenx 方式对key进行改名,所不同的是renamenx不允许改成已存在的key
                                                                                                                                                    $redis->rename('str','str2'); // 把原先命名为 str 的key改成了 str2
                                                                                                                                                    Run code
                                                                                                                                                    Cut to clipboard

                                                                                                                                                      expire
                                                                                                                                                      expire 设置key-value的时效性
                                                                                                                                                      ttl 获取剩余有效期 persist 重新设置为永久存储 $redis->expire('foo' , 10);//设置有效期为10秒 $redis->ttl('foo'); // 返回剩余有效期值10秒 $redispersist("fool");//取消有效期,变为永久存储
                                                                                                                                                      Run code
                                                                                                                                                      Cut to clipboard

                                                                                                                                                        dbsize
                                                                                                                                                        dbsize 返回redis当前数据库的记录总数
                                                                                                                                                        $redis->dbsize();
                                                                                                                                                        Run code
                                                                                                                                                        Cut to clipboard


                                                                                                                                                          队列操作

                                                                                                                                                          rpush/rpushx有序列表操作,从队列后插入元素;

                                                                                                                                                          lpush/lpushx和rpush/rpushx的区别是插入到队列的头部,同上,‘x’含义是只对已存在的key进行操作
                                                                                                                                                          $redis->rpush('foolist' , 'bar1'); //返回列表长度1 $redis->rpush('foolist' , 'bar0'); // 返回列表长度2 $redis->rpushx('foolist' , 'bar2'); // 返回3 , rpushx只对已存在的队列做添加,否则返回0 $redis->llen('foolist'); //返回 3
                                                                                                                                                          Run code
                                                                                                                                                          Cut to clipboard

                                                                                                                                                            lrange
                                                                                                                                                            lrange 返回队列中一个区间的元素
                                                                                                                                                            $redis->lrange('foolist' , 0 , 1); //返回数组包含第0个至第1个,共2个元素 $redis->lrange('foolist' , 0 , -1);//返回第0个至倒数第一个,相当于返回所有元素
                                                                                                                                                            Run code
                                                                                                                                                            Cut to clipboard

                                                                                                                                                              lindex
                                                                                                                                                              lindex 返回指定顺序位置的list元素
                                                                                                                                                              $redis->lindex('foolist' , 1); //返回bar1
                                                                                                                                                              Run code
                                                                                                                                                              Cut to clipboard

                                                                                                                                                                lset
                                                                                                                                                                lset 修改队列中指定位置的value
                                                                                                                                                                $redis->lset('foolist' , 1 ,'123'); // 修改位置1的元素,返回true
                                                                                                                                                                Run code
                                                                                                                                                                Cut to clipboard

                                                                                                                                                                  lrem
                                                                                                                                                                  lrem 删除队列中左起指定数量的字符
                                                                                                                                                                  $redis->lrem("foolist" , 1 , '_'); //删除队列中左起(右起使用-1)1个字符‘_’(若有)
                                                                                                                                                                  Run code
                                                                                                                                                                  Cut to clipboard

                                                                                                                                                                    lpop/rpop
                                                                                                                                                                    lpop/rpop 类似栈结构地弹出(并删除)最左或最右的一个元素
                                                                                                                                                                    $redis->lpop('foolist');//左侧返回 $redis->rpop('foolist'); // 右侧返回
                                                                                                                                                                    Run code
                                                                                                                                                                    Cut to clipboard


                                                                                                                                                                      ltrim
                                                                                                                                                                      ltrim 队列修改,保留左边起若干元素,其余删除
                                                                                                                                                                      $redis->ltrim('foolist' , 0 , 1); // 保留左边起第0个至第1个元素
                                                                                                                                                                      Run code
                                                                                                                                                                      Cut to clipboard

                                                                                                                                                                        rpoplpush

                                                                                                                                                                        rpoplpush 从一个队列中pop元素并push到另一个队列
                                                                                                                                                                        $redis->rpush('list1' , 'ab0'); $redis->rpush('list1','ab1'); $redis->rpush('list2' , 'ab2'); $redis->rpush('list2' , "ab3"); $redis->rpoplpush('list1' , "list2"); $redis->rpoplpush('list2' , 'list2');
                                                                                                                                                                        Run code
                                                                                                                                                                        Cut to clipboard


                                                                                                                                                                          linsert
                                                                                                                                                                          linsert在队列的中间指定元素前或后插入元素
                                                                                                                                                                          $redis->linsert('list2' , 'before' , 'ab1' , '123');//表示在元素 ‘ab1’ 之前插入‘123’ $redis->linser('list2' , 'after' , 'ab1' , "456");//表示在元素 ‘ab1’ 之后插入
                                                                                                                                                                          Run code
                                                                                                                                                                          Cut to clipboard

                                                                                                                                                                            blpop/brpop
                                                                                                                                                                            blpop/brpop 阻塞并等待一个队列不为空时,在pop出最左或最右的一个元素(这个功能在php以外可以说非常好用)
                                                                                                                                                                            $redis->blpop('list3' , 10) ; //如果list3 为空则一直等待,知道不为空时将第一个元素弹出,10秒后超时
                                                                                                                                                                            Run code
                                                                                                                                                                            Cut to clipboard

                                                                                                                                                                              set
                                                                                                                                                                              set集合操作

                                                                                                                                                                              sadd增加set集合元素,返回true,重复返回false
                                                                                                                                                                              $redis->sadd('set1' , 'ab'); $redis->sadd('set1' , 'cd'); $redis->sadd('set1' , 'ef'); $redis->smembers("set1"); // 查看集合元素
                                                                                                                                                                              Run code
                                                                                                                                                                              Cut to clipboard

                                                                                                                                                                                srem
                                                                                                                                                                                srem 移除指定元素
                                                                                                                                                                                $redis->srem('set1' , 'cd');//删除‘cd’ 元素
                                                                                                                                                                                Run code
                                                                                                                                                                                Cut to clipboard

                                                                                                                                                                                  spop
                                                                                                                                                                                  spop弹出首元素
                                                                                                                                                                                  $redis->spop("set1");//返回‘ab’
                                                                                                                                                                                  Run code
                                                                                                                                                                                  Cut to clipboard

                                                                                                                                                                                    smove

                                                                                                                                                                                    smove移动当前set集合的指定元素到另一个set集合
                                                                                                                                                                                    $redis->sadd("set2",'123'); $redis->smove('set1','set2','ab');//移动set1中的ab到set2 ,返回true or false;此时 set1 集合不存在 ab 这个值
                                                                                                                                                                                    Run code
                                                                                                                                                                                    Cut to clipboard

                                                                                                                                                                                      scard
                                                                                                                                                                                      scard 返回当前set表元素个数
                                                                                                                                                                                      $redis->scard('set2');//返回2
                                                                                                                                                                                      Run code
                                                                                                                                                                                      Cut to clipboard

                                                                                                                                                                                        sismember
                                                                                                                                                                                        sismember判断元素是否属于当前set集合
                                                                                                                                                                                        $redis->sismember('set2','123'); //返回true or false
                                                                                                                                                                                        Run code
                                                                                                                                                                                        Cut to clipboard

                                                                                                                                                                                          smembers
                                                                                                                                                                                          smembers返回当前set集合的所有元素
                                                                                                                                                                                          $redis->smember('set2'); //返回array(123,ab)
                                                                                                                                                                                          Run code
                                                                                                                                                                                          Cut to clipboard

                                                                                                                                                                                            交集/并集/补集
                                                                                                                                                                                            sinter/sunion/sdiff 返回两个表中的交集/并集/补集
                                                                                                                                                                                            $redis->sadd('set1' , 'ab'); $redis->sinter('set2' , 'set1');//返回array('ab'); sinterstore/sunionstore/sdiffstore 将两个表交集/并集/补集元素copy到第三个表中 $redis->set('foo' , 0); $redis->sinterstore('foo' , 'set1');//等同于将set1 的内容copy到foo中,并将foo转为set表 $redis->sinterstore('foo' , array('set1' , 'set2'));//将set1和set2中相同的元素copy到foo表中,覆盖foo原有内容 srandmember 返回表中一个随即元素 $redis->srandmember('set1');
                                                                                                                                                                                            Run code
                                                                                                                                                                                            Cut to clipboard


                                                                                                                                                                                              有序set表操作


                                                                                                                                                                                              zadd增加元素,并设置序号,成功返回true,重复返回false
                                                                                                                                                                                              $redis->zadd("zset1" , 1 , 'ab'); $redis->zadd('zset1' , 2 , 'cd'); $redis->zadd('zset1' , 3 , 'ef');
                                                                                                                                                                                              Run code
                                                                                                                                                                                              Cut to clipboard


                                                                                                                                                                                                zincrBy对指定元素索引值的增减,改变元素排序次序
                                                                                                                                                                                                $redis->zincryBy('zset1' , 10 , 'ab'); //返回11
                                                                                                                                                                                                Run code
                                                                                                                                                                                                Cut to clipboard


                                                                                                                                                                                                  zrem 移除指定元素
                                                                                                                                                                                                  $redis->zrem('zset1' , 'ef');//返回true or false
                                                                                                                                                                                                  Run code
                                                                                                                                                                                                  Cut to clipboard


                                                                                                                                                                                                    zrange按位置次序返回表中指定区间的元素
                                                                                                                                                                                                    $redis->zrange("zset1" , 0 , 1);//返回位置0 和 1 之间(两个)的元素 $redis->zrange('zset1' , 1 , -1);//返回位置0和倒数第一个元素之间的元素(相当于所有元素)
                                                                                                                                                                                                    Run code
                                                                                                                                                                                                    Cut to clipboard


                                                                                                                                                                                                      zrevrange同上,返回表中指定区间的元素,按次序倒排
                                                                                                                                                                                                      $redis->zrevrange('zset1' , 0 ,-1);//元素顺序和zrange相反
                                                                                                                                                                                                      Run code
                                                                                                                                                                                                      Cut to clipboard


                                                                                                                                                                                                        zrangeByscore/zrevrangeByscore 按顺序/降序返回表中指定索引区间的元素
                                                                                                                                                                                                        $redis->zadd('zset1' , 3 , 'ef'); $redis->zadd('zset1' , 5 , 'gh'); $redis->zrangeByscore('zset1' , 2, 9);//返回索引值2-9之间的元素array('ef' , 'gh'); $redis->zrangeByscore('zset1' , 2 ,9 ,array('withscores'=>true , 'limit'=>array(1,2)));//返回索引值2-9之间的元素,withscores=>true表示包含索引值;limit=>array(1,2),表示偏移1,返回2条,结果为array(array('ef',3),array('gh',5))
                                                                                                                                                                                                        Run code
                                                                                                                                                                                                        Cut to clipboard


                                                                                                                                                                                                          zcount统计一个索引区间的元素个数
                                                                                                                                                                                                          $redis->zcount('zset1' , 3 , 5);//返回2 $redis->zcount('zset1' , '(3' , 5 ) );//’(3‘ 表示索引的值在3-5之间但不含3,同理也可以使用’(5‘ 表示上限为5但不含5
                                                                                                                                                                                                          Run code
                                                                                                                                                                                                          Cut to clipboard


                                                                                                                                                                                                            zcard 统计元素个数
                                                                                                                                                                                                            $redis->zcard('zset1');//返回4
                                                                                                                                                                                                            Run code
                                                                                                                                                                                                            Cut to clipboard


                                                                                                                                                                                                              zremrangeByscore删除一个索引区间的元素
                                                                                                                                                                                                              $redis->zremrangeByscore('zset1' , 0 , 2);//删除索引在0-2之间的元素(ab , cd),返回删除元素个数2
                                                                                                                                                                                                              Run code
                                                                                                                                                                                                              Cut to clipboard


                                                                                                                                                                                                                zrank/zrevrank返回元素所在表顺序/降序的位置(不是索引)
                                                                                                                                                                                                                $redis->zrank('zset1' , 'ef');//返回0,因为它是一个元素;zrevrank则返回1(最后一个)
                                                                                                                                                                                                                Run code
                                                                                                                                                                                                                Cut to clipboard


                                                                                                                                                                                                                  zremrangeByrank删除表中指定位置区间的元素
                                                                                                                                                                                                                  $redis->zremrangeByrank('zset1' , 0 , 10);//删除位置为0-10的元素,返回删除的元素个数2
                                                                                                                                                                                                                  Run code
                                                                                                                                                                                                                  Cut to clipboard


                                                                                                                                                                                                                    hash表操作
                                                                                                                                                                                                                    $redis->hset('hash1' , 'key1' , 'v1');//将key为key1,value为v1的元素存入hash1表 $redis->hset("hash1" , 'key2' , 'v2'); $redis->hget('hash1' , 'key1');//取出表hash1中的key key key1的值,返回v1
                                                                                                                                                                                                                    Run code
                                                                                                                                                                                                                    Cut to clipboard


                                                                                                                                                                                                                      hexists返回hash表中的指定key是否存在
                                                                                                                                                                                                                      $redis->hexists("hash1" , 'key1');//true 或 false
                                                                                                                                                                                                                      Run code
                                                                                                                                                                                                                      Cut to clipboard


                                                                                                                                                                                                                        hdel 删除hash表中指定key的元素
                                                                                                                                                                                                                        $redis->hdel('hash' , 'key2');//true or false
                                                                                                                                                                                                                        Run code
                                                                                                                                                                                                                        Cut to clipboard


                                                                                                                                                                                                                          hlen 返回hash表元素个数
                                                                                                                                                                                                                          $redis->hlen('hash1'); // 返回1
                                                                                                                                                                                                                          Run code
                                                                                                                                                                                                                          Cut to clipboard


                                                                                                                                                                                                                            hsetnx增加一个元素,但不能重复
                                                                                                                                                                                                                            $redis->hsetnx('hash1' , 'key1' , 'v2'); $redis->hsetnx('hash1' , 'key2' , 'v2');
                                                                                                                                                                                                                            Run code
                                                                                                                                                                                                                            Cut to clipboard


                                                                                                                                                                                                                              hmset/hmget存取多个元素到hash表
                                                                                                                                                                                                                              $redis->hmset( 'hash1' , array('key3'=>'v3' , 'key4'=>'v4' ) ); $redis->hmget( 'hash1' , array('key3' , 'key4') );//返回响应的值 array('v3' , 'v4');
                                                                                                                                                                                                                              Run code
                                                                                                                                                                                                                              Cut to clipboard


                                                                                                                                                                                                                                hincryby 对指定key进行累加
                                                                                                                                                                                                                                $redis->hincryBy('hash1' , 'key5' , 3); //不存在,则存储并返回3 ;存在,即返回原有值 +3 $redis->hincryBy("hash1" , 'key5' , 10);//返回13
                                                                                                                                                                                                                                Run code
                                                                                                                                                                                                                                Cut to clipboard


                                                                                                                                                                                                                                  hkeys返回hash表中的所有key
                                                                                                                                                                                                                                  $redis->hkeys('hash1'); // 返回array('key1' , 'key2' , 'key3' , 'key4' , 'key5');
                                                                                                                                                                                                                                  Run code
                                                                                                                                                                                                                                  Cut to clipboard


                                                                                                                                                                                                                                    hvals 返回hash表中的所有value
                                                                                                                                                                                                                                    $redis->hvals('hash1'); // 返回array('v1' , 'v2' , 'v3' , 'v4' , 13);
                                                                                                                                                                                                                                    Run code
                                                                                                                                                                                                                                    Cut to clipboard


                                                                                                                                                                                                                                      hgetall返回整个hash表元素
                                                                                                                                                                                                                                      $redis->hgetall('hash1');//返回hash1所有表元素
                                                                                                                                                                                                                                      Run code
                                                                                                                                                                                                                                      Cut to clipboard


                                                                                                                                                                                                                                        排序

                                                                                                                                                                                                                                        sort排序
                                                                                                                                                                                                                                        $redis->rpush('tab' , 3); $redis->rpush('tab' , 2); $redis->rpush('tab' , '17'); $redis->sort('tab');//返回array(2,3,17); $redis->sort('tab' , array('sort'=>'desc'));//降序排序,返回array(17 , 3, 2) $redis->sort('tab' , array('limit'=>array(1,2)));//返回顺序位置中1的元素2个(这里的2是指个数,而不是位置),返回array(3,17) $redis->sort('tab' , array('limit'=>array('alpha'=>true)));//按首字符排序返回array(17 , 2 , 3 ),因为17的首字符是 1 所以排首位置 $redis->sort('tab' , array('limit'=>array('store'=>'ordered')));//表示永久性排序,返回元素个数 $redis->sort('tab' , array("limit"=>array('get'=>'pre_*')));//使用了通配符 * 过滤元素,表示只返回以pre开头的元素
                                                                                                                                                                                                                                        Run code
                                                                                                                                                                                                                                        Cut to clipboard


                                                                                                                                                                                                                                          管理

                                                                                                                                                                                                                                          Redis 管理操作

                                                                                                                                                                                                                                          info显示服务当状态信息
                                                                                                                                                                                                                                          $redis->info();
                                                                                                                                                                                                                                          Run code
                                                                                                                                                                                                                                          Cut to clipboard


                                                                                                                                                                                                                                            select指定要操作的数据库
                                                                                                                                                                                                                                            $redis->select(4);//指定数据库的下标
                                                                                                                                                                                                                                            Run code
                                                                                                                                                                                                                                            Cut to clipboard


                                                                                                                                                                                                                                              flushdb清空当前库
                                                                                                                                                                                                                                              $redis->flushdb();
                                                                                                                                                                                                                                              Run code
                                                                                                                                                                                                                                              Cut to clipboard


                                                                                                                                                                                                                                                move移动当库的元素到其它数据库
                                                                                                                                                                                                                                                $redis->set('tomove' , 'bar'); $redis->move('tomove' , 4);
                                                                                                                                                                                                                                                Run code
                                                                                                                                                                                                                                                Cut to clipboard


                                                                                                                                                                                                                                                  slaveof 配置从服务器
                                                                                                                                                                                                                                                  $redis->slaveof('127.0.0.1' , 80);//配置127.0.0.1端口80的服务器为从服务器 $redis->slaveof();//消除从服务器
                                                                                                                                                                                                                                                  Run code
                                                                                                                                                                                                                                                  Cut to clipboard


                                                                                                                                                                                                                                                    同步保存服务器数据到磁盘
                                                                                                                                                                                                                                                    $redis->save();
                                                                                                                                                                                                                                                    Run code
                                                                                                                                                                                                                                                    Cut to clipboard


                                                                                                                                                                                                                                                      异步保存服务器数据到磁盘
                                                                                                                                                                                                                                                      $redis->bgsave()
                                                                                                                                                                                                                                                      Run code
                                                                                                                                                                                                                                                      Cut to clipboard


                                                                                                                                                                                                                                                        返回最后更新磁盘的时间
                                                                                                                                                                                                                                                        $redis->lastsave();
                                                                                                                                                                                                                                                        Run code
                                                                                                                                                                                                                                                        Cut to clipboard


                                                                                                                                                                                                                                                          你好,残忍屏蔽广告

                                                                                                                                                                                                                                                          确定要清除编辑框内容吗?

                                                                                                                                                                                                                                                          该删除操作将不可恢复。

                                                                                                                                                                                                                                                          删除 取消

                                                                                                                                                                                                                                                          激活Windows

                                                                                                                                                                                                                                                          转到"设置"以激活Windows。