Php 全局困境-存储数据库中很少更改的值

Php 全局困境-存储数据库中很少更改的值,php,database-design,Php,Database Design,我不知道如何才能使web应用程序高效运行。我担心如何正确地实现这一点,因为我正在与一个高流量网站合作 我在一个MySQLDB中有3个表,这些表中的值很少改变,但是被引用了很多。在PHP中存储和访问这些数据的最佳方式是什么 表格示例: GENRES +----+-----------+-----------+---------------+--------------+---------------------+ | id | is_active | name | content_

我不知道如何才能使web应用程序高效运行。我担心如何正确地实现这一点,因为我正在与一个高流量网站合作

我在一个
MySQL
DB中有3个表,这些表中的值很少改变,但是被引用了很多。在
PHP
中存储和访问这些数据的最佳方式是什么

表格示例:

GENRES   
+----+-----------+-----------+---------------+--------------+---------------------+
| id | is_active | name      | content_limit | thumbnail    | thumbnail_active    |
+----+-----------+-----------+---------------+--------------+---------------------+
|  1 | ☺         | Animals   |            65 | Animals.png  | Animals_Active.png  |
|  2 | ☺         | Art       |            30 | Art.png      | Art_Active.png      |
|  3 |           | Biography |             0 | NULL         | NULL                |
|  4 | ☺         | Children  |            50 | Children.png | Children_Active.png |
|  6 | ☺         | Fantasy   |            15 | Fantasy.png  | Fantasy_Active.png  |
|  7 |           | Fiction   |             0 | NULL         | NULL                |
|  8 |           | Health    |             0 | NULL         | NULL                |
| 10 |           | Music     |             0 | Music.png    | Music_Active.png    |
| 11 |           | Politics  |             0 | NULL         | NULL                |
+----+-----------+-----------+---------------+--------------+---------------------+


如果有简单的标准来访问数据(例如,只有主键),我会在像Redis这样的具有生命周期的东西中使用缓存来存储数据,其中键类似于
table_name:id

,始终访问数据库可能非常昂贵

最近的PHP发行版附带了已安装的。APC非常高效。APC将使用键索引的数据存储在共享内存中(因此可从所有分叉的PHP进程访问)

您必须告诉APC(在
APC.ini
的选项中)您要保留多少MB或GB

然后您可以非常快速地存储和检索值

例如,您可以为

1 | ☺         | Animals   |            65 | Animals.png  | Animals_Active.png 
作为

或者创建一个初始化PHP,从数据库中加载一次所有行并将它们存储在APC中。
然后,从“key1”检索数据

$arr = explode(':', apc_fetch("key1"));
在数组中
$arr

在本例中,数据库中的键为
1
。因此,您可以将APC密钥命名为
key1

检索一组数据(例如从0到9的键)

以及该行中的一个元素

$alldata[ $somekey ][ 2 ]

你会给动物提供什么选择?你有任何代码吗?最初我只是为每个表创建了一个类,用于检查数据是否已经设置/检索,但是每分钟有超过5K的用户访问此表几次,这仍然会让它变得沉重。当用户访问你的站点时,会执行什么样的代码?没有代码就很难给出反馈。(数据库是如何访问的)没有验证用户的特殊代码,因为不管查看网页的人/用户是否登录,都需要访问这些数据。比如说,当一个人访问主页时,我需要利用两个表中的数据,但我不希望每次需要这些数据时都要查询这些表,因为这些数据很少发生变化。好的-您使用的是persistant db connection吗?我添加了表及其数据的示例。
apc_store("key1", '1:1:Animals:65:Animals.png:Animals_Active.png');
$arr = explode(':', apc_fetch("key1"));
$alldata = array();

for ($key=0 ; $key<9 ; $key++) {
   $arr = explode(':', apc_fetch("key$key"));
   // process that row if necessary
   $alldata[] = $arr;
}
$alldata[ $somekey ]
$alldata[ $somekey ][ 2 ]