HTTP 是無狀態(tài)的協(xié)議,上一條和下一條沒有什么聯(lián)系,要建立聯(lián)系需要在客戶端和服務(wù)器作一些數(shù)據(jù)記錄。
在 Web 的應(yīng)用上,用 Redis/Memcached 來做 session 的存儲,以加速后臺業(yè)務(wù)的處理速度。譬如用戶的購物車的數(shù)據(jù),可以在服務(wù)端作存儲。傳統(tǒng)里把 session 數(shù)據(jù)庫中,可以放在內(nèi)存中,存儲系統(tǒng)就派上有用場了。
下面的一段簡單的 Python 的代碼,如果 Redis 緩存的數(shù)據(jù),先從 Redis 中取,否則從數(shù)據(jù)庫中查詢,接著返回?cái)?shù)據(jù)給到前端。
def GetUserShopingCart(user_session):
goods = Redis.Get(user_session)
if goods is not null:
return goods
ret = Mysql.Query("select * from user_shoping_cart where sessionid = %d" %
(user_session))
return ret
def SaveUserShopingCart(user_session, goods):
ret = Redis.Set(user_session,goods)
if not ret:
Log("save redis error")
ret = Mysql.Query("insert into user_shoping_cart (sessionid, goods) values"
"(%s)",goods)
return ret
大概來看一下后臺的設(shè)計(jì)圖:
http://wiki.jikexueyuan.com/project/redis/images/w2.png" alt="" />