当前位置: 首页 > news >正文

物流网站建设推广优化设计答案大全

物流网站建设推广,优化设计答案大全,丰台网站制作浩森宇特,杭州网站建设app最近项目里需要集成签到和统计功能,连续签到后会给用户发放一些优惠券和奖品,以此来吸引用户持续在该品台进行活跃。下面我们一些来聊一聊目前主流的实现方案。 因为签到和统计的功能涉及的数据量比较大,所以在如此大的数据下利用传统的关系…

最近项目里需要集成签到和统计功能,连续签到后会给用户发放一些优惠券和奖品,以此来吸引用户持续在该品台进行活跃。下面我们一些来聊一聊目前主流的实现方案。

因为签到和统计的功能涉及的数据量比较大,所以在如此大的数据下利用传统的关系型数据库进行计算和统计是非常耗费性能的,所以目前市面上主要依赖于高性能缓存RedisBitMap功能来实现。

先看看利用Mysql实现以上功能会有哪些缺陷和短板。

1.使用Mysql实现签到功能

首先我们需要一个签到表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oyI6Br1I-1693143208246)(1.png)]

DROP TABLE IF EXISTS `tb_sign`;
CREATE TABLE `tb_sign` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`user_id` int(11) NOT NULL COMMENT '用户Id',`year` year(4) NOT NULL COMMENT '签到的年',`month` tinyint(2) NOT NULL COMMENT '签到的月',`date` date NOT NULL COMMENT '签到日期',`is_backup` tinyint(1) NOT NULL COMMENT '是否补签',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

用户一次签到,就是一条记录,假如有1000万用户,平均每人每年签到次数为10次,则这张表一年的数据量为 1亿条

每签到一次需要使用(8 + 8 + 1 + 1 + 3 + 1)共22 字节的内存,一个月则最多需要600多字节

这样的坏处,占用内存太大了,极大的消耗内存空间!

我们可以根据 Redis中 提供的 BitMap 位图功能来实现,每次签到与未签到用0 或1 来标识 ,一次存31个数字,只用了2字节 这样我们就用极小的空间实现了签到功能

2.Redis BitMap

2.1 BitMap 的操作指令

  • SETBIT:向指定位置(offset)存入一个0或1
  • GETBIT:获取指定位置(offset)的bit值
  • BITCOUNT:统计BitMap中值为1的bit位的数量
  • BITFIELD:操作(查询、修改、自增)BitMap中bit数组中的指定位置(offset)的值
  • BITFIELD_RO:获取BitMap中bit数组,并以十进制形式返回
  • BITOP:将多个BitMap的结果做位运算(与 、或、异或)
  • BITPOS:查找bit数组中指定范围内第一个0或1出现的位置

2.2 使用 BitMap 完成功能实现

利用SETBIT新增key 进行存储

SETBIT bm1 0 1

看不懂上面的指令?没关系,我们可以通过help指令查看提示

help SETBIT

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-28566Xts-1693143208248)(2.png)]
通过这个指令可以看出Redis SETBIT 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。位的设置或清除取决于 value,可以是 0 或者是 1 。

当 key 不存在时,自动生成一个新的字符串值。字符串会进行伸展以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。offset 参数必须大于或等于 0 ,小于 2^32 (bit 被限制在 512 MB 之内)。

提示:如果 offset 偏移量的值较大,计算机进行内存分配时可能会造成 Redis 服务器被阻塞。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QVfbhrcc-1693143208249)(3.png)]
这样的话我们就可以通过偏移量设置每一天的签到情况:

  • 偏移量:表示天
  • val值:表示是否签到
    • 已签到设置为1
    • 未签到设置0

下面我们只需要通过GETBIT命令就可以查看每一天的签到情况

GETBIT bm1 2

表示查看bm1用户第二天的签到情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rZN6uEyA-1693143208250)(4.png)]
同样,我们可以通过BITCOUNT可以统计出该用户签到了多少天

BITCOUNT bm1 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fdEvzcNG-1693143208251)(5.png)]
通过BITFIELD以原子方式操作(查询、修改、自增)BitMap中bit数组中的指定位置(offset)的值

明天继续更新

http://www.tj-hxxt.cn/news/26011.html

相关文章:

  • 网站开发与网页设计品牌策划的五个步骤
  • 没有做等保的网站不能上线对吗网站设计与网页制作
  • 谷歌企业邮箱注册企业seo推广外包
  • 网站 http 状态码返回值301解决天津seo排名收费
  • 网站推广如何做的比较靠谱的推广公司
  • 扬州住房城乡建设局网站广告推广有哪些平台
  • 网站可以自己维护吗公司想做网络推广贵不
  • 安徽网站建设天锐科技上海网站建设seo
  • 北京科技网站制作百度推广开户费用
  • 自己做网站可以随便起名字吗怎么注册自己的网站
  • 江苏建设人才网站北京网站seowyhseo
  • 网站放假通知百度极速版下载
  • 网站建设 APP开发销售怎么做竞价推广账户托管
  • 新疆建设兵团信息网站seo 推广服务
  • 房产o2o网站建设百度网址大全 旧版本
  • 知名网站建设多少钱朋友圈广告推广代理
  • 怎么创建一个博客网站乐陵seo外包
  • 怎么把自己做的网页上传网站百度seo软件优化
  • 网站建设优酷网店代运营和推广销售
  • 沧州黄骅市贴吧外贸网站推广优化
  • 网站解析打不开百度指数查询入口
  • 网站建设需要营销的方法和技巧
  • 阿里云服务器 放多个网站怎么找平台推广自己的产品
  • 昌平做网站公司公司网站制作费用
  • 移动端网站建设的软件有哪些推广费用一般多少钱
  • 设计网站多少钱企业推广策划
  • 假链接制作网站承德seo
  • 织梦做的网站能做seo吗网站检测工具
  • 怎么看网站是不是php语言做的营销 推广
  • 做网站需要找什么客户兰州seo优化公司