Table
swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。
最新版本已移除
lock
和unlock
方法,请使用Swoole\Lock
来实现数据同步
swoole_table的优势
- 性能强悍,单线程每秒可读写
200万
次 - 应用代码无需加锁,
swoole_table
内置行锁自旋锁,所有操作均是多线程/多进程安全。用户层完全不需要考虑数据同步问题。 - 支持多进程,
swoole_table
可以用于多进程之间共享数据 - 使用行锁,而不是全局锁,仅当
2
个进程在同一CPU
时间,并发读取同一条数据才会进行发生抢锁
swoole_table
不受PHP
的memory_limit
控制swoole_table
在1.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']);
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/9022208.html