Proposal: new caching backend for nginx
valyala at gmail.com
Tue Jan 22 16:15:08 UTC 2013
I'm the author of ybc - fast in-process key-value caching library -
https://github.com/valyala/ybc . This library has the following features,
which may be essential to nginx:
- compact source code written in C;
- optimized for speed. Avoids using syscalls, dynamic memory allocations
and memory copying in hot paths;
- has no external dependencies;
- cross-platform design - all platform-specific code is located in one
place - https://github.com/valyala/ybc/tree/master/platform . Currently
only linux is supported, but other platforms can be easily added by
implementing the corresponding platform-specific functions;
- designed for efficient caching of millions big objects on both SSDs and
HDDs. Easily deals with huge caches exceeding available RAM by multiple
orders of magnitude.
- persists cached objects across application restarts.
- provides functionality similar to proxy_cache_lock and
http://nginx.org/en/docs/http/ngx_http_proxy_module.html out of the box.
- unlike nginx's file-based cache, is free of additional "cache manager"
- unlike nginx's file-based cache, never exceeds maximum cache size set at
- unlike nginx's file-based cache, stores all cached data in two files -
one file is used for index, while the other file is used for cached data.
These files aren't vulnerable to fragmentation, since their sizes never
change after the application start.
Other ybc features can be found at
ybc API is located at https://github.com/valyala/ybc/blob/master/ybc.h .
It would be great if somebody familiar with nginx internals, who is
interested in faster and cleaner caching backend for nginx could help me
substituting file-based backend with ybc.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the nginx-devel