PHP使用redis實現搶單功能

2021-10-11 14:28:40 字數 1277 閱讀 5129

前置條件 :

安裝redis

開啟redis

php開啟redis拓展 ( 直到phpinfo中可以看得到redis )

注意 : 不開啟redis也是連線不上的

windows開啟redis命令:

開啟cmd , 先切到對應的目錄 , 如果不想每次切就配環境變數

$ cd "你的redis目錄路徑"\redis-server
如果是遠端連線或者你的redis配置了密碼

$ redis-cli -h host -p port -a password
連線成功之後你會看到redis的資訊

ok準備完成

首先連線redis , 預設埠6379

<

?php

$redis =

newredis()

;$redis-

>

connect

('127.0.0.1'

,6379

);

這一步沒報錯就說明連線成功 , 如果報錯請看上面步驟有哪個沒實現

我使用的資料型別為列表

//往列表中存入資料

$redis-

>

lpush

($key,$value)

;

獲取列表當前長度

$len = $redis-

>

llen

($key)

;

由於redis的列表排序是乙個desc的反序 , 所以取出第一條記錄的話需要這樣取

$list = $redis-

>

lrange

($key,$len-

1,$len-1)

;

判斷當前的$value是否在列表第一位

if

($value != $list[0]

)else

搶單成功之後清除列表快取

$redis-

>

del($key)

;

這裡我做的是乙個單訂單搶單的業務邏輯 , 也就是相當於庫存為1

如果需要做多庫存的邏輯 , 需要配合上mysql的剩餘庫存量做判斷 , 不要用查詢資料庫操作 , 盡量使用快取來實現 , 因為mysql不適合處理高併發的情況

如何用redis實現訊息佇列搶單功能

import time import redis 連線資料庫 db redis.redis host 192.168.3.2 port 6379,decode responses false 連線redis資料庫 print 連上了 def phone into phone name 將待搶購商品加...

redis排重 使用 Redis 實現排行榜功能

排行榜功能是乙個很普遍的需求。使用 redis 中有序集合的特性來實現排行榜是又好又快的選擇。一般排行榜都是有實效性的,比如 使用者積分榜 如果沒有實效性一直按照總榜來排,可能榜首總是幾個老使用者,對於新使用者來說,那真是太令人沮喪了。首先,來個 今日積分榜 吧,排序規則是今日使用者新增積分從多到少...

redis排重 使用 Redis 實現排行榜功能

排行榜功能是乙個很普遍的需求。使用 redis 中有序集合的特性來實現排行榜是又好又快的選擇。一般排行榜都是有實效性的,比如 使用者積分榜 如果沒有實效性一直按照總榜來排,可能榜首總是幾個老使用者,對於新使用者來說,那真是太令人沮喪了。首先,來個 今日積分榜 吧,排序規則是今日使用者新增積分從多到少...