Redis實現簽到功能

2021-08-22 11:34:46 字數 701 閱讀 6536

string型別資料bitcount使用方法:bitcount key [start] [end] start和end代表的是位元組位,乙個位元組=八個位元位,start和end上只能體現位元組,bitcount只能夠算出位元組的所有「1」資料的個數,bitcount key 能夠統計key中的所有「1」的個數,不能夠精準到指定的位元位,這個方法是不能夠滿足我們的業務需求的(乙個星期是7天,乙個按30天來算,就需要30個bit來代表三十天,而乙個byte是八個bit,代表三十天就需要三個byte加上六個bit來表示乙個月),我們可以使用getbit方法獲取bit進行查詢而後進行判斷

這種資料型別占用的空間特別小,乙個位元位代表一天,乙個位元組代表八天,乙個專案執行 10年就是 365*10= 3650個位元位 3650 / 8 = 456個位元組;

例如使用者在專案中使用連續簽到的功能,當我們要算出指定使用者在專案執行的第一百天到一百五十天的簽到情況,這種業務需求我們可以使用getbit方法查詢出指定位元位之間的範圍,迴圈出使用者在這階段時間的簽到天數,使用bitcount方法可以根據bit算出byte 然後使用byte進行區間範圍查詢,使用bitcount方法查詢,查詢bit區間的範圍不夠準確;

setbit、getbit和bitcount 的區別:setbit是新增資料資訊,getbit是獲取指定的資料資訊,bitcount是獲取區間的資料資訊,setbit和getbit操作的是bit位的資料,而bitcount操作的是byte資料

php實現簽到功能

首先我在資料庫裡建了兩張表,乙個是使用者的積分表,乙個是簽到狀態表,分來用來記錄使用者的積分數和先到狀態 在使用者簽到狀態表中我們有乙個字段,last sign time,即上一次簽到時間,每次可以簽到的時候把這個時間與當前時間進行比較 如果相差為0天,則說明今天已簽到 這個簽到是24小時內只能簽到...

PHP實現簽到功能

php實現簽到功能 1 表設計 1 主表 create table sign id int 11 not null auto increment comment 主鍵自增 uid varchar 50 not null default 0 comment 使用者id 唯一 username varc...

PHP 實現簽到功能

如圖所示 實現上圖功能,建立兩張表 簽到獎品表 簽到記錄表 這個表可以再拆分出乙個表 2 功能 計算兩個時間戳之間相差的日時分秒 3 begin time 開始時間戳 4 end time 結束時間戳5 6public function timediff begin time,end time el...