写点什么

SWOOLE 高性能内存数据库的使用和配置教程

作者:CRMEB
  • 2022 年 4 月 21 日
  • 本文字数:1101 字

    阅读完需:约 4 分钟

SWOOLE高性能内存数据库的使用和配置教程

使用环境:thnkphp6.* + think-swoolev4.0

说明由于 PHP 语言不支持多线程,因此 Swoole 使用多进程模式,在多进程模式下存在进程内存隔离,在工作进程内修改 global 全局变量和超全局变量时,在其他进程是无效的。对应的解决方案有:1. 使用 Redis 数据库、关系型数据库 Mysql2. 内存文件/dev/shm 首先数据库的操作都牵扯到 IOD 等待时间,因此推荐使用 Table

属性说明

size 获取表格的最大行数

Swoole\Table->size;memorySize
复制代码

获取实际占用内存的尺寸,单位为字节可以使用属性获取当前占用内存,利于调整配置。以免出现 :Unable to allocate memory 错误

Swoole\Table->memorySize;
复制代码

配置

文件位置:config/swoole.php

return [    'tables' => [        //高性能内存数据库            'user' => [                    'size' => 20480, //指定数据库内存大小                   'columns' => [                            ['name' => 'fd', 'type' => Table::TYPE_INT],//内置字段,自行设置                         ['name' => 'type', 'type' => Table::TYPE_INT],                           ['name' => 'uid', 'type' => Table::TYPE_INT,'size'=>1024],                            ['name' => 'to_uid', 'type' => Table::TYPE_INT],                           ['name' => 'tourist', 'type' => Table::TYPE_INT]                   ]          ]    ],];
复制代码

需要在配置文件中增加如上配置:user 为表名,size 为数据库大小,columns 为数据库字段可以添加多个数据库注意事项:size 的代大小需要根据自身的使用情况而定,过小无法自动扩容的。需要重启服务。修改内存数据库必须重启 swoole 才能生效

使用场景 1. socket 通讯记录 fd 和用户的绑定关系 2. 当作缓存来全局读取记录数据 3. 可以当作计数器使用,原子级别。不会存在并发的问题框架中如何使用

use think\swoole\Table;use Swoole\Table as SwooleTable;
//拿到实例化后的table对象$make = app()->make(Table::class);//获取user表示例/** @var SwooleTable $table **/$table = $make->get('user');
//设置数据$table->set('1',['fd'=>123,'type'=>1,'uid'=>1,'to_uid'=>0,'tourist'=>0]);
//读取key=1的数据$table->get('1');
foreach ($table as $key => $value) { var_dump($key);//设置的key var_dump($value);//设置的value数据 }
复制代码

最后

如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点 star:http://github.crmeb.net/u/defu不胜感激 !

免费获取源码地址:http://www.crmeb.com

PHP 学习手册:https://doc.crmeb.com

技术交流论坛:https://q.crmeb.com

用户头像

CRMEB

关注

还未添加个人签名 2021.11.02 加入

CRMEB就是客户关系管理+营销电商系统实现公众号端、微信小程序端、H5端、APP、PC端用户账号同步,能够快速积累客户、会员数据分析、智能转化客户、有效提高销售、会员维护、网络营销的一款企业应用

评论

发布
暂无评论
SWOOLE高性能内存数据库的使用和配置教程_CRMEB_InfoQ写作社区