Question: What Caching Frameworks available for Delphi and how well developed are they? If there aren\'t any then is there a widely-accepted way of achievin
I have used memcached on Linux (there are versions on Windows and MacOS, as well as almost any other OS), It's quite simple.
I dealt with it directly, using indy's TIDTelnet, by reading the protocol's documentation, I only used set , get, delete, and quit.
I used this kind of commands (I set and get "name", 14 is the number of bytes to be stored):
osama@osama:~$ 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 allows you to store up to 1MB per cache key, I used composite keys like 'Person|17|name', 'Person|17|picture', 'Employee|7|Salary|Basic' (these are fictitious names unrelated to what I really did) ... I have stored some binary files in the cache as base64 which allows to use up to 768k of binary data.
memcached can also be distributed on several servers by hashing the keys, and selecting one of several servers based on they hash.
A Delphi client for Memcached can be found on google code:
http://code.google.com/p/delphimemcache/
These frameworks provide some way of caching objects
Depending on your exact requirements, these might be over the top. If you try to implement a solution of your own, I'd suggest you take a look at the various containers in the Jedi VCL as a starting point.
If you want to build your own, you probably want to do it in Freepascal, as that has working 64 bit support. Instead of binary splay trees, I'd suggest a k-ary.
Ok. I will probably end up feeling foolish about this, but what's the problem with the TStringList? I had been using a dynamic array of fairly structured data with a TStringList to find an element based on a string ID. Recently, I updated the TStringList to a THashedStringList. It may be a little faster, but nothing really remarkable yet. The StringList/Array arrangement has provided great performance on my application so far.
I have only been caching 100 to 150 records so far, but I expect it will work fine up to maybe a couple of thousand. In the business I am in, that is a pretty big operation.
The caching mechanism needs hand-rolling.
Splay Trees are a useful and straightforward mechanism for storing cached objects, and also detecting how stale they are.