zoukankan      html  css  js  c++  java
  • 项目中使用Redis的游标scan的一些小问题

          最近项目中有一个需求就是在下拉中要筛选车辆列表,本来想着是在内存中全部用程序去遍历处理,但发现数据有点多,一个个去处理会有点慢。然后就找到了redis的游标

    感觉这个能满足我的需求,我可以把key存成车牌号,value为车辆id的值,通过正则匹配到车牌号就能获取车辆id来查找信息了。思路有了,接下来就开工了。

        在官网上找到这么一段程序

    /* Without enabling Redis::SCAN_RETRY (default condition) */
    $it = NULL;
    do {
        // Scan for some keys
        $arr_keys = $redis->scan($it);
    
        // Redis may return empty results, so protect against that
        if ($arr_keys !== FALSE) {
            foreach($arr_keys as $str_key) {
                echo "Here is a key: $str_key
    ";
            }
        }
    } while ($it > 0);
    echo "No more keys to scan!
    ";
    
    /* With Redis::SCAN_RETRY enabled */
    $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
    $it = NULL;
    
    /* phpredis will retry the SCAN command if empty results are returned from the
       server, so no empty results check is required. */
    while ($arr_keys = $redis->scan($it)) {
        foreach ($arr_keys as $str_key) {
            echo "Here is a key: $str_key
    ";
        }
    }
    echo "No more keys to scan!
    ";

    这段程序在我的环境会有问题(php7). 会报  Parameter 1 to Redis::scan() expected to be a reference, value given

    应该是那个游标对象$it得用引用。所以需要改成call_user_func_array调用

    $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);
    $it = NULL;
    
    /* phpredis will retry the SCAN command if empty results are returned from the
       server, so no empty results check is required. */
    while ($array = call_user_func_array(array($redis, 'scan'), array(&$it)) {
        foreach ($arr_keys as $str_key) {
            echo "Here is a key: $str_key
    ";
        }
    }
    echo "No more keys to scan!
    ";

    用上面的程序,就能通过游标把所有符合的值取出来。在业务层使用就行了

  • 相关阅读:
    Android 代码判断是否获取ROOT权限
    Tomcat环境变量
    Ubuntu Android环境搭建
    java 取出文本文件中的空行
    Step by Step for configuration of sending customize IDOC/自定义IDOC发送配置
    Oracle SQL语句执行完整过程:
    Continue Posting, Keep Fighting
    Moto G 通话没声音
    Android 手机技巧
    Digg Reader 登录不了,原来如此
  • 原文地址:https://www.cnblogs.com/smartrui/p/8555019.html
Copyright © 2011-2022 走看看