Redis的安装和配置

Redis的启动停止

Redis安装配置完成后,启动过程非常简单,执行命令/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf即可。停止Redis的最简单的方法是在启动实例的session中,直接使用Control-C命令。当然还可以通过客户端来停止服务,如可以用shutdown来停止Redis实例,具体命令为src/redis-cli shutdown。

下面是一个Shell脚本(供参考),用于管理Redis(启动、停止、重启)。为其赋予可执行权限,即可像其他服务一样使用。

 #!/bin/sh    #    # redis - this script starts and stops the redis-server daemon    #    # chkconfig:   - 85 15    # description:  Redis is a persistent key-value database    # processname: redis-server    # config:      /usr/local/redis-2.4.X/bin/redis-server    # config:      /usr/local/ /redis-2.4.X/etc/redis.conf    # Source function library.    . /etc/rc.d/init.d/functions    # Source networking configuration.    . /etc/sysconfig/network    # Check that networking is up.    [ "$NETWORKING" = "no" ] && exit 0    redis="/usr/local/webserver/redis-2.4.X/bin/redis-server"   prog=$(basename $redis)    REDIS_CONF_FILE="/usr/local/webserver/redis-2.4.X/etc/redis.conf"   [ -f /etc/sysconfig/redis ] && . /etc/sysconfig/redis    lockfile=/var/lock/subsys/redis    start() {        [ -x $redis ] || exit 5        [ -f $REDIS_CONF_FILE ] || exit 6        echo -n $"Starting $prog: "        daemon $redis $REDIS_CONF_FILE        retval=$?        echo        [ $retval -eq 0 ] && touch $lockfile        return $retval    }    stop() {        echo -n $"Stopping $prog: "        killproc $prog -QUIT        retval=$?        echo        [ $retval -eq 0 ] && rm -f $lockfile        return $retval    }    restart() {        stop        start    }    reload() {        echo -n $"Reloading $prog: "        killproc $redis -HUP        RETVAL=$?        echo    }    force_reload() {        restart    }    rh_status() {        status $prog    }    rh_status_q() {        rh_status >/dev/null 2>&1    }    case "$1" in        start)            rh_status_q && exit 0            $1            ;;        stop)            rh_status_q || exit 0            $1            ;;        restart|configtest)            $1            ;;        reload)            rh_status_q || exit 7            $1            ;;        force-reload)            force_reload            ;;        status)            rh_status            ;;        condrestart|try-restart)            rh_status_q || exit 0        ;;        *)            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart| reload|orce-reload}"            exit 2    esac            

11.2.4  Redis的配置文件详解(1)

#daemonize:  
默认情况下,Redis不在后台运行,如果需要在后台运行Redis,需要把该项的值更改为yes。
#pidfile  
在后台运行的时候,Redis默认将pid文件放在/var/run/redis.pid中,也可以设置为其他地址。需要注意的是,当运行多个Redis服务时,需要指定不同的pid文件和端口。
#bind  
指定Redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项参数。
 #port  
Redis监听的端口,默认为6379。
 #timeout  
设置客户端连接时的超时时间,单位为秒。若客户端在这段时间内没有发出任何指令,那么就会关闭相应连接。
 #loglevel  

log等级分为4级:debug、verbose、notice和warning。生产环境中一般开启notice就足够应对大多状况。

 #logfile  
配置log文件的地址,默认使用标准输出,即打印在命令行终端的窗口上。
 #databases  
设置数据库的个数,可以使用SELECT命令来切换数据库。默认使用的数据库是0。
 #save  <seconds> <changes>  

设置Redis进行数据库备份的频率。指出在某时间内进行多少次更新操作,并将数据同步到数据文件rdb。相当于条件触发抓取快照,可以多条件配合设置。

save 900 1  900秒内至少有1个key被改变

save 300 10  300秒内至少有300个key被改变

save 60 10000  60秒内至少有10000个key被改变

这里只是写了一条,如果在86400秒之内有1个keys发生变化时就进行备份。如果没有特别的设定,就是一天一备份。

 #rdbcompression  
设置在进行镜像备份时是否进行压缩。
 #dbfilename  
镜像备份文件的文件名。
 #dir  
数据库镜像备份文件的放置路径。路径跟文件名要分开配置,因为Redis在进行备份时,会先将当前数据库的状态写入一个临时文件,等备份完成时,再把该临时文件替换为所指定的文件,而临时文件和所配置的备份文件都存放在指定路径当中。
#slaveof  
设置该数据库为其他数据库的从数据库。
 #masterauth  
当主数据库连接需要密码验证时,用该指令指定。
#requirepass  

设置客户端连接后进行任何其他指定前需要使用的密码。

需要注意的是,因为Redis速度相当快,所以在配置比较好的服务器下,外部用户可以在一秒钟内进行150000次的密码尝试,这意味着需要指定非常强大的密码来防止他人进行暴力破解。

 #maxclients   

11.2.4  Redis的配置文件详解(2)

限制同时连接的客户数量。当连接数超过这个值时,Redis将不再接收其他连接请求,客户端尝试连接时将收到error信息提示。

