网站禾 只 分之我见

23 篇文章 0 订阅
20 篇文章 0 订阅

数据库:

        * 专库

        水平表(以用户ID 取100模来建表)

                 增加当天的日期字段来方便取同一天的数据。

CREATE TABLE `jifen_log90` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '积分记录表',
  `uid` int(10) unsigned NOT NULL DEFAULT '0',
  `from` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '1界面',
  `channel` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '1www2m3app',
  `action` mediumint(8) unsigned DEFAULT '0' COMMENT '获取积分的动作',
  `credits` mediumint(8) unsigned DEFAULT '0' COMMENT '获得积分的数目',
  `addtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '获得时间',
  `day` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '当天时间',
  PRIMARY KEY (`id`),
  KEY `idx_uda` (`uid`,`day`,`action`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

        总表(在添加用户积分时 同步更新),

CREATE TABLE `jifen_total` (
  `uid` int(10) unsigned NOT NULL DEFAULT '0',
  `total` int(10) NOT NULL DEFAULT '0',
  `updatetime` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

        配置表(可在项目库中,方便管理),

CREATE TABLE `jifen_config` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `code` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '埋码值',
  `title` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '标题',
  `credits` int(11) NOT NULL DEFAULT '0' COMMENT '单次积分',
  `max_credits` int(11) NOT NULL DEFAULT '0' COMMENT '每日最大积分',
  `max_num` int(11) NOT NULL DEFAULT '0' COMMENT '每日最多次数',
  `addtime` int(11) NOT NULL COMMENT '添加时间',
  `updatetime` int(11) NOT NULL COMMENT '更新时间',
  `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 1启用,0禁用',
  `type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '类型,0多端显示,1web端,2app端',
  `order` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_bin


==========================================由定时维护方便分析

每天总积分统计

   CREATE TABLE `jifen_count` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '积分统计',
  `total` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '总分',
  `www` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'www端',
  `m` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'm端',
  `app` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'APP端',
  `day` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8

每天分类积分统计

CREATE TABLE `jifen_count_detail` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `actid` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '积分配置',
  `total` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '总积分',
  `www` int(11) unsigned NOT NULL DEFAULT '0',
  `m` tinyint(11) unsigned NOT NULL DEFAULT '0',
  `app` tinyint(11) unsigned NOT NULL DEFAULT '0',
  `day` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=89 DEFAULT CHARSET=utf8 COLLATE=utf8_bin


程序缓存使用

      每次添加积分:

            1 用数据库判断是否已达到每日限额;

            2 如果总积分存在,就更新,不存在刚不更新,等待用户获取的时候再更新缓存

            3删除每日各项jifen的redis hset

            4 更新分表和总表的时候要使用事务操作

            *减少redis数据存储量,减少数据维护量,减少结构点

       每次获取数据的时候再更新缓存

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值