使用redis来做计数器完善投票系统


当前第2页 返回上一页

最后,我们只需要做一个定时任务了,让mysql每隔一定时间就去同步用户的得票数。

方法是做一个死循环,每次循环都获取50个用户得票数,直到遍历完所有用户后,就退出循环,结束脚本。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

$start = 0;

while (true) {

    // 每次循环取50个用户id

    $users = $DB->query("SELECT uid,votes FROM users LIMIT $start, 50");

    if (!$users) {

        exit();

    }

    $keys = [];

    foreach ($users as $userinfo) {

        $keys[] = "uid:{$userinfo['uid']}:vote";

    }

    $votes = $redis->mget($keys);

    foreach ($votes as $index => $vote) {

        if ($vote != $users[$index]['votes']) {

            $DB->query("UPDATE users SET votes = '$vote' WHERE uid='{$users[$index]['uid']}");

        }

    }

    $start += 50;

}

Redis的mget命令的是一次获取多个key的值。获取了redis里存放的redis得票数后,要先和Mysql里的得票数做比对。不一样的时候才去更新Mysql的数据。

以上就是使用redis来做计数器完善投票系统的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

Redis怎么查看版本

Redis连接数配置多少

Redis使用哪种持久化策略好

关于java基于Redis有序集合实现排行榜

windows系统添加和删除Redis服务的方法

Redis实现秒杀的方法介绍(附代码)

浅谈Redis sds跟c字符串的区别

什么是Redis分布式锁

Redis info命令介绍

使用Redis的bitmaps统计活跃用户

更多相关阅读请进入《Redis》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...