本篇文章小编给大家分享一下Redis缓存实现存储和读取历史搜索关键字操作代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
效果图
功能实现
(一)使用 Layui 的样式构建页面
Redis应用 - 搜索历史 css/layui.css" rel="external nofollow" >搜索历史PHP JavaScript
(二)点击搜索时储存本次搜索的关键字
给文本框添加 Vue 双向绑定
给搜索按钮添加点击事件
当文本框被输入内容后,输入的内容将绑定给 Vue 中data的keyword字段。
点击搜索按钮时,触发addHistory()函数,此函数将输入的内容发送给 PHP ,PHP 操作 Redis 将内容进行缓存。
addHistory()函数中:
addHistory: function () { $.ajax({ url: "history.php", type: "GET", data: {type: 'add', keyword: this.keyword}, success: function () { // 请求成功后刷新本页面 window.location.reload(); } }); }
data中传值两个字段,type表示本次请求的类型,其中add代表往缓存中添加关键字,read代表从缓存中读取关键字。
history.php中:
connect('localhost', 6379); if (!$con) { echo 'Redis连接失败'; } // 接收请求类型参数的值 $type = $_GET['type']; // 模拟用户的id,因为每个用户搜索的内容不同,需要进行区分 $user_id = 'user-1'; // 如果请求类型为添加 if ($type == 'add') { // 接收输入的关键字 $keyword = $_GET['keyword']; // 读取当前用户队列中存储的关键字个数,即队列的长度 $len = $redis->llen($user_id); // 如果个数大于等于 5 个,则删除最开始搜索的关键字,加入最新搜索的关键字 if ($len >= 5) { // 移除队列左侧的第一个关键字 $redis->lPop($user_id); // 在队列右侧加入新的关键字 $redis->rPush($user_id, $keyword); } else { // 不多于 5 个直接在队列右侧加入新的关键字 $redis->rPush($user_id, $keyword); } }
(三)读取并展示历史搜索的关键字
第二步中加入了当请求添加缓存成功后会刷新页面的代码,
window.location.reload();
在这个基础上,我们希望刷新的同时执行另一个 Ajax 请求从 PHP 中操作 Redis 将所有的历史搜索关键字读取出来并在页面中展示。
所以在 Vue 中加入页面加载完成自动调用getHistory()函数:
methods: { getHistory: function () {}, addHistory: function () { $.ajax({ url: "history.php", type: "GET", data: {type: 'add', keyword: this.keyword}, success: function () { window.location.reload(); } }); } }, // 页面加载完成自动调用 getHistory() created () { this.getHistory(); }
getHistory()函数中:
getHistory: function () { $.ajax({ url: "history.php", type: "GET", data: {type: 'read'}, success: function (r) { // JSON.parse(r) 将读取到的 json 字符串转为 json 对象 vm.history = JSON.parse(r); } }); }
data中传值一个字段,read代表从缓存中读取关键字,请求成功后将返回的结果赋值给 Vue 中data的history字段。
history.php中添加读取操作:
// 如果请求类型为读取 if ($type == 'read') { // 从队列左侧依次取出 5 个关键字 $history = $redis->lrange($user_id, 0, 4); // 转为 json 格式的数据并输出到页面中供 Ajax 使用 echo json_encode($history, JSON_UNESCAPED_UNICODE); }
将读取到的数据成功赋值给 Vue 中data的history字段后,页面中即可将数据循环输出展示:
{{item}}
连贯过程为:用户输入关键字并点击搜索按钮,Ajax 请求 PHP 操作 Redis 进行数据缓存且缓存成功后刷新页面,页面刷新后自动调用函数执行 Ajax 请求 PHP 操作 Redis 进行缓存数据的读取并返回于页面中同时进行渲染展示。
荒野乱斗国际版 (BrawlStars)最新版本v56.274
下载一波超人内置修改器菜单版 安卓版v1.0.2
下载敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载继承了一座戏园子无限声望铜钱版 内置菜单最新版v1.7
继承了一座戏园子折相思版是游戏的破解版本,在该版本中为玩家提
山河半世橙光清软金手指版 无限鲜花v3.24
山河半世是一款超级好玩的橙光恋爱游戏,在游戏中玩家们需要扮演
蓬莱手游折相思版 安卓版v1.0.0
蓬莱免广告版是游戏的修改版本,在该版本中为玩家去除了广告,玩
当红影后橙光游戏破解版2025 最新版v1.0
当红影后橙光破解版是一款超级好玩的娱乐圈题材的橙光游戏,在这
忽然成了万人迷清软完结版 无限鲜花版v12.15
忽然成了万人迷破解版是一款非常好玩的男性向橙光游戏,在有一天