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

说明
由于 PHP 语言不支持多线程,因此 Swoole 使用多进程模式,在多进程模式下存在进程内存隔离,在工作进程内修改 global 全局变量和超全局变量时,在其他进程是无效的。
对应的解决方案有:

  1. 使用Redis数据库、关系型数据库Mysql
  2. 内存文件/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表示例
[添加链接描述](https://q.crmeb.com)/** @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);//设置的keyvar_dump($value);//设置的value数据}

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

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

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

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

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

  1. Termux 高级终端安装使用配置教程

    Termux 高级终端安装使用配置教程,这篇文章拖了有小半年.因为网上相关的文章相对来说还是比较少的,恰好今天又刷了机,所以就特意来总结一下,希望本文可以帮助到其他的小伙伴.发挥Android平台更大 ...

  2. 【沁恒WCH CH32V307V-R1在MounRiver Studio上环境配置教程】

    [沁恒WCH CH32V307V-R1在MounRiver Studio上环境配置教程] 1. 前言 2. 软件配置 2.1 安装MounRiver Studio 3. 点灯项目测试 3.1 打开点灯 ...

  3. 【沁恒WCH CH32V307V-R1在RT-Thread Studio上环境配置教程】

    [沁恒WCH CH32V307V-R1在RT-Thread Studio上环境配置教程] 1. 前言 2. 软件配置 2.1 安装RT-Thread Studio 2.2 RT-Thread Stud ...

  4. centos7 mysql workbench_centOS下mysql workbench安装配置教程

    本文为大家分享了mysql workbench安装配置教程,供大家参考,具体内容如下 step0:安装mysql 在按照workbench之前,先安装mysql.指令是 yum install mys ...

  5. 阿里云服务器ECS Ubuntu16.04 初次使用配置教程(图形界面安装)

    阿里云服务器ECS Ubuntu16.04 初次使用配置教程(图形界面安装) 2019-01-23 22:55:50 laugh12321 阅读数 851更多 分类专栏: ECS Ubuntu 版权声 ...

  6. 交换机配置软件crt安装_非常详细的锐捷二层交换机配置教程,适合新手小白

    笔者上一篇文章写了关于锐捷三层交换机配置教程,但是这只是核心的配置,还不能搭建一个完整的企业网络.那么这一篇就来讲一下锐捷的二层交换机配置,比起三层交换机的配置,二层交换机配置就非常简单了.同样,今天 ...

  7. Mac下Android studio 之NDK配置教程(一)

    Mac下Android studio 之NDK配置教程(一) 1.概述 近期项目全线转移到Mac下使用使用Android studio开发. 遇到关键代码封装到 ***native***层,此时在wi ...

  8. Kali Linux常用服务配置教程获取IP地址

    Kali Linux常用服务配置教程获取IP地址 下面以Kali Linux为例,演示获取IP地址的方法 (1)设置网络接口为自动获取IP地址.在Kali Linux的收藏夹中单击图标,将显示所有的程 ...

  9. Kali Linux常用服务配置教程启动DHCP服务

    Kali Linux常用服务配置教程启动DHCP服务 通过前面的介绍,DHCP服务就配置好了.接下来,用户就可以使用该服务器来获取IP地址了.下面将对前面配置的服务进行测试. 1.启动DHCP服务 如 ...

最新文章

  1. 从单张图像学习双目图像
  2. 批命令 set /a与set /p有哪些区别
  3. Windows Linux Mac 路由添加删除
  4. 魅族“携手”京东,背后有何意图?
  5. VS2012+Win7网站发布详细步骤
  6. zookeeper 进入客户端_探究—Zookeeper的启动过程
  7. centos7安装java(多种方式)
  8. E哥的Git教程(一)
  9. [安全攻防进阶篇] 五.逆向分析之Win32 API获取及加解密目录文件、OllyDbg逆向其原理
  10. JAVA Date 工具类 常用
  11. TI DSP芯片SCI模块的波特率自适应
  12. principal java_CAS 单点登录服务端 如何获取到principal
  13. VisionMobile:移动平台生态系统冲突报告(十)Chapter C:黑莓
  14. pbx_functions.c:699 ast_func_write: Function DENOISE not registered
  15. 烟草物流信息综合管理平台研究与应用——以H市卷烟厂烟草物流配送中心为例
  16. 副驾驶的意义_副驾驶在飞行中的作用与地位
  17. TwinCAT3 编程字体设置
  18. MOD16 蒸散发数据下载
  19. Prometheus监控系列-- 进阶阶段 | 高级操作 | 配合Grafana | 邮箱报警 | 参数说明
  20. 通过压力测试提升服务器并发性能实例

热门文章

  1. DBCO-PEG-OH,Hydroxyl-PEG-DBCO,二苯并环辛炔-聚乙二醇-羟基试剂供应
  2. 如何用matlab实现矩阵与mat格式、xlsx格式文件互转
  3. max日期最大值为0_Excel中的MAX,这5种不一样的使用技巧,看你知道几个
  4. 女生学计算机还是土木,女生适合读的十大工科专业:生物医学上榜,第十女生很少...
  5. 宁波SEO营销,如何更新网站文章?
  6. matlab 回退到上一行,对乒乓球回滚的分析与MATLAB模拟-利用 Mathematica 模拟乒乓球滚动 - PS下...
  7. STM32 实验 串口实验
  8. getParameter方法
  9. hugginface相关数据集整理
  10. windows系统使用Docker搭建MySQL服务