: Servicestack.googlecode.com/files/redis-2.0.2.zip
After the download, decompress it to your disk, my is F: \ redis-2.0.2
You also need to add the redis configuration file redis. conf in the redis root directory. the specific content of the file is:
# Redis configuration file example# By default Redis does not run as a daemon. Use 'yes' if you need it.# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.daemonize no# When run as a daemon, Redis write a pid file in /var/run/redis.pid by default.# You can specify a custom pid file location here.pidfile /var/run/redis.pid# Accept connections on the specified port, default is 6379port 6379# If you want you can bind a single interface, if the bind option is not# specified all the interfaces will listen for connections.## bind 127.0.0.1# Close the connection after a client is idle for N seconds (0 to disable)timeout 300# Set server verbosity to 'debug'# it can be one of:# debug (a lot of information, useful for development/testing)# notice (moderately verbose, what you want in production probably)# warning (only very important / critical messages are logged)loglevel debug# Specify the log file name. Also 'stdout' can be used to force# the demon to log on the standard output. Note that if you use standard# output for logging but daemonize, logs will be sent to /dev/nulllogfile stdout# Set the number of databases. The default database is DB 0, you can select# a different one on a per-connection basis using SELECT <dbid> where# dbid is a number between 0 and 'databases'-1databases 16################################ SNAPSHOTTING ################################### Save the DB on disk:## save <seconds> <changes>## Will save the DB if both the given number of seconds and the given# number of write operations against the DB occurred.## In the example below the behaviour will be to save:# after 900 sec (15 min) if at least 1 key changed# after 300 sec (5 min) if at least 10 keys changed# after 60 sec if at least 10000 keys changedsave 900 1save 300 10save 60 10000# Compress string objects using LZF when dump .rdb databases?# For default that's set to 'yes' as it's almost always a win.# If you want to save some CPU in the saving child set it to 'no' but# the dataset will likely be bigger if you have compressible values or keys.rdbcompression yes# The filename where to dump the DBdbfilename dump.rdb# For default save/load DB in/from the working directory# Note that you must specify a directory not a file name.dir ./################################# REPLICATION ################################## Master-Slave replication. Use slaveof to make a Redis instance a copy of# another Redis server. Note that the configuration is local to the slave# so for example it is possible to configure the slave to save the DB with a# different interval, or to listen to another port, and so on.## slaveof <masterip> <masterport># If the master is password protected (using the "requirepass" configuration# directive below) it is possible to tell the slave to authenticate before# starting the replication synchronization process, otherwise the master will# refuse the slave request.## masterauth <master-password>################################## SECURITY #################################### Require clients to issue AUTH <PASSWORD> before processing any other# commands. This might be useful in environments in which you do not trust# others with access to the host running redis-server.## This should stay commented out for backward compatibility and because most# people do not need auth (e.g. they run their own servers).## requirepass foobared################################### LIMITS ##################################### Set the max number of connected clients at the same time. By default there# is no limit, and it's up to the number of file descriptors the Redis process# is able to open. The special value '0' means no limts.# Once the limit is reached Redis will close all the new connections sending# an error 'max number of clients reached'.## maxclients 128# Don't use more memory than the specified amount of bytes.# When the memory limit is reached Redis will try to remove keys with an# EXPIRE set. It will try to start freeing keys that are going to expire# in little time and preserve keys with a longer time to live.# Redis will also try to remove objects from free lists if possible.## If all this fails, Redis will start to reply with errors to commands# that will use more memory, like SET, LPUSH, and so on, and will continue# to reply to most read-only commands like GET.## WARNING: maxmemory can be a good idea mainly if you want to use Redis as a# 'state' server or cache, not as a real DB. When Redis is used as a real# database the memory usage will grow over the weeks, it will be obvious if# it is going to use too much memory in the long run, and you'll have the time# to upgrade. With maxmemory after the limit is reached you'll start to get# errors for write operations, and this may even lead to DB inconsistency.## maxmemory <bytes>############################## APPEND ONLY MODE ################################ By default Redis asynchronously dumps the dataset on disk. If you can live# with the idea that the latest records will be lost if something like a crash# happens this is the preferred way to run Redis. If instead you care a lot# about your data and don't want to that a single record can get lost you should# enable the append only mode: when this mode is enabled Redis will append# every write operation received in the file appendonly.log. This file will# be read on startup in order to rebuild the full dataset in memory.## Note that you can have both the async dumps and the append only file if you# like (you have to comment the "save" statements above to disable the dumps).# Still if append only mode is enabled Redis will load the data from the# log file at startup ignoring the dump.rdb file.## The name of the append only file is "appendonly.log"## IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append# log file in background when it gets too big.appendonly yes# The fsync() call tells the Operating System to actually write data on disk# instead to wait for more data in the output buffer. Some OS will really flush# data on disk, some other OS will just try to do it ASAP.## Redis supports three different modes:## no: don't fsync, just let the OS flush the data when it wants. Faster.# always: fsync after every write to the append only log . Slow, Safest.# everysec: fsync only if one second passed since the last fsync. Compromise.## The default is "always" that's the safer of the options. It's up to you to# understand if you can relax this to "everysec" that will fsync every second# or to "no" that will let the operating system flush the output buffer when# it want, for better performances (but if you can live with the idea of# some data loss consider the default persistence mode that's snapshotting).appendfsync always# appendfsync everysec# appendfsync no############################### ADVANCED CONFIG ################################ Glue small output buffers together in order to send small replies in a# single TCP packet. Uses a bit more CPU but most of the times it is a win# in terms of number of queries per second. Use 'yes' if unsure.glueoutputbuf yes# Use object sharing. Can save a lot of memory if you have many common# string in your dataset, but performs lookups against the shared objects# pool so it uses more CPU and can be a bit slower. Usually it's a good# idea.## When object sharing is enabled (shareobjects yes) you can use# shareobjectspoolsize to control the size of the pool used in order to try# object sharing. A bigger pool size will lead to better sharing capabilities.# In general you want this value to be at least the double of the number of# very common strings you have in your dataset.## WARNING: object sharing is experimental, don't enable this feature# in production before of Redis 1.0-stable. Still please try this feature in# your development environment so that we can test it better.# shareobjects no# shareobjectspoolsize 1024
Start redis
Open the running window
F: \> Cd redis-2.0.2
F: \ redis-2.0.2> redis-server.exe redis. conf
[2944] 15 jun 22:44:29 * server started, redis version 2.0.2
[2944] 15 jun 22:44:29 * dB loaded from append only file: 0 seconds
[2944] 15 jun 22:44:29 * the server is now ready to accept connections on port
379
[1, 2944] 15 jun 22:44:30-db 0: 1 keys (0 volatile) in 4 slots ht.
[2944] 15 jun 22:44:30-0 clients connected (0 slaves), 450888 bytes in use
Open a window and run the client
F: \ redis-2.0.2> redis-cli.exe
Redis>
Set Value:
Redis> set ajun
Reconnecting... OK
OK
Valid value:
Redis> Get ajun
"Ajun"
Stop redis Service
Redis> Shutdown
If you need redis persistent data, you need to configure redis log to enable
Logs are recorded after each update operation. If it is not enabled, data may be lost for a period of time during power failure. Because redis synchronizes data files according to the Save conditions above, some data will only exist in the memory for a period of time. The default value is no.
Modify or add
Appendonly Yes
Update the log file name. The default value is appendonly. Aof.
# Update log conditions. There are three optional values. "No" indicates that data is cached and synchronized to the disk by the operating system. "Always" indicates that data is manually written to the disk by calling fsync () after each update operation. "everysec" indicates that data is synchronized once per second (default ).
# Appendfsync always
Appendfsync everysec
# Appendfsync No
Shut down the redis service and restart it.
F: \ redis-2.0.2> redis-server.exe redis. conf
[2944] 15 jun 22:44:29 * server started, redis version 2.0.2
[2944] 15 jun 22:44:29 * dB loaded from append only file: 0 seconds
[2944] 15 jun 22:44:29 * the server is now ready to accept connections on port
379
[1, 2944] 15 jun 22:44:30-db 0: 1 keys (0 volatile) in 4 slots ht.
[2944] 15 jun 22:44:30-0 clients connected (0 slaves), 450888 bytes in use
At this time, the redis root directory will generate an appendonly. aof file to record the log.
Reconnect on the client
F: \ redis-2.0.2> redis-cli.exe
Redis> set ajun Wahaha
Then in the shutdown redis Service
Check that appendonly. aof is 1 K
Restart the redis service.
F: \ redis-2.0.2> redis-server.exe redis. conf
[2944] 15 jun 22:44:29 * server started, redis version 2.0.2
[2944] 15 jun 22:44:29 * dB loaded from append only file: 0 seconds
[2944] 15 jun 22:44:29 * the server is now ready to accept connections on port
379
[1, 2944] 15 jun 22:44:30-db 0: 1 keys (0 volatile) in 4 slots ht.
[2944] 15 jun 22:44:30-0 clients connected (0 slaves), 450888 bytes in use
Restart the client
F: \ redis-2.0.2> redis-cli.exe
Redis> Get ajun
"Wahaha"
The value is still present, indicating that it has been persisted.
Operations on Linux are similar.
For details about reids. conf parameter configuration, refer to the parameter annotations in the official configuration file.
1. redis. conf configuration parameters:
# Running as a daemon
Daemonize Yes
# If a later process runs, you must specify a PID. The default value is/var/run/redis. PID.
Pidfile redis. PID
# Bind the Host IP address. The default value is 127.0.0.1.
# Bind 127.0.0.1
# Redis default listening port
Port 6379
# How many seconds after the client is idle, disconnect. The default value is 300 (seconds)
Timeout 300
# Log record level, with four optional values: Debug, verbose (default), notice, and warning
Loglevel verbose
# Specify the log output file name. The default value is stdout. You can also set it to/dev/null to shield logs.
Logfile stdout
# Number of available databases; default value: 16; default value: 0
Databases 16
# Policy for saving data to disk
# If one of the keys data is changed, it will be refreshed to disk once every 900 seconds.
Save 900 1
# When 10 keys data items are changed, refresh them to disk once every 300 seconds
Save 300 10
# When pieces of keys data are changed, refresh to disk once every 60 seconds
Save 60 10000
# Whether to compress data objects when dump. RDB Databases
Rdbcompression Yes
# Local database file name, default value: dump. RDB
Dbfilename dump. RDB
# Local database storage path. The default value is ./
DIR/usr/local/redis/var/
########### Replication #####################
# Redis replication Configuration
# Slaveof <masterip> <masterport> when the local machine is a slave service, set the master service IP address and port
# Masterauth <master-Password> when the local machine is a slave service, set the master service connection password
# Connection password
# Requirepass foobared
# Maximum number of client connections, unlimited by default
# Maxclients 128
# Maximum memory usage settings. When the maximum memory is reached, redis will first try to clear expired or expiring keys. After this method is processed, any key that has reached the maximum memory settings will be cleared, no more write operations can be performed.
# Maxmemory <bytes>
# Whether to record logs after each update operation. If not enabled, data may be lost for a period of time during power failure. Because redis synchronizes data files according to the Save conditions above, some data will only exist in the memory for a period of time. The default value is no.
Appendonly No
# Update the log file name. The default value is appendonly. Aof.
# Appendfilename
# Update log conditions. There are three optional values. "No" indicates that data is cached and synchronized to the disk by the operating system. "Always" indicates that data is manually written to the disk by calling fsync () after each update operation. "everysec" indicates that data is synchronized once per second (default ).
# Appendfsync always
Appendfsync everysec
# Appendfsync No
############### Virtual memory ###########
# Whether to enable the VM function. The default value is no.
VM-enabled No
# VM-enabled Yes
# Virtual memory file path. The default value is/tmp/redis. Swap. It cannot be shared by multiple redis instances.
VM-Swap-file logs/redis. Swap
# Store all data greater than VM-max-memory into the virtual memory. No matter how small the VM-max-memory settings are, all the index data is stored in the memory (redis's index data is keys ), that is to say, when VM-max-memory is set to 0, all values exist on the disk. The default value is 0.
VM-max-memory 0
VM-page-size 32
VM-pages 134217728
VM-max-threads 4
############ Advanced config ###############
Glueoutputbuf Yes
Hash-max-zipmap-entries 64
Hash-max-zipmap-value 512
# Whether to reset the hash table
Activerehashing Yes
Note: The official redis documentation provides some suggestions on VM usage:
** When your key is small and the value is large, Vm usage will be better, because the memory saved is relatively large.
** When your key is not hour, you can consider using some very methods to convert a large key into a large value. For example, you can consider changing the key, value is combined into a new value.
** It is best to use Linux ext3 and other file systems that support sparse files to save your swap files.
** The VM-max-threads parameter can be used to set the number of threads accessing the swap file. It is recommended that the number of threads accessing the swap file not exceed the number of machine cores. if it is set to 0, all operations on swap files are serial. it may cause a long delay, but it guarantees data integrity.