zoukankan      html  css  js  c++  java
  • jmemcached

    jmemcache-daemon - An implementation of the memcached server running on the Java environment - Google Project Hosting

    jmemcached

    This is a Java implementation of the daemon (server) side of the memcached protocol.

    Memcache is a network accessible key/value storage system, often used as a distributed cache.

    Jmemcached is functionally equivalent in most respects to (native code) memcached, but is written in pure Java, and is thus suitable for:

    • Portable or Java-only distributions of applications
    • Embedding inside applications
    • Integration testing

    What would I use it for?

    A distributed client/server style cache. Some people use memcached to reduce load on their database. Some people just use it to share data across a cluster. It's simple and common. It's a good general purpose network available cache to compliment any network available service.

    Tell me more details...

    Ok.

    • It is implemented in, and requires at least Java 5.
    • It is protocol compatible with the C version of memcached. Existing clients, including the ones for Java (1 & 2), should work without modification. Replacing the Java version with the C version (and vice versa) is trivial.
    • Jmemcached supports both the ASCII and binary memcache protocols.
    • It can be embedded in your existing Java project. (For example hosted by a web application or by an OSGI bundle.)
    • ... or it can be used from the command line interface, with commands roughly switch compatible with the C version.
    • ... or it can be configured using your favourite dependency injection framework (like Spring, PicoContainer, etc.)
    • It uses JBoss Netty for non-blocking, scalable (Java NIO) network I/O.
    • While it is slower than the C version, it is still quite fast and suitable for most applications.
    • The cache portion of the project can be used independently of the daemon so that local process users can have quick low-overhead access to the cache while maintaining the client-server relationship for external clients.
    • The storage for the cache is abstracted so it should be possible to replace it with other cache implementations (such as OSCache, EHCache, etc.) if that is appropriate.
    • Cache storage can be handled either by the Java (garbage collected) heap, or, if more storage is required, in a separate memory-mapped file.

    How do I use it?

    There are two ways; programmatically (embedded inside your application) or using the command-line (CLI) interface.

    For programmatic example, here's a snippet from the source for the main class for the CLI:

            // create daemon and start it
           
    final MemCacheDaemon<LocalCacheElement> daemon = new MemCacheDaemon<LocalCacheElement>();

           
    CacheStorage<Key, LocalCacheElement> storage = ConcurrentLinkedHashMap.create(ConcurrentLinkedHashMap.EvictionPolicy.FIFO, maxItems, maxBytes);
            daemon
    .setCache(new CacheImpl(storage));
            daemon
    .setBinary(binary);
            daemon
    .setAddr(addr);
            daemon
    .setIdleTime(idle);
            daemon
    .setVerbose(verbose);
            daemon
    .start();

    To use ''jmemcached'' from the command line, just run Java against the cli "-with-dependendencies" JAR.

    The CLI accepts the following options:

     -b,--binary              binary protocol mode
     
    -bs,--block-size <arg>   block size (in bytes) for external memory mapped
                              file allocator
    .  default is 8 bytes
     
    -c,--ceiling <arg>       ceiling memory to use; in bytes, specify K, kb,
                              M
    , GB for larger units
     
    -f,--mapped-file <arg>   use external (from JVM) heap through a memory
                              mapped file
     
    -h,--help                print this help screen
     
    -i,--idle <arg>          disconnect after idle <x> seconds
     
    -l,--listen <arg>        Address to listen on
     
    -m,--memory <arg>        max memory to use; in bytes, specify K, kb, M,
                              GB
    for larger units
     
    -p,--port <arg>          port to listen on
     
    -s,--size <arg>          max items
     
    -v                       verbose (show commands)
     
    -V                       Show version number

    How can I get it?

    To make use of jmemcached in your project, the easiest way is to use Maven 2. jmemcached artifacts are available in Maven 2 central.

    And then add the dependency:

        <dependency>
           
    <groupId>com.thimbleware.jmemcached</groupId>
           
    <artifactId>jmemcached-core</artifactId>
           
    <version>1.0.0</version>
       
    </dependency>

    If you are not using Maven, you can retrieve the compiled JARs directly via HTTP from the Maven 2 central repository at http://repo2.maven.org/maven2/com/thimbleware/jmemcached/

    Debian/Ubuntu packages are also available in the repository in the jmemcached-cli

    What's next?

    Missing features (when compared against the native C version):

    • delayed 'flush_all'
    • UDP protocol

    Thanks to...

    YourKit is kindly supporting open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.

  • 相关阅读:
    cocos2d-x 2.2 移植wp8遇到的坑
    程序员简单却激荡的一年
    关于manacher
    关于Tarjan
    洛谷 P4013 数字梯形问题
    洛谷 P2633 Count on a tree
    洛谷 P1709 隐藏口令Hidden Password
    洛谷 P3112 后卫马克Guard Mark
    洛谷 P1174 打砖块
    洛谷1903 数颜色
  • 原文地址:https://www.cnblogs.com/lexus/p/2363993.html
Copyright © 2011-2022 走看看