2009-05-04 54 views
5

問題:什麼緩存框架可用於德爾福和他們有多發展?如果沒有,那麼實現相同目標的方式是否被廣泛接受? 適用於Win32目標版本的Delphi。德爾福有沒有任何緩存框架?

問題詳細信息:類型的框架,我詢問的存在主要是在Web開發框架,允許用戶:

  • 檢查緩存爲先前存儲的數據/對象
  • 檢索數據/對象
  • 存儲新數據/對象
  • (可選)標記數據/對象並對其進行標記。
  • 基於某些條件(標籤,標籤,時間限制等)過期數據/對象。

據我瞭解,缺乏對無RTTI德爾福對象反映服務手段,他們可能不會以同樣的方式存在,但有一個更達到相同的最終結果的至少一部分的類似的方式Delphi的方式?

替代方法:作爲本機Delphi庫的替代方案:是否有例如一組好的memcached或類似的綁定?

回答

4

我在Linux上使用了memcached(在Windows和MacOS以及幾乎任何其他操作系統上都有版本),這很簡單。

我處理直接使用Indy的TIDTelnet,通過閱讀該協議的documentation,我只用設置得到刪除,並退出

我用這樣的命令(我設置並獲得「名」,14個字節的存儲數量):

[email protected]:~$ telnet 127.0.0.1 11211 
Trying 127.0.0.1... 
Connected to 127.0.0.1. 
Escape character is '^]'. 
set name 0 0 14 
Osama Alassiry 
STORED 
get name 
VALUE name 0 14 
Osama Alassiry 
END 
quit 

的memcached允許你存儲多達每緩存鍵1MB,我(Person | 17 | name','Person | 17 | picture','Employee | 7 | Salary | Basic')(這些虛構名稱與我真正做的無關)......我已經存儲了一些二進制文件在緩存中作爲base64允許使用多達768k的二進制數據。

通過對密鑰進行散列處理並根據散列值選擇多個服務器中的一個,memcached也可以分佈在多個服務器上。

+1

+1,我認爲這是很好的建議。 memcached是一個穩定且優化的解決方案,不僅適用於Linux,而且適用於Windows和Mac OS X。如果在協議層面上做這件事太困難了,那麼客戶端庫(如libmemcached)可以被Delphi程序用作DLL。 – mghie 2009-05-04 20:38:48

1

緩存機制需要手動滾動。

Splay Trees是一種用於存儲緩存對象的有用且直接的機制,還可以檢測它們的陳舊程度。

1

這些框架提供緩存的一些方式對象

根據您的具體要求,這可能是在上面。如果您嘗試實施您自己的解決方案,我建議您看看Jedi VCL中的各種容器作爲起點。

+0

這些框架可能是已經在使用上面的一個,但否則,當你正確地指出,可能是一個應用非常有用頂部一點點。 – jamiei 2009-05-04 12:14:54

+1

- kbmw,midware,這個列表是無止境的。 – 2009-05-06 10:11:24

1

如果你想建立你自己的,你可能想在Freepascal中做,因爲它有64位支持。我建議使用k-ary,而不是二叉樹。

1

好的。我可能會對此感到愚蠢,但是TStringList有什麼問題?我一直在使用一個帶有TStringList的相當結構化數據的動態數組來查找基於字符串ID的元素。最近,我將TStringList更新爲THashedStringList。它可能會快一點,但沒有什麼真正的顯着。到目前爲止,StringList/Array排列在我的應用程序中提供了很好的性能。

到目前爲止,我只緩存了100到150條記錄,但我預計它可以正常工作到可能有幾千條。在我所從事的業務中,這是一個相當大的業務。