update
This commit is contained in:
@@ -1,54 +1,44 @@
|
|||||||
|
|
||||||
# Memcached
|
# Introduction
|
||||||
|
|
||||||
Memcached is a high performance multithreaded event-based key/value cache
|
**Before beginning:** Read this [lab tutorial](http://pages.cs.wisc.edu/~remzi/OSTEP/lab-tutorial.pdf); it has some useful tips for programming in the C environment.
|
||||||
store intended to be used in a distributed system.
|
|
||||||
|
|
||||||
See: https://memcached.org/about
|
This project is a warm-up for operating systems class. It serves to get you into the mindset of a C programmer, something you will become quite familiar with over the next few months. It also gets you familliar with poking around large code bases, which is useful post-school. Finally, it's fun!
|
||||||
|
|
||||||
A fun story explaining usage: https://memcached.org/tutorial
|
The basic idea is to work with [memcached](https://memcached.org/), a widely-used networked caching system. Many distributed services in the world are built on top of it.
|
||||||
|
|
||||||
If you're having trouble, try the wiki: https://memcached.org/wiki
|
You'll be adding a small feature to `memcached` for this project. Read below for details!
|
||||||
|
|
||||||
If you're trying to troubleshoot odd behavior or timeouts, see:
|
# Background
|
||||||
https://memcached.org/timeouts
|
|
||||||
|
|
||||||
https://memcached.org/ is a good resource in general. Please use the mailing
|
|
||||||
list to ask questions, github issues aren't seen by everyone!
|
|
||||||
|
|
||||||
## Dependencies
|
|
||||||
|
|
||||||
* libevent - https://www.monkey.org/~provos/libevent/ (libevent-dev)
|
|
||||||
* libseccomp (optional, experimental, linux) - enables process restrictions for
|
|
||||||
better security. Tested only on x86-64 architectures.
|
|
||||||
* openssl (optional) - enables TLS support. need relatively up to date
|
|
||||||
version. pkg-config is needed to find openssl dependencies (such as -lz).
|
|
||||||
|
|
||||||
## Environment
|
|
||||||
|
|
||||||
Be warned that the -k (mlockall) option to memcached might be
|
|
||||||
dangerous when using a large cache. Just make sure the memcached machines
|
|
||||||
don't swap. memcached does non-blocking network I/O, but not disk. (it
|
|
||||||
should never go to disk, or you've lost the whole point of it)
|
|
||||||
|
|
||||||
## Build status
|
# Feature
|
||||||
|
|
||||||
See https://build.memcached.org/ for multi-platform regression testing status.
|
|
||||||
|
|
||||||
## Bug reports
|
## Tips
|
||||||
|
|
||||||
Feel free to use the issue tracker on github.
|
Here are some tips:
|
||||||
|
|
||||||
**If you are reporting a security bug** please contact a maintainer privately.
|
- **Start small, and get things working incrementally.**
|
||||||
We follow responsible disclosure: we handle reports privately, prepare a
|
|
||||||
patch, allow notifications to vendor lists. Then we push a fix release and your
|
|
||||||
bug can be posted publicly with credit in our release notes and commit
|
|
||||||
history.
|
|
||||||
|
|
||||||
## Website
|
- **Testing is critical.** A great programmer we once knew said you have to
|
||||||
|
write five to ten lines of test code for every line of code you produce;
|
||||||
|
testing your code to make sure it works is crucial. Write tests to see if your
|
||||||
|
code handles all the cases you think it should. Be as comprehensive as you can
|
||||||
|
be. Of course, when grading your projects, we will be. Thus, it is better if
|
||||||
|
you find your bugs first, before we do.
|
||||||
|
|
||||||
* https://www.memcached.org
|
- **Keep old versions around.** Keep copies of older versions of your
|
||||||
|
program around, as you may introduce bugs and not be able to easily
|
||||||
|
undo them. A simple way to do this is to keep copies around, by
|
||||||
|
explicitly making copies of the file at various points during
|
||||||
|
development. For example, let's say you get a simple version of `kv.c`
|
||||||
|
working (say, that just reads in the file); type `cp kv.c kv.v1.c` to
|
||||||
|
make a copy into the file `kv.v1.c`. More sophisticated
|
||||||
|
developers use version control systems such as git; such a tool is
|
||||||
|
well worth learning, so do it!
|
||||||
|
|
||||||
## Contributing
|
|
||||||
|
|
||||||
See https://github.com/memcached/memcached/wiki/DevelopmentRepos
|
|
||||||
|
|||||||
Reference in New Issue
Block a user