我有一个基于SQL的应用程序,我喜欢使用Redis缓存结果.您可以将应用程序视为具有多个SQL表的通讯簿.该应用程序执行以下任务:
40%的时间:
60%的时间:
这是我目前的做法:
最重要的是,我有一个Redis查找表(Redis Set),它存储MySQL记录ID和Redis缓存键.这样我可以删除Redis缓存,如果MySQL记录已经更改(例如,批量更新).
如果在系统缓存搜索结果后创建新记录怎么办?如果新记录与搜索条件匹配,系统将始终返回旧缓存(不包括新记录),直到删除缓存(在缓存中的现有记录更新之前不会发生).
搜索由用户驱动,搜索条件的组合是无数的.创建新记录时,无法评估应删除哪个缓存.
到目前为止,唯一的解决方案是在创建记录时删除MySQL表的所有缓存.然而,这不是一个好的选择,因为每天都会创建大量记录.
在这种情况下,在MySQL之上实现Redis的最佳方法是什么?
是否可以使用PHP中的自然排序按多列对多维数组进行排序?这是一个例子.假设我有一个2D数组,例如,
$array[1]['Name'] = 'John';
$array[1]['Age'] = '20';
$array[1]['Code'] = 'ABC 12';
$array[2]['Name'] = 'John';
$array[2]['Age'] = '21';
$array[2]['Code'] = 'ABC 1';
$array[3]['Name'] = 'Mary';
$array[3]['Age'] = '20';
$array[3]['Code'] = 'ABC 10';
Run Code Online (Sandbox Code Playgroud)
我想按名称(ASC),然后按年龄(DESC)和代码(ASC)对这个数组进行排序,所有都将自然地排序.基本上这将是自然排序的array_multisort.
我在网上找到了很多关于这个主题的解决方案.不幸的是,它们只支持按一列排序,而不是多列排序.
如何通过 jQuery AJAX 加载模块脚本?我喜欢通过 AJAX 加载 PhotoSwipe,因为我的图库取决于用户的输入。
<script type="module">
import PhotoSwipeLightbox from 'photoswipe/dist/photoswipe-lightbox.esm.js';
const lightbox = new PhotoSwipeLightbox({
gallery: '#my-gallery',
children: 'a',
pswpModule: () => import('photoswipe/dist/photoswipe.esm.js')
});
lightbox.init();
</script>
Run Code Online (Sandbox Code Playgroud)
我们有一个 HTML 表单。用户提交表单后,服务器将返回内容,jQuery 将响应插入到 DOM 中。响应存储并显示在 div 内。
$('#form').ajaxForm({
target: '#feedbackSection',
url: 'server.php',
type: 'post',
beforeSubmit: beforeSubmit,
success: showResponse
});
Run Code Online (Sandbox Code Playgroud)
通常,我会在响应代码中包含一些 JavaScript 代码。我注意到 type=module 未加载:
<script type='module'>
//This code is not loaded.
</script>
<script type="text/javascript">
$(document).ready(function(){
//This code is loaded.
});
</script>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以解决这个问题吗?谢谢。