サービス・エンド・キャッシュのいくつかの使い方について説明します
キャッシュといえば、「データベースの前に立ちはだかる」ことが一番ストレートかもしれません.これはキャッシュの最も原始的な意味であり,キャッシュの最も一般的な使い方も示している.
元のモード
コード例1(オリジナルモード):
// [ ]
data = getfromcache(id)
if data == null then
// [ ]
data = getfromdb(id)
// 1
setintocache(id, data, 86400)
return data
end
return data
, N , getfromcache, data , getfromdb, setintocache。 , 。
, if , , , setintocache , getfromcache。
? 。 value 。
value data, , json ,
{data:data,atime:1429618765}
atime 。 。
2( ):
// [ ]
data = getfromcache(id)
data = json.decode(data)
// , , 5 ( , 5 , )
if data != null && data.atime+86400 < now then
data.atime = now+300-86400
data = json.encode(data)
// cache , 10
setintocache(id, data, 864000)
// data null if
data = null
end
if data == null then
// [ ]
data = getfromdb(id)
data = {data:data, atime:now}
data = json.encode(data)
// cache , 10
setintocache(id, data, 864000)
return data
end
return data
, , 1 , getfromcache setintocache , N , , 。
, 。 , 1 , getfromcache setintocache , getfromdb , 。 2 , , 。
1 getfromcache setintocache 2 。 2 , 。 。 。
, 2 , 1( atime 。 atime )。
? , 。 , 。 , , 。 。
: , , , , 。
, 。 , id key。 , , 10 。 key page_1,page_2...page10。
, 10 , 10 。 。
。 2 , 2 , atime , 。 , 。 , updatetime 。 , updatetime atime , , , 。
3( ):
// [ ][ get ]
data = getfromcache(id)
updatetime = getupdatetime(id)
data = json.decode(data)
// , , 5 ( , 5 , )
if data != null && (data.atime+86400 < now || date.atime < updatetime) then
data.atime = now+300-86400
data = json.encode(data)
// cache , 10
setintocache(id, data, 864000)
// data null if
data = null
end
if data == null then
// [ ]
data = getfromdb(id)
data = {data:data, atime:now}
data = json.encode(data)
// cache , 10
setintocache(id, data, 864000)
return data
end
return data
2
date.atime < updatetime
, , , 。
, , 。
。( , , !)
, , PHP ( X)。
:ligang1#letv.com