Swoole内存-table详解
Posted willem_chen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swoole内存-table详解相关的知识,希望对你有一定的参考价值。
前言
高性能共享内存 Table
由于 php 语言不支持多线程,因此 Swoole 使用多进程模式,在多进程模式下存在进程内存隔离,在工作进程内修改 global 全局变量和超全局变量时,在其他进程是无效的。
创建内存表
<?php
//创建内存表(1204行)
$table = new swoole_table(1204);
//内存表增加一行(创建字段)
$table->column('id',$table::TYPE_INT,8);
$table->column('name',$table::TYPE_STRING,64);
$table->column('age',$table::TYPE_INT,3);
$table->create();
/*
新增一行内容
第一个参数是key,第二个参数内容
*/
$table->set('willem_swoole',['id'=>1,'name'=>'willem','age'=>29]);
//测试
print_r($table->get('willem_swoole'));
[root@bogon swoole]# php swoole_table.php
Array
(
[id] => 1
[name] => willem
[age] => 29
)
增删查操作
<?php
//创建内存表(1204行)
$table = new swoole_table(1204);
//内存表增加一行(创建字段)
$table->column('id',$table::TYPE_INT,8);
$table->column('name',$table::TYPE_STRING,64);
$table->column('age',$table::TYPE_INT,3);
$table->create();
/*
新增一行内容
第一个参数是key,第二个参数内容
*/
$table->set('willem_swoole',['id'=>1,'name'=>'willem','age'=>29]);
//另一种方案
$table['willem_swoole2']=[
'id'=>2,
'name'=>'willem2',
'age'=>29,
];
//第一种
// print_r($table->get('willem_swoole2'));
/*运行
//第二种
print_r($table['willem_swoole2']);
[root@localhost memory]# php table.php
Swoole\\Table\\Row Object
(
[key] => willem_swoole2
[value] => Array
(
[id] => 2
[name] => willem2
[age] => 29
)
)
[root@localhost memory]#
//操作字段
$table->incr('willem_swoole2','age',2);//加2
print_r($table['willem_swoole2']);
[root@localhost memory]# php table.php
Swoole\\Table\\Row Object
(
[key] => willem_swoole2
[value] => Array
(
[id] => 2
[name] => willem2
[age] => 31
)
)
$table->decr('willem_swoole2','age',2);//减2
//删除操作
$table->decr('willem_swoole2','age',2);//加2
print_r($table['willem_swoole2']);
echo "delete start:".PHP_EOL;
$table->del('willem_swoole2');
print_r($table['willem_swoole2']);
[root@localhost memory]# php table.php
Swoole\\Table\\Row Object
(
[key] => willem_swoole2
[value] => Array
(
[id] => 2
[name] => willem2
[age] => 27
)
)
delete start:
Swoole\\Table\\Row Object
(
[key] => willem_swoole2
[value] => Array
(
)
)
[root@localhost memory]#
*/
//删除操作
$table->decr('willem_swoole2','age',2);//加2
print_r($table['willem_swoole2']);
echo "delete start:".PHP_EOL;
$table->del('willem_swoole2');
print_r($table['willem_swoole2']);
以上是关于Swoole内存-table详解的主要内容,如果未能解决你的问题,请参考以下文章
14.VisualVM使用详解15.VisualVM堆查看器使用的内存不足19.class文件--文件结构--魔数20.文件结构--常量池21.文件结构访问标志(2个字节)22.类加载机制概(代码片段