• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
swoole_table

Table

swoole_table一个基于共享内存和锁实现的超高性能,并发数据结构。用于解决多进程/多线程数据共享和同步加锁问题。

最新版本已移除lock和unlock方法,请使用Swoole\Lock来实现数据同步

swoole_table的优势

  • 性能强悍,单线程每秒可读写200万次
  • 应用代码无需加锁,swoole_table内置行锁自旋锁,所有操作均是多线程/多进程安全。用户层完全不需要考虑数据同步问题。
  • 支持多进程,swoole_table可以用于多进程之间共享数据
  • 使用行锁,而不是全局锁,仅当2个进程在同一CPU时间,并发读取同一条数据才会进行发生抢锁

swoole_table不受PHP的memory_limit控制
swoole_table在1.7.5以上版本可用

遍历Table

swoole_table类实现了迭代器和Countable接口,可以使用foreach进行遍历,使用count计算当前行数。

遍历Table 依赖pcre 如果发现无法遍历table,检查机器是否安装pcre-devel

foreach($table as $row)
{
    var_dump($row);
}
echo count($table);


<?php
/**
 * Created by PhpStorm.
 * User: baidu
 * Date: 18/3/18
 * Time: 下午10:00
 */
// 创建内存表
$table = new swoole_table(1024);

// 内存表增加一列 创建字段
$table->column('id', $table::TYPE_INT, 4);
$table->column('name', $table::TYPE_STRING, 64);
$table->column('age', $table::TYPE_INT, 3);
$table->create();

//行数据
$table->set('singwa_imooc', ['id' => 1, 'name'=> 'singwa', 'age' => 30]);
// 另外一种方案
$table['singwa_imooc_2'] = [
    'id' => 2,
    'name' => 'singwa2',
    'age' => 31,
];

$table->decr('singwa_imooc_2', 'age', 2);
print_r($table['singwa_imooc_2']);

echo "delete start:".PHP_EOL;
$table->del('singwa_imooc_2');

print_r($table['singwa_imooc_2']);

  

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/9022208.html

posted on 2018-05-10 22:45  孙龙-程序员  阅读(575)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3