類型 | MC | redis |
---|---|---|
相同的數據模型 | 保存的熱數據量比redis高,13G內存下能保存1億條數據 | 保存8000w條 |
相同的服務器環境寫性能 | 寫性能比redis高,約10W條每秒 | 約7W條每秒 |
相同的服務器環境讀性能 | 約10W條每秒 | 約8W條每秒 |
達到內存上限的處理 | 插入性能在臨界點有些抖動,而後將到約7W條每秒,以後性能跟臨界點以前同樣 | |
達到內存上限的性能 | 讀性能並無變化 | 性能急劇降低,1100條每秒,以後受子進程dump數據競爭系統資源影響而很是不穩定性能急劇降低,以後受子進程dump數據和每秒產生大量頁面錯誤影響而持續降低 |
單個CPU百分比 | 內存上限臨界點約300%,其餘穩定在150%左右 | 內存上限臨界前90%左右,以後受子進程dump數據和每秒產生大量頁面錯誤影響,CPU使用率不高,甚至降到1% |
CPU利用率 | 單實例 | 單線程運行,只能用一顆CPU,單主機多實例 |
內存佔用 | 都隨着寫入數據的增多而增大,達到內存上限後再也不變化 | 受子進程dump數據競爭而持續降低 |
頁面錯誤 | 純內存操做,不產生頁面錯誤 | 達到內存上限後,須要將數據轉儲虛擬內存,受子進程dump數據競爭系統資源影響產生大量頁面錯誤 |
IO操做 | 純內存操做 | insert時,達到內存上線前沒有明顯IO讀操做,有明顯IO寫操做,由於快照,達到內存上線後,有明顯磁盤IO讀操做,寫操做反而不明顯 |
wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar -zxvf redis-4.0.8.tar.gz cd redis-4.0.8 make && make install
/usr/local/bin
會生成以下文件-rwxr-xr-x. 1 root root 5.5M Mar 29 10:55 redis-server -rwxr-xr-x. 1 root root 2.4M Mar 29 10:55 redis-benchmark -rwxr-xr-x. 1 root root 2.5M Mar 29 10:55 redis-cli -rwxr-xr-x. 1 root root 5.5M Mar 29 10:55 redis-check-rdb -rwxr-xr-x. 1 root root 5.5M Mar 29 10:55 redis-check-aof lrwxrwxrwx. 1 root root 12 Mar 29 10:55 redis-sentinel -> redis-server
也能夠安裝到指定目錄
make install PREFIX=/usr/local/redis
php
mkdir -p /usr/local/redis/etc cp /root/redis-4.0.8/*.conf /usr/local/redis/etc
vi /usr/local/redis/etc/redis.conf #bind 127.0.0.1 requirepass foobared daemonize yes #protected-mode yes dir /usr/local/redis/work #slaveof 172.16.3.140 6379 # master不須要設置slaveof,只有slave才須要
cp /root/redis-4.0.8/utils/redis_init_script /etc/init.d/redis touch /etc/init.d/redis chmod u+x /etc/init.d/redis vi /etc/init.d/redis #!/bin/sh # # redis Startup script for Redis Server # # chkconfig: - 80 12 # description: Redis is an open source, advanced key-value store. # # processname: redis-server # config: /etc/redis.conf # pidfile: /var/run/redis.pid source /etc/init.d/functions BIN="/usr/local/redis/bin" CONFIG="/usr/local/redis/etc/redis.conf" PIDFILE="/var/run/redis.pid" ### Read configuration [ -r "$SYSCONFIG" ] && source "$SYSCONFIG" RETVAL=0 prog="redis-server" desc="Redis Server" start() { if [ -e $PIDFILE ];then echo "$desc already running...." exit 1 fi echo -n $"Starting $desc: " daemon $BIN/$prog $CONFIG RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Stop $desc: " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE return $RETVAL } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; condrestart) [ -e /var/lock/subsys/$prog ] && restart RETVAL=$? ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|status}" RETVAL=1 esac exit $RETVAL
/etc/init.d/redis start [root@haproxy02 init.d]# redis-cli -h 172.16.3.141 -p 6379 -a foobared 172.16.3.141:6379>
src/redis-server # 默認前臺啓動 # 默認不適用配置文件
src/redis-server & # 不要用 參數文件 daemonize yes
root@haproxy02 bin]# ./redis-server --help Usage: ./redis-server [/path/to/redis.conf] [options] ./redis-server - (read config from stdin) ./redis-server -v or --version ./redis-server -h or --help ./redis-server --test-memory <megabytes> # Examples: ./redis-server (run the server with default conf) ./redis-server /etc/redis/6379.conf ./redis-server --port 7777 ./redis-server --port 7777 --slaveof 127.0.0.1 8888 ./redis-server /etc/myredis.conf --loglevel verbose # Sentinel mode: ./redis-server /etc/sentinel.conf --sentinel
cp /root/redis-4.0.8/redis.conf /usr/local/redis/etc/redis_6379.conf
[root@haproxy02 utils]# pwd /root/redis-4.0.8/utils [root@haproxy02 utils]# cat redis_init_script #!/bin/sh # chkconfig: 2345 90 10 # 增長項,linux啓動級別2345,啓動優先級90,關閉優先級10 # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. # REDISPORT=6379 #EXEC=/usr/local/bin/redis-server EXEC=/usr/local/redis/bin/redis-server # 修改項 #CLIEXEC=/usr/local/bin/redis-cli CLIEXEC=/usr/local/redis/bin/redis-cli # 修改項 # PIDFILE=/var/run/redis_${REDISPORT}.pid # 配置與config文件裏的pidfile參數一致 CONF="/etc/redis/${REDISPORT}.conf" # 修改項 case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
redis-cli # 等於redis-cli -h 127.0.0.1 -p 6379
redis-cli -h 127.0.0.1 -p 6379 -a foobared