Redis安装部署
PS:redis是一个性能非常优秀的内存数据库,通过key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
-
redis官网
-
一、redis服务器设置规划
#软件安装包存储: /usr/local/src #redis安装目录列表: /usr/local/redis # /usr/local/redis/conf #配置目录 /usr/local/redis/logs #日志目录 /usr/local/redis/data #数据库存放目录 命令:mkdir /usr/local/redis;mkdir /usr/local/redis/{conf,data,logs} 为方便查找目录,设置变量 # vi .bashrc alias worksrc='cd /usr/local/src' alias workredis='cd /usr/local/redis' #redis启动 alias serredis='service redisd_6379' 配置生效 # source .bashrc
加入开机启动
# vim /etc/rc.d/rc.local #redis启动 service redis start
-
安装需要的支持环境
在安装Redis之前首要先做的是安装Unix的Tcl工具,如果不安装的话后期将无法对Redis进行测试。在后期执行make test的时候返回如下错误信息:You need tcl 8.xuyao de5 or newer in order to run the Redis test
#依赖包gcc-c++ yum install gcc-c++; #依赖tcl cd /usr/local/src; wget http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz; tar -zxvf tcl8.6.3-src.tar.gz; cd tcl8.6.3/unix/; ./configure; make && make install; #命令汇总: yum install gcc-c++;cd /usr/local/src;wget http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz;tar -zxvf tcl8.6.3-src.tar.gz;cd tcl8.6.3/unix/;./configure;make && make install;
-
源码安装
cd /usr/local/src/; #源码下载,解压 wget http://download.redis.io/releases/redis-3.0.1.tar.gz; tar xzf redis-3.0.1.tar.gz; cd redis-3.0.1; #安装到指定目录中 make PREFIX=/usr/local/redis install; #命令汇总: cd /usr/local/src/;wget http://download.redis.io/releases/redis-3.0.1.tar.gz;tar -zxvf redis-3.0.1.tar.gz;cd redis-3.0.1;make PREFIX=/usr/local/redis install;
注意上面的最后一行,我们通过PREFIX指定了安装的目录。
安装完成后,会/usr/local/redis/bin/目录下生成5个可执行文件ls /usr/local/redis/bin/; redis-server #Redis服务器的daemon启动程序 redis-cli #Redis命令行操作工具。 redis-benchmark #Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能 redis-check-dump #检查file.rdb文件 redis-check-aof #检查file.aof文件
-
复制并配置redis
#复制配置(为了单台方便增加多个redis实例,配置名以当前实例的port为标记) cp /usr/local/src/redis-3.0.1/redis.conf /usr/local/redis/conf/6379.conf; #配置redis vim /usr/local/redis/conf/6379.conf; daemonize yes port 6379 timeout 300 pidfile /usr/local/redis/redis_6379.pid #(pid名以port为标记) loglevel notice logfile /usr/local/redis/logs/redis_6379.log #(logfile名以port为标记) dbfilename dump_6379.rdb #(dbfilename名以port为标记) dir /usr/local/redis/data
配置参数说明
#redis 以后台进程运行,默认为NO daemonize yes #后台程序运行设置PID pidfile /usr/local/redis/redis.pid #redis服务绑定的主机IP bind 127.0.0.1 #redis监听的端口,默认为6379 port 6379 #客户端连接超时时间,默认为300秒 timeout 600 #---日志设置--- loglevel notice #级别,分为debug,verbose(default),notice,waring logfile /usr/local/redis/logs/redis.log #日志文件存放位置,默认为stdout #---数据库设置--- databases 16 #可用数据库数,默认为16 requirepass 123456 #设置redis数据库连接密码 dbfilename dump.rdb #数据库名 dir /usr/local/redis/data #设置本地数据库存放路径 #保存数据库快照频率,在一定时间内执行一定数量的写操作时,自动保存快照 save 900 1 #900秒内至少有一个key被改变 save 300 10 #300秒内至少有十个key被改变 save 60 10000 #60秒内只要有一万个key被改变 rdbcompression yes #存储到本地数据库是否压缩,默认为yes maxclients 128 #客户端最大连接数,默认不限制 #---数据日志记录--- appendonly yes #开启日志记录 appendfilename appendonly.aof #更新日志文件名 appendfsync everysec #always、no、everysec(每秒执行同步) no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb slowlog-log-slower-than 10000 slowlog-max-len 1024 really-use-vm yes #---虚拟内存设置--- vm-enabled yes #是否使用虚拟内存,默认为no vm-swap-file /tmp/redis.swap #虚拟内存文件路径,默认/tmp/redis.swap vm-max-memory 0 #默认值为零,所有的values存储在磁盘 vm-page-size 32 #虚拟内存文件以块存储,每块32bytes vm-pages 134217728 #虚拟内存文件的最大数 vm-max-threads 4 #设置访问swap文件的线程数 #指定在超过一定数量或者最大元素超过某一临界时,采用一种特殊的哈希算法 hash-max-zipmap-entries 512 hash-max-zipmap-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 #是否重置Hash表 activerehashing yes
-
启动脚本
redis自带启动脚本
/usr/local/src/redis-3.0.1/utils/redis_init_script#(为了单台方便增加多个redis实例,脚本名以当前实例的port为标记) cp /usr/local/src/redis-3.0.1/utils/redis_init_script /usr/local/redis/redisd_6379 vim /usr/local/redis/redisd_6379 #依据实际情况改变相应配置 #!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. REDISPORT=6379 #当前实例的port EXEC=/usr/local/redis/bin/redis-server CLIEXEC=/usr/local/redis/bin/redis-cli PIDFILE=/usr/local/redis/redis_${REDISPORT}.pid CONF="/usr/local/redis/conf/${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
#启动或关闭服务 chmod +x /usr/local/redis/redisd_6379; ln -f -s /usr/local/redis/redisd_6379 /etc/init.d/redisd_6379; service redisd_6379 start
-
查看启动
[root@local conf]# netstat -tunlp | grep redis tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 13672/redis-server tcp 0 0 :::6379 :::* LISTEN 13672/redis-server [root@local conf]# ps -ef | grep redis root 13672 1 0 19:23 ? 00:00:00 /usr/local/redis/bin/redis-server *:6379