Table
Table
一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。
请谨慎使用数组方式读写
Table
, 建议使用文档中提供的API
来进行操作
数组方式取出的Swoole\Table\Row
对象为一次性对象, 请勿依赖其进行过多操作
优势
- 性能强悍,单线程每秒可读写
200万
次 - 应用代码无需加锁,
Table
内置行锁自旋锁,所有操作均是多线程/多进程安全。用户层完全不需要考虑数据同步问题。 - 支持多进程,
Table
可以用于多进程之间共享数据 - 使用行锁,而不是全局锁,仅当
2
个进程在同一CPU
时间,并发读取同一条数据才会进行发生抢锁
Table
的内存容量不受PHP
的memory_limit
控制
遍历
请勿在遍历期间进行删除操作(可将所有key取出后进行删除)
Table
类实现了迭代器和Countable
接口,可以使用foreach
进行遍历,使用count
计算当前行数。
foreach($table as $row)
{
var_dump($row);
}
echo count($table);