swoole_table->set

设置行的数据,swoole_table使用key-value的方式来访问数据。

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

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

$table->set('1', ['id' => 1, 'name' => 'test1', 'age' => 20]);
$table->set('2', ['id' => 2, 'name' => 'test2', 'age' => 21]);
$table->set('3', ['id' => 3, 'name' => 'test3', 'age' => 19]);

设置超过最大长度字符串

如果传入字符串长度超过了列定义时设定的最大尺寸,底层会自动截断。

示例:

$table->column('str_value', swoole_table::TYPE_STRING, 5);
$table->set('hello', array('str_value' => 'world 123456789'));
  • str_value列最大尺寸为5字节,但set设置了超过5字节的字符串
  • 底层会自动截取5字节的数据,最终str_value的值为world

  • 洗洗睡了

    PHP Fatal error: Swoole\Table::offsetSet(): the swoole table does not exist 为什么会是这样? 当在给内存设置值时,提示没有swoole table