首页 > 系统相关 >swoole内存表操作

swoole内存表操作

时间:2023-03-23 12:44:47浏览次数:33  
标签:set swoole create 内存 key Table 操作 TYPE

①:Table->create 创建内存表

function Table->create() : bool;

定义好表的结构后,执行create向操作系统申请内存,创建表
调用create之前不能使用set、get等数据读写操作方法
调用create之后不能使用column方法添加新字段
系统内存不足,申请失败,create返回false
申请内存成功,create返回true

②:Table->column 内存表增加一列

bool Table->column(string $name, int $type, int $size = 0);

$name指定字段的名称
$type指定字段类型,支持3种类型,Table::TYPE_INT, Table::TYPE_FLOAT, Table::TYPE_STRING
$size指定字符串字段的最大长度,单位为字节。字符串类型的字段必须指定$size

Table::TYPE_INT默认为4个字节,可以设置1,2,4,8一共4种长度

Table::TYPE_STRING设置后,设置的字符串不能超过此长度

Table::TYPE_FLOAT会占用8个字节的内存

(1)Table使用共享内存来保存数据,在创建子进程前,务必要执行Table->create()
(2)Server中使用Table,Table->create() 必须在Server->start()前执行

内存尺寸

使用create方法创建表后,可以读取$table->memorySize属性获取实际占用内存的尺寸,单位为字节。

④:Table->set 设置行的数据,Table使用key-value的方式来访问数据
函数原型

Table->set(string $key, array $value) : bool

  参数

$key,数据的key,相同的$key对应同一行数据,如果set同一个key,会覆盖上一次的数据
$value,必须是一个数组,必须与字段定义的$name完全相同

  

(1)swoole_table->set() 可以设置全部字段的值,也可以只修改部分字段
(2)swoole_table->set() 未设置前,该行数据的所有字段均为空
(3)set/get/del 是自带行锁,所以不需要调用lock加锁
(4)Key非二进制安全,必须为字符串类型,不得传入二进制数据
返回值

设置成功返回true
失败返回false,可能是由于Hash冲突过多导致动态空间无法分配内存,可以调大构造方法第二个参数

  ⑤:Table->get 获取一行数据

原型

array Table->get(string $key, string $field = null);

  参数

$key:指定查询数据行的KEY,必须为字符串类型

  返回值

$key不存在,将返回false
成功返回结果数组
当指定了$field时仅返回该字段的值,而不是整个记录

  

标签:set,swoole,create,内存,key,Table,操作,TYPE
From: https://www.cnblogs.com/itshijieku/p/17247054.html

相关文章

  • Delphi动态创建组件,并释放内存
    unitUnit1;interfaceusesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms,......
  • 操作系统概述
    操作系统概念脱机命令接口又称批处理命令接口,适用于批处理系统。联机命令接口又称交互式命令接口,适用于分时或实时系统。程序接口由一系列系统调用(即广义指令)组成。G......
  • 内存管理
    内存的基础知识绝对装入(静态装入)由编译器(此时还没有OS)把物理地址计算好。只适用于单道程序环境,可以由编译器来决定物理地址,也可以由程序员在汇编代码中直接给出。......
  • laravel 利用中间件进行操作日志记录
    利用中间件进行操作日志记录过程:1、创建中间件phpartisanmake:middlewareAdminOperationLog2、生成了文件./app/Http/Middleware/AdminOperationLog.php代码如下:<?phpn......
  • Fetch 基本操作 Get Post Delete Put
    //删除请求asyncfunctionDeleteModel(model:Customer){leturl=`http://localhost:57679/api/Customers/${model.id}`awaitfetch(url,{method:'dele......
  • Git操作指南
    参考文献GithubdocsGit操作指南Git是一种分布式版本控制系统,用于跟踪文件的修改历史和协作开发。它可以记录文件的所有修改、修改者、修改时间等信息,并将这些信息存......
  • 回流焊的工作原理与操作流程
    一、回流焊是什么回流焊,英文名[Reflowsoldering],是通过重新熔化预先分配到印制板焊盘上的锡膏,实现表面组装元器件焊端或引脚与印制板焊盘之间机械与电气冷却后更好地连接......
  • 决战圣地玛丽乔亚Day39 -----GC、内存模型、类加载
    内存模型:java内存模型定义了JVM虚拟机如何与计算机的内存进行交互。java内存模型把内存划分为两部分:主内存和工作内存。主内存共享,工作内存线程私有。java内存模型的实现......
  • 【informix】数据导入导出操作
    目录informix数据导入导出操作1.表数据导出2.导入表数据3.表结构导出4.informix新建/删除表结构5.informix存储过程执行方法informix数据导入导出操作1.表数据导出可以......
  • Linux文件操作
    Linux文件操作Linux的文件Linux中对目录和设备的操作都是文件操作,文件分为普通文件,目录文件,链接文件和设备文件普通文件:也称磁盘文件,并且能够进行随机的数据存储(能够......