網站禾 只 分之我見

數據庫:

        * 專庫

        水平表(以用戶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數據存儲量,減少數據維護量,減少結構點

       每次獲取數據的時候再更新緩存

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章