业务中有一个场景是需要记录公众号中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案例一则相关推荐

  1. php微信公众号支付接口案例,Thinkphp微信公众号支付接口

    本文实例为大家分享了Thinkphp微信公众号支付接口,供大家参考,具体内容如下 第一步 先把文件夹的那两个图片 配置成一样的路径 除了域名要改 其他保持一致. 第二步 把 Weixinpay 这个文 ...

  2. 小木的智慧屋--微信公众号的推广案例分析(1)

    前言: 前几天, 因为无聊搞了一个个人的微信公众号, 突然对微信公众号的推广方式有了些兴趣. 但苦于自己是个困在井底, 只道天空是个月饼的底层无知小码农, 竟彷徨一时无措. 近日看了一个微信公众号的推 ...

  3. 公众号 菜单 代码 php,如何使用Vue.js实现微信公众号菜单编辑器(案例代码)

    这次给大家带来如何使用Vue.js实现微信公众号菜单编辑器(案例代码),使用Vue.js实现微信公众号菜单编辑器的注意事项有哪些,下面就是实战案例,一起来看一下. 实现菜单删除方法 在vue实例中添加 ...

  4. redis关键字删除_微信公众号文章防删除

    阅读本文大概需要 3.6 分钟. 前段时间<一个出身寒门的状元之死>刷屏了,当我看完了这篇文章,很有感触,一开始我以为是事实,后来才发现完全是虚构,对于我来讲并不是非常在乎文章中的故事是否 ...

  5. 【微信公众号● DBAplus】Oracle原厂老兵:从负面案例看Hint的最佳使用方式

    原创 2016-10-12 罗敏  Oracle原厂老兵:从负面案例看Hint的最佳使用方式 作者介绍 罗敏,从事Oracle技术研究.开发和服务工作20余年,在Oracle中国公司的10多年,分别在 ...

  6. celery redis mysql_GitHub - FJUT/gxgk-wechat-server: 校园微信公众号后端,使用 Python、Flask、Redis、MySQL、Celery...

    This code is no longer being maintained. 项目已经不再维护,开源的目的更多是给新手一个参考 Demo gxgk-wechat-server 校园微信公众号后端, ...

  7. 个人作业——关于福州大学微信公众号的案例分析

    [作业博客] (https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1816W/homework/2438) 一.调研,评测 评测: 一. ...

  8. 微信python小课_微信公众号广告案例:Pytnon小课

    小编每天都会给大家分享各个广告平台不同的广告案例哟,如果大家需要可以多多关注上海天擎,如果大家需要做广告投放,也可以联系我们! 今天小编要跟大家分享的广告案例是Python小课投放的微信公众号广告. ...

  9. php企业微信号js-sdk,php微信公众号js-sdk开发应用

    这篇文章主要为大家详细介绍了php微信公众号js-sdk开发应用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 测试js的接口功能,我用的是BAE服务器不是SAE服务器.SAE服务器不能 ...

最新文章

  1. Nginx设置静态页面压缩和缓存过期时间的方法 (转)
  2. 晒一下MAC下终端颜色配置
  3. 在Office 365 添加就地保留用户邮箱
  4. 大道至简伪代码(第一个博客)
  5. 设计模式示例_状态设计模式示例
  6. webstorm 使用别名(@)import @import 时异常的问题
  7. 浅谈MVC、MVP、MVVM架构模式的区别和联系
  8. 别扭!iPhone XI Max渲染图曝光:后置超大方形3摄
  9. Select网络模型
  10. zTree入门实例(一眼就看会)
  11. flutter实现Icon可以用Image替换
  12. ics计算机系统全称,ICS计算机系统实验--datalab实验
  13. python分析html文件_如何用Python解析HTML?
  14. python 拆分字符串反斜杠_用反斜杠拆分字符串
  15. 2019春季总结报告
  16. 数据执行保护呈灰色无法开启 用命令BCEDIT无效 请问怎么解决?
  17. 情人节程序员用HTML网页表白【情人节爱你的代码】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  18. 【微信小程序】组件覆盖 z-index
  19. 在UE5中创建一个受战锤启发的角色
  20. 数据治理系列8:数据价值管理

热门文章

  1. 力扣第 104 场双周赛 2681. 英雄的力量
  2. 记录一次非常简单的C语言随堂练习
  3. Shell脚本:后台运行
  4. 考研英语图画类大作文
  5. 搭建一个私人云(群晖)
  6. 赛元单片机SC92F732x系列eeprom读写操作[以7321为例]
  7. 基于MOS管的负载开关电路
  8. YUV444,YUV422P,YUVY,YUYV,UYVY,NV21,NV12
  9. android 斗鱼礼物动画,GitHub - zy841336855/RewardLayout: 仿斗鱼直播送礼物和连击效果动画...
  10. PDF怎么修改,如何去除PDF中的水印