mysql和redis用于网站活跃度_让你设计实现一个签到功能,到底用MySQL还是Redis?...

news/2024/5/13 1:01:46/文章来源:https://blog.csdn.net/weixin_28958411/article/details/113605849

你知道的越多,不知道的就越多,业余的像一棵小草!

你来,我们一起精进!你不来,我和你的竞争对手一起精进!

编辑:业余草 推荐:https://www.xttblog.com/?p=5097

一个签到功能,可以实现得很复杂(涉及到积分,任务,并发等),也可以实现得很简单。今天我只提供思路,不涉及具体实现,也欢迎大家评论留言说说自己的见解!

下面,看下签到功能怎么选择?

现在的网站和app开发中,签到是一个很常见的功能,如微博签到送积分,签到排行榜~

6378c3907185097cf90131bc5d7457a7.png

微博签到

如移动app ,签到送流量等活动,

6e22bd6b611aaec5cf98ea164c75e2ca.png

移动app签到

用户签到是提高用户黏性的有效手段,用得好能事半功倍!

下面我们从技术方面看看常用的实现手段:

一. 方案1

直接存到数据库MySQL

用户表如下:

366ab36879fef26c2f3592c0a2120fe1.png

last_checkin_time 上次签到时间

checkin_count 连续签到次数

记录每个用户签到信息

签到流程

1.用户第一次签到

last_checkin_time = time()checkin_count=1

2.用户非第一次签到,且当天已签到

什么也不做,返回已签到。

3.用户非第一次签到,且当天还未签到

a.昨天也有签到

last_checkin_time = time()checkin_count= checkin_count+1

b.昨天没有签到

last_checkin_time = time()checkin_count=1

具体逻辑代码就不贴了,因为太简单了,就是数据库得增删改查。

二. 方案2

redis实现方案,使用bitmap来实现,bitmap是redis 2.2版本开始支持的功能,一般用于标识状态,

另外 ,用bitmap进行当天有多少人签到非常的方便,使用bitcount

count=redis->BITCOUNT($key);

签到流程

设置两个bitmap ,

一个以每天日期为key ,每个uid为偏移量

一个以用户uid为key ,当天在一年中的索引为偏移量,

这样记录一个用户一年的签到情况仅需要365*1bit

以下是签到伪代码

//每天一个keyString key = "checkin_" + "日期yyyy-m-d";if(redisService.getbit(key, userid)){//已签到}else{//签到redisService.setbit(key, uid, 1);}

以下是用户连续签到计算

