Are there any Caching Frameworks for Delphi?

后端 未结 6 913
孤城傲影
孤城傲影 2021-01-06 02:25

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

相关标签:
6条回答
  • 2021-01-06 02:36

    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.

    0 讨论(0)
  • 2021-01-06 02:44

    A Delphi client for Memcached can be found on google code:

    http://code.google.com/p/delphimemcache/

    0 讨论(0)
  • 2021-01-06 02:44

    These frameworks provide some way of caching objects

    • Enterprise Core Objects
    • RemObjects
    • DevExpress Persistent 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.

    0 讨论(0)
  • 2021-01-06 02:48

    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.

    0 讨论(0)
  • 2021-01-06 02:53

    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.

    0 讨论(0)
  • 2021-01-06 02:54

    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.

    0 讨论(0)
提交回复
热议问题