微信公众号开发应用redis案例一则
2018-01-10 15:05
239 查看
业务中有一个场景是需要记录公众号中48小时内活跃过的用户,以便我们可以给他们推送客服消息。这个适用场景如下:点击打开链接
需要记录的事件有:关注、发消息、点击菜单。所以思路就是每次用户触发这些事件的时候,微信服务器会给我们服务器发消息。这个时候可以记录当前时间,并以userId为key存储到redis中。要想在Yii框架中使用redis,需要在web.php中配置一下:
下面介绍下Yii框架下要实现这个功能所要用到的redis知识。
Yii框架执行redis命令代码如下:
这段代码的含义就是在redis中执行如下命令:set 78952 time(当前时间戳) EX expire(过期时间)。就是在redis中增加一条记录,以user_id为key,以当前时间戳为value,EX表示过期时间单位为秒,最后一个参数为具体过期时间。
redis中的命令可以在如下链接中查看:redis命令
这段代码执行的结果可以在redis中查看到:这就表明,用户id为783239的用户,在时间戳为1515565250的时间触发了这个动作。这条记录会被保存47小时。redis中记录过期后,redis会有两种清除机制。一种是主动清除,就是起一个定时任务,每十秒中扫描一次,查看是否有过期记录,如果有就删除。一种是被动清除,仅当记录被访问的时候,检查是否过期。
要获取reids中所存储的相关记录可以使用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表都会被删除。
需要记录的事件有:关注、发消息、点击菜单。所以思路就是每次用户触发这些事件的时候,微信服务器会给我们服务器发消息。这个时候可以记录当前时间,并以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应用案例 查找某个值的范围
- Redis的常用命令及高级应用开发
- 敏捷开发案例--混乱小项目的敏捷应用
- Android RxJava实际应用案例讲解:使用RxJava的最佳开发场景
- 基于mint-ui的移动应用开发案例三(首页)
- 基于mint-ui的移动应用开发案例五(个人中心)
- 谷歌北京开发者社区开源Linux开发经验及典型应用案例分享讲座
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-复杂业务的实现(商品入库)-附案例操作视频
- Redis应用案例,查找某个值的范围(转)
- Jdon应用系统案例开发
- 微信公众号开发案例
- 微信公众号开发(四):js-sdk的应用
- RAC-DG升级后无法同步应用案例一则
- Android应用开发之FrameLayout (帧布局)+小鸟飞翔案例
- 【视频课程】Android应用开发典型案例分析—主流mp3播放器
- 基于RED5&Flex流媒体应用实战开发(附多人聊天室、在线秀场及视频会议三大案例)
- Python循环嵌套应用案例一则:判断丑数
- Redis实践(三)基于jedis开发java应用:redis的8种方式设置key,value
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例