#maxmemory  
设置Redis能够使用的最大内存。当内存被完全占用时,再接收到set命令,Redis将先尝试剔除设置过expire信息的key,而不管该key过期与否,将按照过期时间进行删除,最先过期的key最先被删除。如果带有expire信息的key已被全部删除,那么将返回出错提示,Redis将不再接收写请求,只接收get请求。maxmemory的设置比较适合把redis当作类似memcached的缓存来使用。
#appendonly  
默认情况下,Redis会在后台异步把数据库镜像备份到磁盘,但是这样备份非常耗时,而且备份也不能很频繁,如果发生断电,将造成大量的数据丢失。所以Redis提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only模式之后,Redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当Redis重新启动时,会从该文件恢复到之前的状态。但是这样容易造成appendonly.aof文件过大,所以Redis还支持BGREWRITEAOF指令,可以对appendonly.aof文件进行重新整理。
#appendfsync  
设置对appendonly.aof文件进行同步的频率。always表示每次只要有写操作就进行同步;everysec表示对写操作进行累积,每秒同步一次。可根据实际业务场景自行配置。
#vm-enabled  
是否开启虚拟内存支持。因为Redis是一个内存数据库,而且当内存满时,无法接收新的写请求,所以Redis 2.X版本提供了虚拟内存支持功能。但是,要注意:Redis将所有的key都放在内存中,当内存不够时,只会把value值放入交换区。这样,虽然使用虚拟内存,但性能基本不受影响。同时,vm-max-memory要设置到足够大才能放下所有的key。
 #vm-swap-file  
设置虚拟内存的交换文件路径。
 #vm-max-memory  
设置开启虚拟内存之后,Redis将使用的最大物理内存的大小,默认为0。Redis将所有的能放到交换文件的内容都放到交换文件中,以尽量减少对物理内存的占用。在生产环境下,需要根据实际情况设置该值,最好不要使用默认的0值。
 #vm-page-size  
设置虚拟内存的页面大小,如果要在value中放置博客、新闻之类的文章内容,就将空间设置大一些;如果要放置的都是很小的内容,则空间设置可以小一点。
 #vm-pages  
设置交换文件的总的页数。需要注意的是,page table信息存放在物理内存中,每8个page就会占据RAM中的1个byte。总的虚拟内存大小为vm-page-size * vm-pages。
 #vm-max-threads  

设置VM、I/O同时使用的线程数量。因为在进行内存交换时,会进行数据编码和解码,所以尽管I/O设备本身不能支持很多的并发读写,如果环境中所保存的vlaue值比较大,那么将该值设置大一些,仍然能够提升其性能。

如果该值非零,当主线程检测到使用的内存超过最大上限,会将选中的要交换对象的信息放到一个队列中,并交由工作线程进行后台处理,主线程则继续处理客户端的   请求。

如果有客户端请求的key被换出,主线程先阻塞发出命令的客户端,然后将加载对象的信息放到队列中,让工作线程去加载。加载完毕后,工作线程通知主线程,主线程再执行客户端的命令。这种方式只阻塞请求value被换出key的客户端请求。

 #glueoutputbuf  
把较小的输出缓存放在一起,以便能够在一个TCP packet中为客户端发送多个响应。Redis2.X版本引入了hash数据结构。当hash中包含超过指定元素个数并且最大的元素没有超过临界时,hash将以一种特殊的编码方式(大大减少内存使用)来存储,临界值设置参数如下。
#hash-max-zipmap-entries    #activerehashing  

开启之后,Redis将在每100毫秒时使用1毫秒的CPU时间来对Redis的hash表进行重新hash,以降低内存的使用。生产环境往往有非常严格的实时性要求,如不能够接受Redis时不时对请求有所延迟,可以把这项配置设置为no。如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快地释放内存。

11.2.5  Redis的管理(1)

Redis配置文件一旦写好既无需更改,除非需要再次调整及优化。所以对其操作一般使用命令行的形式。接下来介绍Redis常用的命令-键值相关命令

1.ping

测试连接是否存活:

 redis 127.0.0.1:6379> ping    PONG  
执行下面命令之前,停止redis服务器
 redis 127.0.0.1:6379> ping    Could not connect to Redis at 127.0.0.1:6379: Connection refused  
执行下面命令之前,启动redis服务器
 not connected> ping    PONG    redis 127.0.0.1:6379>  

第一次ping时,说明连接正常;

第二次ping之前,因为将Redis服务器停止,那么ping是失败的;

第三次ping之前,因为将Redis服务器启动,则ping是成功的。

2.echo

在命令行打印某些内容:

 redis 127.0.0.1:6379> echo test    "test"    redis 127.0.0.1:6379>  

3.select

选择数据库。Redis数据库编号为0~15,可以选择任意一个数据库来进行数据存取。

 redis 127.0.0.1:6379> select 1   OK    redis 127.0.0.1:6379[1]> select 16    (error) ERR invalid DB index    redis 127.0.0.1:6379[16]>  

当选择16号数据库时,系统报错,说明没有编号为16的数据库。

4.quit

退出连接。

 redis 127.0.0.1:6379> quit    [root@localhost  /]#  

5.dbsize

返回当前数据库中key的数目。

 redis 127.0.0.1:6379> dbsize    (integer) 18    redis 127.0.0.1:6379>  

结果说明此库中有18个key。

6.info

获取服务器的信息和统计。

 redis 127.0.0.1:6379> info   redis_version:2.4.X    redis_git_sha1:00000000    redis_git_dirty:0    arch_bits:32    multiplexing_api:epoll    process_id:28480    uptime_in_seconds:2515    uptime_in_days:0    redis 127.0.0.1:6379>  

7.monitor

实时转储收到的请求。

 redis 127.0.0.1:6379> config get dir       1) "dir"        2) "/root/4setup/redis-2.4.X"        redis 127.0.0.1:6379>    

你可能感兴趣的:(redis,安装,配置)