微擎数据库缓存的增、删、改和查函数详解

函数所在文件:framework/function/cache.mysql.func.php

目前微擎的个人真实调用:

$setting = $this->module['config'];

$aaaaa = $setting['copyright'];

在微擎微信公众号系统里面可以分为三类缓存:保存到数据库表core_cache中的数据库缓存、保存到文件的文件缓存和memcahe缓存,本教程介绍的是数据库缓存,也是微擎系统配置的默认缓存。

因为,处理数据库缓存的函数相对简单,所以,phpos微信网把这几个函数一起制作成一个教程。因为是对数据库表操作,所以,再怎么操作表,无非就是对表记录进行插入(增)、删除、修改和查询,所以,对应着数据库缓存函数也有插入缓存数据、删除缓存数据、修改缓存数据和查询缓存数据操作。

在微擎微信公众号系统里面缓存数据都保存到了缓存表core_cache里面,也就是说下面的函数都是对这个表这进行的增、删、改和查的操作。

表core_cache:

一、插入(写入)缓存数据

cache_write($key, $data)函数:这个在本站已经有详细的讲解了,这里不再多解释。

示例

load()->func('cache.mysql');

cache_write('phpos',array('webname'=>'微信开发','url'=>'phpos.net','title'=>array('微信开发','微信公众号')));

结果:

二、删除缓存数据

删除函数:cache_delete($key)

此函数的作用是:删除core_cache表中的某一条记录。

$key 为要删除的表中字段key的值,例如,删除phpos记录,则$key='phpos'。

这个函数使用的sql语句是:

DELETE FROM ' . tablename('core_cache') . ' WHERE `key`=:key

这个参数$key正是要删除的条件,所以,只要您传一个值$key就可以把表中key字段对应的记录删除掉。

在这个函数里面使用了微擎微信公众号系统封装的数据库查询函数pdo_query($sql, $params),这个函数类似面向过程里面的mysql_query()执行一条sql语句。

示例

删除字段phpos对应的记录:

load()->func('cache.mysql');

cache_delete('phpos');

三、删除整个缓存表里面的记录,或是删除包含相同名称的记录。

删除函数:cache_clean($prefix = '')

上面的函数是删除确定的某一条记录,而本函数删除的是整个表或是包含类似phpos:、web:、site:等字段的值的记录。

1)如果$prefix为空,则删除事个core_cache表中的数据。

并且,删除保存在全局变量$_W中的数据:

if ($result) {

unset($_W['cache']);

}

其中,$_W['cache']是在文件bootstrap.inc.php里面定义的:

if(!in_array($_W['config']['setting']['cache'], array('mysql', 'file', 'memcache'))) {

$_W['config']['setting']['cache'] = 'mysql';

}

这个条件里面的$_W['config']['setting']['cache']是在配置文件data/config.php配置的,默认是mysql,表示使用缓存数据使用“数据库缓存”。

2)如果$prefix不空,则删除与{$prefix}:%匹配的数据。

示例:

load()->func('cache.mysql');

cache_clean('website');

cache_clean();

四、查询缓存数据

1)读取缓存数据函数:

cache_read($key)

读取表中某一条缓存数据的值:

SELECT `value` FROM ' . tablename('core_cache') . ' WHERE `key`=:key'

从这个sql语句就可以看出这个函数查询的是表core_cache中的键为$key对应的值,并且,使用函数iunserializer($val)把查询出来的序列化的字符串转换成反序列化成字符串。

示例

load()->func('cache.mysql');

print_r(cache_read('website'));

结果:Array ( [url] => www.phpos.net [title] => 微信网 )

2)查询所有符合条件的缓存数据函数:

cache_search($prefix)

查询sql语句:

$sql = 'SELECT * FROM ' . tablename('core_cache') . ' WHERE `key` LIKE :key';

$params = array();

$params[':key'] = "{$prefix}%";

$rs = pdo_fetchall($sql, $params);

从上面这段代码就可以看出这个函数是查询字段key的值包含{$prefix}的所有记录,这里使用了函数pdo_fetchall()查询出所有符合条件的记录。

最后,返回的是$result,也是一个数组。

示例

load()->func('cache.mysql');

print_r(cache_search('website'));

