微信公众号开发应用redis案例一则
业务中有一个场景是需要记录公众号中48小时内活跃过的用户,以便我们可以给他们推送客服消息。这个适用场景如下:点击打开链接
需要记录的事件有:关注、发消息、点击菜单。所以思路就是每次用户触发这些事件的时候,微信服务器会给我们服务器发消息。这个时候可以记录当前时间,并以userId为key存储到redis中。要想在Yii框架中使用redis,需要在web.php中配置一下:
'wechat_active_time_redis' = ['class' => 'yii\redis\Connection','hostname' => '127.0.0.1','port' => 8888,'database' => 5,
]
下面介绍下Yii框架下要实现这个功能所要用到的redis知识。
Yii框架执行redis命令代码如下:
Yii::$app->wechat_active_time_redis->executeCommand('SET', [$user_id, time(), 'EX', 47 * 60 *60]);
这段代码的含义就是在redis中执行如下命令:set 78952 time(当前时间戳) EX expire(过期时间)。就是在redis中增加一条记录,以user_id为key,以当前时间戳为value,EX表示过期时间单位为秒,最后一个参数为具体过期时间。
redis中的命令可以在如下链接中查看:redis命令
这段代码执行的结果可以在redis中查看到:这就表明,用户id为783239的用户,在时间戳为1515565250的时间触发了这个动作。这条记录会被保存47小时。redis中记录过期后,redis会有两种清除机制。一种是主动清除,就是起一个定时任务,每十秒中扫描一次,查看是否有过期记录,如果有就删除。一种是被动清除,仅当记录被访问的时候,检查是否过期。
要获取reids中所存储的相关记录可以使用keys命令。
Yii::$app->wechat_active_time_redis->executeCommand('KEYS', ['*']);
这段代码就等于执行了如下命令:keys *
最后介绍一下hset和hget的命令:
比如:hset user 1 25, 三个参数分别为:key, field, value. 可以理解为在redis中创建了一个名字为user的hash表,hash表中存在一对键值对,key为1,value为25,在user这张hash表中可以插入多条记录,比如再执行:hset user 2 26.
同样的使用hget可以选择某个hash表中的某个字段。使用hkeys可以把某个hash表中所有的字段打印出来:
注意:hset不能针对field去设置过期时间,只能根据key,也就是说,时间到了,整个hash表都会被删除。
微信公众号开发应用redis案例一则相关推荐
- php微信公众号支付接口案例,Thinkphp微信公众号支付接口
本文实例为大家分享了Thinkphp微信公众号支付接口,供大家参考,具体内容如下 第一步 先把文件夹的那两个图片 配置成一样的路径 除了域名要改 其他保持一致. 第二步 把 Weixinpay 这个文 ...
- 小木的智慧屋--微信公众号的推广案例分析(1)
前言: 前几天, 因为无聊搞了一个个人的微信公众号, 突然对微信公众号的推广方式有了些兴趣. 但苦于自己是个困在井底, 只道天空是个月饼的底层无知小码农, 竟彷徨一时无措. 近日看了一个微信公众号的推 ...
- 公众号 菜单 代码 php,如何使用Vue.js实现微信公众号菜单编辑器(案例代码)
这次给大家带来如何使用Vue.js实现微信公众号菜单编辑器(案例代码),使用Vue.js实现微信公众号菜单编辑器的注意事项有哪些,下面就是实战案例,一起来看一下. 实现菜单删除方法 在vue实例中添加 ...
- redis关键字删除_微信公众号文章防删除
阅读本文大概需要 3.6 分钟. 前段时间<一个出身寒门的状元之死>刷屏了,当我看完了这篇文章,很有感触,一开始我以为是事实,后来才发现完全是虚构,对于我来讲并不是非常在乎文章中的故事是否 ...
- 【微信公众号● DBAplus】Oracle原厂老兵:从负面案例看Hint的最佳使用方式
原创 2016-10-12 罗敏 Oracle原厂老兵:从负面案例看Hint的最佳使用方式 作者介绍 罗敏,从事Oracle技术研究.开发和服务工作20余年,在Oracle中国公司的10多年,分别在 ...
- celery redis mysql_GitHub - FJUT/gxgk-wechat-server: 校园微信公众号后端,使用 Python、Flask、Redis、MySQL、Celery...
This code is no longer being maintained. 项目已经不再维护,开源的目的更多是给新手一个参考 Demo gxgk-wechat-server 校园微信公众号后端, ...
- 个人作业——关于福州大学微信公众号的案例分析
[作业博客] (https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1816W/homework/2438) 一.调研,评测 评测: 一. ...
- 微信python小课_微信公众号广告案例:Pytnon小课
小编每天都会给大家分享各个广告平台不同的广告案例哟,如果大家需要可以多多关注上海天擎,如果大家需要做广告投放,也可以联系我们! 今天小编要跟大家分享的广告案例是Python小课投放的微信公众号广告. ...
- php企业微信号js-sdk,php微信公众号js-sdk开发应用
这篇文章主要为大家详细介绍了php微信公众号js-sdk开发应用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 测试js的接口功能,我用的是BAE服务器不是SAE服务器.SAE服务器不能 ...
最新文章
- Nginx设置静态页面压缩和缓存过期时间的方法 (转)
- 晒一下MAC下终端颜色配置
- 在Office 365 添加就地保留用户邮箱
- 大道至简伪代码(第一个博客)
- 设计模式示例_状态设计模式示例
- webstorm 使用别名(@)import @import 时异常的问题
- 浅谈MVC、MVP、MVVM架构模式的区别和联系
- 别扭!iPhone XI Max渲染图曝光:后置超大方形3摄
- Select网络模型
- zTree入门实例(一眼就看会)
- flutter实现Icon可以用Image替换
- ics计算机系统全称,ICS计算机系统实验--datalab实验
- python分析html文件_如何用Python解析HTML?
- python 拆分字符串反斜杠_用反斜杠拆分字符串
- 2019春季总结报告
- 数据执行保护呈灰色无法开启 用命令BCEDIT无效 请问怎么解决?
- 情人节程序员用HTML网页表白【情人节爱你的代码】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- 【微信小程序】组件覆盖 z-index
- 在UE5中创建一个受战锤启发的角色
- 数据治理系列8:数据价值管理
热门文章
- 力扣第 104 场双周赛 2681. 英雄的力量
- 记录一次非常简单的C语言随堂练习
- Shell脚本:后台运行
- 考研英语图画类大作文
- 搭建一个私人云(群晖)
- 赛元单片机SC92F732x系列eeprom读写操作[以7321为例]
- 基于MOS管的负载开关电路
- YUV444,YUV422P,YUVY,YUYV,UYVY,NV21,NV12
- android 斗鱼礼物动画,GitHub - zy841336855/RewardLayout: 仿斗鱼直播送礼物和连击效果动画...
- PDF怎么修改,如何去除PDF中的水印