public int getUserCheckinCount(String uid){String key = "checkin_" + uid;// 查询昨日签到是否连续进行逻辑计算}

以下是计算一天签到用户数

String key = "checkin_" + "yyyy-m-d";Long count = redisService.BITCOUNT(key);

还有什么需求呢?可以自己试着去实现

三. 优缺点比较

1、直接MySQL

思路简单,容易实现;

缺点:占用空间大,表更新比较多,影响性能,数据量大时需要用cache辅助;

2、Redis bitmap

优点是: 占用空间很小,纯内存操作,速度快;

缺点是: 记录的信息有限,只有一个标识位;

偏移量不能大于2^32,512M;大概可以标识5亿个bit位,绝大多数的应用都是够用的啦;

偏移量很大的时候可能造成 Redis 服务器被阻塞;所以要考虑切分。

好啦,两种方式介绍完了,各有利弊,你喜欢哪种方式呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_798675.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php水印可以编辑位置,修改Discuz网站水印位置为任意(随机)位置的解决方案

相信既然你看到了这个文章,而且有兴趣看下去,就说明你已经知道了水印是什么,当然如果你不知道但依然保持学习的热情,我这里就废话一句:水印其实就是为了保护我们的版权,让其他的人看到后认为该图片是我们的…

qqshow在线试衣网站源码(php+mysql)_简单的php+mysql聊天室实现方法(附源码)

本文实例讲述了简单的phpmysql聊天室实现方法。分享给大家供大家参考,具体如下:这里介绍的程序分为 8 个文件:frameset框架页面:index.php显示聊天室内容页:show.php用户登陆页面:login.php用户发言页面:sp…

《精通PHP+MySQL动态网站开发》

http://product.dangdang.com/23220410.html

《HTML5移动网站与App开发实战》简介

#好书推荐##好书奇遇季#《HTML5移动网站与App开发实战》,京东当当天猫都有发售。定价79元,网店打折销售更便宜。本书内容非常系统全面,配套示例源码与PPT课件。 本书由浅入深出、全面系统地介绍HTML5相关技术及其在移动开发领域的应用。从基本…

发布一个网站

从tomcat角度来理解发布web网站的过程 1、下载tomcat,自行参考百度文章 2、查看tomcat的webapps文件目录,webapps目录用来存放应用程序,所以目录下的每一个文件夹都是一个应用程序 网站的结构 –webapps:tomcat服务器的web目录 –…

cdn缓存服务器有网站图片,CDN缓存服务器图片存储一致性hash算法的理解

用hash做缓存,假如有三台服务器,1,2,3,有三万张图片,我想将图片平均缓存到我三台服务器上,一个服务器大概一万张,怎么去实现这个办法呢,可以用hash来取余数进行操作,加入我们是以图片…

html静态登录界面代码_如何快速搭建静态网站

“ 在日常运用场景中,由于便捷、低开发成本,静态网站常被作为快速建站的一个备选方案,它可以满足许多内容相对固定的网站建站需求,例如企业官网(介绍、产品展示等)、个人简历网站等。因为内容不常更新,所以可以不带管理…

springboot 2.3_SpringBoot必备的5个免费网站,果断收藏~

在过去的几年的时间里,最让人兴奋、回头率最高、最能改变游戏规则的东西,大概就是『 Spring Boot 』了。Spring Boot提供了一种新的编程范式,能在最小的阻力下开发Spring应用程序。有了它,你可以更加敏捷地开发Spring应用程序&…

什么是域名?什么网站名?什么是URL?

域名,相信大家都不默认,也使用过无数次!比如: google.com、baidu.com、163.com等。 这时候,你可能要奇怪了,为什么小编没有在前面加上www? 因为正常情况下,不应该是www.baidu.com之类的吗&…

mybatis foreach index用法_SpringBoot入门建站全系列(四)Mybatis使用进阶篇:动态SQL与分页...

SpringBoot入门建站全系列(四)Mybatis使用进阶篇:动态SQL与分页上一篇介绍了Mybatis的配置和基本用法《SpringBoot入门建站全系列(三)Mybatis操作数据库》这一篇在此基础上进阶使用mybatis。所以,这里就不说怎么怎么配…

宝塔绑定域名访问不了_建站系列教程(二)--本地局域网访问和域名解析

第二讲:如何访问网站:1、本地访问、局域网访问安装wampsever集成软件,w:windows a:apache m:mysql p:php,也就是搭建了一个本地服务器环境。打开软件,在任务栏可以看到绿色的图标,表示已经正常开启服务器环…

python 代码变流程图_一个很香的python练习网站

推荐一个python练习网站w3resource,练习题包括python的基础数据类型,函数、内置的一些库比如os、datatime、collections等等,还有一些第三方的库,每道题会给出题目描述,然后提供代码编辑窗口,还有网站给出的…

linux软件下载网站6,CentOS 6.6 发布下载

虽然 RHEL/CentOS 7 已经发布一段时间了,但是 6 系列仍然在继续更新和维护。昨日,该系列跟随其上游版本,发布了其最新更新版本 CentOS 6.6。由于 RHEL/CentOS 7 带来了很多大幅变化,包括 systemd 之类,其是非功过不好评…

前端设计开发人员必看的资讯、资源、教程类网站大全

做为一个前端设计开发人员,每天都要抽出时间来看一些前端资讯网站、PHOTOSHOP设计资源类网站、CSS作品欣赏类网站,以及各种相关网站。今天分享给大家的60个网站,均是前端开发爱好者们必看的,非常的经典。希望朋友们收藏。 W3Schoo…

实用用网站推荐:你可能不知道的10个图标搜索引擎

设计师们在工作中经常需要用到各种图标素材,虽然网上能搜到很多的图标资源网站,但要找到免费的高质量图标却很难。之前笔者也向大家分享过8个超棒的免费高质量图标搜索引擎,今天与大家分享另外一些优秀的免费质量图标搜索引擎,相信…

(转)分布式加载网站的静态文件

原文地址:http://www.cnblogs.com/huangxiufen/archive/2012/09/07/2668584.html因为公司想要通过静动态分离的方式使得网站访问速度更快速,所以选择了分布式加载网站中的静态文件(js,css,images),当然还有另外一些方法,这边就不做深入探讨(因…

网站以及app导航设计 十大实用技巧

设计一款良好的、用户友好的网站并没有什么科学之举,除非你懂得利用技巧和策略,方能让用户流连忘返的访问你的网站。这就要求设计师在网站设计上保持洁净、简单,使用正确的色调、清晰度、响应速度以及极易导航功能。因此,网站的友…

IE无法打开internet网站已终止操作的解决的方法

用IE内核浏览器的朋友,或许不经意间会碰到这样滴问题:打开某个网页时,浏览器“嘣”跳出一个提示框“Internet Explorer无法打开Internet 站点...已终止操作”。而大多数情况下该页面甚至非常可能看起来已经载入完成,内容能够全然显…

sublime教程html5,SublimeText开发html网站教程(一)

Sublime Text是一款跨平台的代码编译器。本节内容包含如下几个部分:1.sublime text的安装2.快捷键使用方法3.插件的安装以及替换一.Sublime Text的安装Sublime Text的官网下载地址:点击打开链接 如下图Sublime Text可用于开发的使用环境,如下…

服务器加什么网站才打开快,如何优化让网站打开速度更快些呢?

如何优化让网站打开速度更快些呢?前段时间,经常有人跟我说起为什么有的网站打开速度会很慢,等它加载完成需要一分钟左右,而有的打开速度很快,刷的一下就出来了。在相同的带宽下为什么会出现这种现象呢?这与你的网站的…