Swoole Memory 持續更新

Swoole Memory 持續更新

Swoole提供了7個內存操作的模塊,在多進程編程中可以幫助開發者實現一些特殊的需求。

  1. Memory下的模塊可以安全的用於異步非阻塞程序中,不存在任何IO消耗
  2. 所有模塊均爲多進程安全的,無需擔心數據同步問題
  3. Memory相關模塊對象爲有限資源,不可大量創建

table

swoole_table一個基於共享內存和鎖實現的超高性能,併發數據結構。用於解決多進程/多線程數據共享和同步加鎖問題。

swoole_table的優勢

  1. 性能強悍,單線程每秒可讀寫200萬次
  2. 應用代碼無需加鎖,swoole_table內置行鎖自旋鎖,所有操作均是多線程/多進程安全。用戶層完全不需要考慮數據同步問題。
  3. 支持多進程,swoole_table可以用於多進程之間共享數據
  4. 使用行鎖,而不是全局鎖,僅當2個進程在同一CPU時間,併發讀取同一條數據纔會進行發生搶鎖
  5. 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']);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章