结果:Array ( [website] => Array ( [url] => www.phpos.net [title] => 微信网 ) )

五、更新缓存数据

在这个文件cache.mysql.func.php里面,我们并没有发现更新缓存数据,难道不能更新吗?其实,写数据函数cache_write()里面在调用函数pdo_insert('core_cache', $record, true)时,使用了插入数据函数的第三个参数true,如果使用这个参数,使用replace into语句插入数据,这条sql语句,会判断一下表中是否存在某一数据,如果存在则删除之,然后,再把要插入表的数据插入到表中。

所以,其实,这个写入数据函数本身就有更新数据的功能,所以,在这个文件里面并没有单独定义“更新”缓存数据。

原文地址:http://blog.51cto.com/taoyouth/2059171

时间: 2024-10-17 13:20:54

微擎数据库缓存的增、删、改和查函数详解的相关文章

怎样从C#中打开数据库并进行 增 删 改 查 操作

首先 在C#中引用数据库的操作! (因为我们用的是SQLserver数据库,所以是SqlClient) using System.Data.SqlClient; 1:要实现对数据库的操作,我们必须先登录数据库 Console.WriteLine("请输入用户名:"); //提示客户输入用户名和密码 string name = Console.ReadLine(); Console.WriteLine("请输入密码:"); string pwd = Console.R

第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据

第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform)让用户方便的操作数据库中的数据. 什么是ADO.NET 是一组库类,System.Data. Ado.net组成 Connection:用来连接数据库 Command:用来执行SQL语句 DataReader:只读.只进的结果集,一条一条读取数据(SteamReader.XmlReader) Da

Python---MySQL数据库之四大操作(增 删 改 查)

一.对数据库,表,记录---四大操作(增 删 改 查) 1.操作数据库 (1)对数据库(文件夹):进行增加操作 Create  database  库名; 例:  Create  database  db7 ; 查询库: show  databases; 结果: +-----------------------------+ | Database                   | +----------------------------+ | information_schema | |

ADO.NET 增 删 改 查

ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访问技术的基础 连接数据库基本格式:需要两个类1.数据库连接类 SqlConnection2.数据库操作类 SqlCommand 1.连接数据库写连接字符串,立马就要想到有4点要写完,1.连接哪台服务器,2.连接哪个数据库,3.连接用户名,4.密码string sql = "server=.(服务器i

微擎数据库恢复 微擎doesn't exist in engine解决

是否遇到  微擎数据库恢复 微擎doesn't exist in engine  提示这样? 打开网站首页 直接挂掉 显示不完整? SQL: SELECT * FROM `ims_agent_copyright` WHERE `yuming` = :__yuming LIMIT 1 SQL: SELECT * FROM `ims_agent_copyright` WHERE `yuming` = :__yuming LIMIT 1 Params: array ( ':__yuming' => '

php缓存技术——memcache常用函数详解

php缓存技术——memcache常用函数详解 2016-04-07 aileen PHP编程 Memcache函数库是在PECL(PHP Extension Community Library)中,主要作用是搭建大容量的内存数据的临时存放区域,在分布式的时候作用体现的非常明显,否则不建议使用. memcache 函数所有的方法列表如下: 参考http://www.php.net/manual/zh/function.Memcache-add.php Memcache::add - 添加一个值,

SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)

SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), .... ); 1.查看表 exec sp_help table1; 2.创建表 create tab

8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解

本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 LINQ操作 懒加载和预加载 插入数据 更新数据 删除数据 本章小结 本人的实验环境是VS 2013 Update 5,windows 10,MSSQL Server 2008. 上一篇<Code First开发系列之领域建模和管理实体关系>,我们主要介绍了EF中“约定大于配置”的概念,如何创建数据

SSH登录与增删改查demo详解+源代码

点击下载,测试绝对可用SSH整合框架登录加增删改查demo 下载地址:http://download.csdn.net/detail/qq_33599520/9784679   一.框架概述 spring+Struts2+hibernate(SSH)整合框架是一种非常典型与实用的Web项目MVC架构,其中: Spring主要通过控制反转(IOC)与依赖注入(DI)控制对象的创建与维护,与实现面向切片编程(AOP),核心配置文件为:applicationContext.xml. Struts2是M