【发布时间】:2011-12-15 03:45:33
【问题描述】:
我正在构建一个 Web 应用程序,我正在考虑一种将 facebook 与我的应用程序集成的方法,我在用户的会话数据中临时缓存用户朋友的 FBID 的 json 数组,当他们登录我的应用程序时。我正在使用数据库来跟踪我的会话数据。
这是来自 CodeIgniter 的用于跟踪用户会话的数据库表:
CREATE TABLE IF NOT EXISTS `ci_sessions` (
session_id varchar(40) DEFAULT '0' NOT NULL,
ip_address varchar(16) DEFAULT '0' NOT NULL,
user_agent varchar(120) NOT NULL,
last_activity int(10) unsigned DEFAULT 0 NOT NULL,
user_data text NOT NULL,
PRIMARY KEY (session_id),
KEY `last_activity_idx` (`last_activity`)
);
对于那些熟悉 FQL 的人,我正在考虑缓存这个查询的结果:
SELECT uid, is_app_user FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = xxxxxxxx)
ORDER BY is_app_user DESC
LIMIT 0,1000
这将返回一个用户朋友列表,以及这些朋友是否是我的 facebook 应用程序的用户。我有大约 770 个 Facebook 好友,此查询返回的 json 编码数组的大小约为 33kb。
我将 CodeIgniter 用于我的应用程序的后端,我想知道是否可能为每个会话存储约 33kb 的数据可能会产生任何不利影响。我计划让会话在一段合理的时间后过期,以防止我的表永远增长。有人有什么见解吗?
更新
只是想补充一点,驱动我的会话表的引擎是 MyISAM(不确定这是否是最好的,InnoDB 的表级锁定与行级锁定......必须研究一下),并且 FBID 的自然会被存储作为 user_data (TEXT) 列中的序列化 JSON
【问题讨论】:
标签: codeigniter session caching