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']);