tango.net.util.MemCache
License:
BSD style:
Version:
Mar 2005: Initial release
author:
Kris
$(DDOC_MODULE_MEMBERS
class MemCache: core.thread.Thread;
$(DDOC_DECL_DD
$(DDOC_CLASS_MEMBERS
this(const(char[])[] hosts, uint watchdog = 3);
final void close();
final bool set(const(void)[][] key, const(void)[][] value, int flags = 0, int timeout = 0);
Store the key and value
final bool add(const(void)[][] key, const(void)[][] value, int flags = 0, int timeout = 0);
Store the value if key does not already exist
final bool replace(const(void)[][] key, const(void)[][] value, int flags = 0, int timeout = 0);
Store the value only if key exists
final bool remove(const(void)[][] key, int timeout = 0);
Remove the specified key and make key "invalid" for the
duration of timeout, causing add(), get() and remove() on
the same key to fail within that period
final bool get(const(void)[][] key, Buffer buffer);
VALUE \r\n
\r\n
final bool incr(const(void)[][] key, uint value);
final bool decr(const(void)[][] key, uint value);
final bool incr(const(void)[][] key, uint value, ref uint result);
final bool decr(const(void)[][] key, uint value, ref uint result);
final void status(void delegate(const(char)[], const(char[])[] list) dg);
final Buffer buffer(uint size);
final void setHosts(const(char[])[] hosts);
class Buffer;
- bool expand(size_t size);
- void[] set(size_t size);
- void[] get();
static uint jhash(const(void)[][] x, uint c = 0);
$(DDOC_DECL_DD $(DDOC_SECTIONS
jhash() -- hash a variable-length key into a 32-bit value
$(DDOC_DESCRIPTION k : the key (the unaligned variable-length array of bytes)
len : the length of the key, counting by bytes
level : can be any 4-byte value
Returns a 32-bit value. Every bit of the key affects every bit of
the return value. Every 1-bit and 2-bit delta achieves avalanche.
About 4.3*len + 80 X86 instructions, with excellent pipelining
The best hash table sizes are powers of 2. There is no need to do
mod a prime (mod is sooo slow!). If you need less than 32 bits,
use a bitmask. For example, if you need only 10 bits, do
h = (h & hashmask(10));
In which case, the hash table should have hashsize(10) elements.
If you are hashing n strings (ub1 **)k, do it like this:
for (i=0, h=0; i
By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use
this code any way you wish, private, educational, or commercial.
It's free.
See http://burlteburtle.net/bob/hash/evahash.html
Use for hash table lookup, or anything where one collision in 2^32
is acceptable. Do NOT use for cryptographic purposes.)
)
)
)
)
)
Page generated by Ddoc. Copyright (c) 2005 Kris Bell. All rights reserved