一裸燎、工具是什么
? ?? 1 、內(nèi)存key-value存儲(chǔ)容器
? ?? 2泼疑、memcached主要使用于存儲(chǔ)實(shí)時(shí)性要求不是很高的信息德绿。
二、怎么用
??? 1退渗、有win移稳、linux、python等支持庫(kù)
???? 2会油、安裝請(qǐng)百度个粱。
? ? 重點(diǎn):memcached存儲(chǔ)的是key/value的鍵值對(duì),但是值必須是可序列化的對(duì)象(這里我說(shuō)的Java)翻翩,還可以是json,xml,html等都许,這里要說(shuō)明memcached集群,server端之間并不會(huì)進(jìn)行相互的通信嫂冻,通信完全由你的客戶(hù)端來(lái)完成胶征,你只需在客戶(hù)端規(guī)定好你的key值,然后set進(jìn)行桨仿,此時(shí)會(huì)有一個(gè)散列算法睛低,來(lái)決定你key會(huì)存放在哪臺(tái)server上。
三服傍、使用緩存的常用方法
????? 查詢(xún)數(shù)據(jù):
????? 1钱雷、先查緩存,查不到從DB里查詢(xún)吹零,將DB結(jié)果同步到緩存中罩抗,do業(yè)務(wù)邏輯
????? 2、查緩存瘪校,查到了澄暮,直接do業(yè)務(wù)邏輯
???? 寫(xiě)入數(shù)據(jù):
???? 當(dāng)數(shù)據(jù)寫(xiě)入了之后名段,同步寫(xiě)入到緩存中,如memcached
??? 更新modify數(shù)據(jù):
??? DB先modify泣懊,然后根據(jù)memcached的key值先刪除緩存中的數(shù)據(jù)伸辟,再插入新的數(shù)據(jù)。
? ? (注意:memcached 內(nèi)的存儲(chǔ)操作是原子的馍刮,所以信息的更新不會(huì)讓客戶(hù)機(jī)只獲得部分?jǐn)?shù)據(jù)信夫;它們獲得的或者是老版本,或者是新版本卡啰。)
四静稻、web開(kāi)發(fā)中的啟發(fā)
? ? 可以用spring aop來(lái)攔截你要緩存的service,通過(guò)類(lèi)名+方法名+參數(shù)名匈辱,來(lái)做到memcached的key值得唯一振湾。
? ? 可以用于分模塊開(kāi)發(fā) ,因?yàn)檎{(diào)用的都是同一個(gè)類(lèi)中的方法亡脸,但是攔截器也是回影響性能的押搪,但是開(kāi)發(fā)效率會(huì)提高的,還有就是不會(huì)破壞你的service的業(yè)務(wù)邏輯浅碾。
五大州、參考推薦
http://snowolf.iteye.com/blog/1576818
???