不言不语

您现在的位置是: 首页 >  数据库  >  Redis

Redis

实例:redis实现计数器功能

2022-05-28Redis
几乎每家社交网站和视频网站都广泛的应用了计数器功能(点赞,顶/踩),尤其热门消息的时候计数器增长更是成倍增长。通常的解决方案就是存入 Redis 中,再定时持久化到关系型数据库中(MySQL)。

写入计数器

public function addCount($video_id){
    $redis = new \Redis();
    $redis->connect('127.0.0.1', 6379);

    $redis->incr("v:c:{$video_id}");
    // $redis->incrBy("v:c:{$video_id}", 1);
    // $redis->incrBy("v:c:{$video_id}", -1);}

定时读取计数器

使用计划任务,每隔一段时间执行一次函数。ThinkPHP5 推荐使用自定义命令行工具。

public function AsyncWriteCount($video_id){
    $redis = new \Redis();
    $redis->connect('127.0.0.1', 6379);

    $count = $redis->get("v:c:{$video_id}");

    // ======================
    // 写入数据库
    // ======================

    if (/* 写入数据库成功 */) {
    	$redis->set("v:c:{$video_id}", 0);
    }}

以上只是最简单的演示代码,实际项目中不会使用简单的字符串来做计数器,通常是列表或者有序集合


文章评论