swoole_table->__construct

创建内存表。

swoole_table->__construct(int $size, float $conflict_proportion = 0.2)

swoole_table基于行锁,所以单次set/get/del在多线程/多进程的环境下是安全的
set/get/del是原子操作,用户代码中不需要担心数据加锁和同步的问题

容量计算

Table底层是建立在共享内存之上的HashTable数据结构。$size最大行数,决定了HashTable的总行数。由于Table是在共享内存之上,所以无法动态扩容。这个$size必须在创建前设置好。

Table能存储的总数据行数,取决于数据的Key冲突率。如果冲突率超过20%,预留的hash冲突内存块容量不足,就会报Unable to allocate memory错误,并返回false,存储失败。