zoukankan      html  css  js  c++  java
  • swoole_table

    Table

    swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。

    最新版本已移除lockunlock方法,请使用SwooleLock来实现数据同步

    swoole_table的优势

    • 性能强悍,单线程每秒可读写200万
    • 应用代码无需加锁,swoole_table内置行锁自旋锁,所有操作均是多线程/多进程安全。用户层完全不需要考虑数据同步问题。
    • 支持多进程,swoole_table可以用于多进程之间共享数据
    • 使用行锁,而不是全局锁,仅当2个进程在同一CPU时间,并发读取同一条数据才会进行发生抢锁

    swoole_table不受PHPmemory_limit控制
    swoole_table1.7.5以上版本可用

    遍历Table

    swoole_table类实现了迭代器和Countable接口,可以使用foreach进行遍历,使用count计算当前行数。

    遍历Table 依赖pcre 如果发现无法遍历table,检查机器是否安装pcre-devel

    foreach($table as $row)
    {
        var_dump($row);
    }
    echo count($table);
    

    <?php
    /**
     * Created by PhpStorm.
     * User: baidu
     * Date: 18/3/18
     * Time: 下午10:00
     */
    // 创建内存表
    $table = new swoole_table(1024);
    
    // 内存表增加一列 创建字段
    $table->column('id', $table::TYPE_INT, 4);
    $table->column('name', $table::TYPE_STRING, 64);
    $table->column('age', $table::TYPE_INT, 3);
    $table->create();
    
    //行数据
    $table->set('singwa_imooc', ['id' => 1, 'name'=> 'singwa', 'age' => 30]);
    // 另外一种方案
    $table['singwa_imooc_2'] = [
        'id' => 2,
        'name' => 'singwa2',
        'age' => 31,
    ];
    
    $table->decr('singwa_imooc_2', 'age', 2);
    print_r($table['singwa_imooc_2']);
    
    echo "delete start:".PHP_EOL;
    $table->del('singwa_imooc_2');
    
    print_r($table['singwa_imooc_2']);
    

      

  • 相关阅读:
    nginx:配置详细说明
    linux:/etc/rc.local 不能自动启动问题
    nginx:403 forbidden 二种原因
    nginx:虚拟主机配置
    linux:lnmp环境搭建
    php:mysqli扩展
    linux:磁盘的分割、检验、格式化与挂载
    webpack
    js的window.onscroll事件兼容各大浏览器
    js window事件解析(转载)
  • 原文地址:https://www.cnblogs.com/sunlong88/p/9022208.html
Copyright © 2011-2022 走看看