springboot 限時秒殺

2021-10-01 16:43:42 字數 2430 閱讀 2725

redisdao 來控制秒殺物件是否放入快取中

@repository

public class redisdao

private runtimeschemaschema = runtimeschema.createfrom(seckill.class);

public seckill getseckill(integer seckillid)

} finally

} catch (exception e)

return null;

}public string putseckill(seckill seckill) finally

} catch (exception e)

return null;

}}

@configuration

public class jedisconfig ")

private string host;

@value("$")

private int port;

@value("$")

private int timeout;

@bean

public jedispool redispoolfactory()

}

@autowired

redisdao redisdao;

private integer id =1;

@test

public void seckill()

}}

-- 秒殺執行儲存過程

delimiter $$ -- console ; 轉換為 $$

-- 定義儲存過程

-- 引數: in 輸入引數; out 輸出引數

-- row_count(): 返回上一條修改型別sql的影響行數

-- 0:未修改資料; >0 表示修改的行數; <0 表示sql錯誤/未執行修改

create procedure `spring`.`execute_seckill`( in v_seckill_id int , in v_phone varchar(255) , in v_kill_time timestamp , out r_result int )

begin

declare

insert_count int default 0;

start transaction;

insert ignore into success_killed

( seckill_id, user_phone, create_time )

values

( v_seckill_id, v_phone, v_kill_time );

select

row_count( ) into insert_count;

if ( insert_count = 0 ) then

rollback;

set r_result = - 1;

elseif ( insert_count < 0 ) then

rollback;

set r_result = - 2;

else

update seckill

set number = number - 1

where

seckill_id = v_seckill_id

and end_time > v_kill_time

and start_time < v_kill_time and number > 0;

select

row_count( ) into insert_count;

if ( insert_count = 0 ) then

rollback;

set r_result = 0;

elseif ( insert_count < 0 ) then

rollback;

set r_result = - 2;

else commit;

set r_result = 1;

end if;

end if;

end;

$$-- 儲存過程定義結束

set @r_result = -3;

call execute_seckill(1, 11111111118, now(), @r_result);

select @r_result;

-- 獲取結果

-- 儲存過程

-- 1:儲存過程優化:事務行級鎖持有時間

-- 2:不要過度依賴儲存過程

-- 3:簡單的邏輯可以應用儲存過程

-- 4:qps:乙個秒殺單6000/qps-- 秒殺執行過程

騰訊雲雙12限時秒殺

騰訊雲伺服器在 12 月份推出多個秒殺活動專場,針對各種不同需求的使用者推出了各項優惠措施,從 1 核2g 到 16 核32g 有各種不同檔位的伺服器均提供各種優惠,另外新老使用者也有不同的活動,以下我們來看下本次 12 月騰訊雲伺服器活動內容。騰訊雲www.cppcns.com伺服器 12 月專場...

springboot單機秒殺之queue佇列

一 queue佇列,類似水管,水從入口進從水龍頭出,水龍頭要一直著水就會出來,沒有水就會等水出來。所以我們用到兩個方法,新增和取值。add 增加乙個元索 如果佇列已滿,則丟擲乙個iiiegaislabeepeplian異常 put 新增乙個元素 如果佇列滿,則阻塞 因為我們是秒殺,我們指定佇列長度後...

MySQL限時解答

mysql在國內各個行業的使用率越來越高,使用場景也越多,相應的遇到的疑惑也越來越多。在遇到這些問題之後,目前已有的解決途徑有 1 培訓 這是從長計議的方式,不能解決燃眉之急 2 bbs 目前bbs相當沒落,提出問題之後,回答時間和質量均不好保證 3 qq群 即時通訊工具的訊息很容易被淹沒,有能力回...