Swoole Memory 持续更新
Swoole提供了7个内存操作的模块,在多进程编程中可以帮助开发者实现一些特殊的需求。
- Memory下的模块可以安全的用于异步非阻塞程序中,不存在任何IO消耗
- 所有模块均为多进程安全的,无需担心数据同步问题
- Memory相关模块对象为有限资源,不可大量创建
table
swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。
swoole_table的优势
- 性能强悍,单线程每秒可读写200万次
- 应用代码无需加锁,swoole_table内置行锁自旋锁,所有操作均是多线程/多进程安全。用户层完全不需要考虑数据同步问题。
- 支持多进程,swoole_table可以用于多进程之间共享数据
- 使用行锁,而不是全局锁,仅当2个进程在同一CPU时间,并发读取同一条数据才会进行发生抢锁
- swoole_table不受PHP的memory_limit控制
简单实现
table.php
<?php
/**
* Created by PhpStorm.
* User: dom
* Date: 19-2-23
* Time: 上午11:07
*/
$size = 1024; // 2的N次方
$table = new swoole_table($size);
// 内存增加一行 表头
$table->column('id',$table::TYPE_INT,8);
$table->column('name',$table::TYPE_STRING,255);
$table->column('age',$table::TYPE_INT,4);
$table->create();
// 写入表数据 第一种方法:
$table->set('test1',['id'=>1,'name'=>'Dom','age'=>20]);
// 写入表数据 第二种方法:
$table['test2'] = [
'id' => 2,
'name' => 'dddd',
'age'=>30
];
// 增加
//$table->incr('test2','age',2);
// 减少
//$table->decr('test2','age',2);
// 删除
//$table->del('test2');
// 检查是否存在
//$table->exist('test2');
// 获取
print_r($table->get('test2'));
print_r($table['test2']);