欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

问下thinkphp 的memcache 同步更新问题

程序员文章站 2023-12-28 22:37:52
...
网上有了解到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 中是以 查询 为单位保存数据的
当 删除、修改 发生时,你基本不可能从 查询 简单的判断出,这个 删除、修改 是否影响到该查询(查询有很多,一一实际查询一下是不现实的)

上一篇:

下一篇: