网上有了解到thinkphp 的memcache的设置方法,都是介绍了查询的时候先判断key值是否存在,如存在,直接调用数据,不存在再连接数据库取数据
那么问题来了thinkphp 的memcache 如何数据同步呢,就是数据更新删除修改的时候怎么样memcache缓存也同时更新呢?是不是要在系统增删改函数里删除相对应的memcache的key ,可是这个key 不知道怎么对应。。求思路
用触发器的话 感觉也好麻烦呀,有点乱。
更新数据库时,把对应key的memcache删除。
当读取数据时,如memcache中没有数据,则先从数据库读出,写入memcache
key是自己定义的。
如果你要把某个查询作为key
$sql = "select * from table";
$key = md5($sql);就可以了。
这个原理都明白,这是函数上不知道怎么写,以md5(sql)为键名,那么以后我碰到表 table的修改删除添加操作的时候,可否根据表名table找到其对应的key键名,然后进行相应的删除呢?应该有这样的函数吧,网上找不到,请指点。。
更新数据库时,把对应key的memcache删除。??
就是想问这个对应的key可以通过程序定位的然后再进行相应的删除吧?? 如果人工的话太费劲感觉也不实际。
为什么没有人介绍当表出现删除、修改时如何对 memcache 进行相应的操作呢?
因为那是不现实的,所以都假定对表的删除、修改是不会发生的。也就是说 memcache 在实际运用中当做数据缓存使用并不普遍。
更多的是作为数据共享出现的,比如你需要一个超超全局的载体,在程序间、用户间传递数据
为什么说是不现实的呢?
因为内存远比硬盘小,你不可能按记录将数据保存到 memcache。如果可能,那就不要数据库了
所以 memcache 中只是保存了常用查询的结果,并从查询串生成 key 以便识别
这就是说 memcache 中是以 查询 为单位保存数据的
当 删除、修改 发生时,你基本不可能从 查询 简单的判断出,这个 删除、修改 是否影响到该查询(查询有很多,一一实际查询一下是不现实的)