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

猜你喜欢

转载自blog.csdn.net/qq_14824885/article/details/87891588