centos7 安装 redis
Redis是nosql,非关系型数据库
key-value数据库,深入了解后你会发现,redis里的数据都是通过key去找,不需要创建什么数据库什么表之类的,非常简单
缓存数据库,Redis将访问频繁的数据放到缓存中,避免了像mysql一样反复连接数据而导致负载过高,而达到读取速度快
由C语言编写,并且是单线程服务器,只有一个线程来响应所有请求
安装
yum安装redis时,建议使用Remi repository源。因为Remi源提供了目前最新版本的Redis
yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum --enablerepo=remi install -y redis //--enablerepo指定yum源
redis-cli --version //安装完成后使用命令查看一下版本
/etc/redis.conf 为redis的配置文件
//第69行,Redis监听的地址 bind 127.0.0.1 //第88行,安全模式,是否禁止外网访问Redis,yes表示启用,只能通过本地访问 protected-mode yes //第92行,监听的端口号 port 6379 /*第101行,指定tcp-backlog长度。tcp-backlog是一个等待队列。 * 当大量请求需要Redis处理时,需要等待的请求队列会通过backlog来缓存。 * backlog的数量决定来可以缓存的队列数 */ tcp-backlog 511 //第109行,指定使用sock文件通信以及sock文件位置。如果服务端和客户端在同一台主机上,建议打开。sock方式通信可以直接在内存中交换,不经过TCP/IP协议栈进行封装、拆封 # unixsocket /tmp/redis.sock //第110行,定义sock文件的权限 # unixsocketperm 700 //第113行,表示客户端连接成功后,空闲多长时间超时(非活跃,没有数据交互)。0表示不开启此功能 timeout 0 //第130行,维持长链接的时间,单位秒 tcp-keepalive 300 //第136行,是否在后台运行守护进程。如果使用redis服务脚本启动,即使为no,也会运行一个守护进程。一般设置yes daemonize no //第147行,是由upstart还是systemd接管redis进程。默认无监督互动,不需要修改。 supervised no //第158行,pid文件地址 pidfile /var/run/redis_6379.pid //第166行,日志级别 loglevel notice //第174行,日志文件位置 logfile /var/log/redis/redis.log //第186行,默认由多少个数据库。但是在分布式中,只能有一个 databases 16 /*第218到220行,快照存储策略,存到磁盘的持久化策略 *第一个数字是单位时间,单位为秒;第二个数字是键值发生变化的次数 * 例如第一个,900秒内至少发生1次键值变化,则做一次快照(持久化) * 第二个就是,300秒内至少发生10次键值变化,则做一次快照(持久化) * 所有条件是并列关系,根据不同的键值变化选择使用规则 */ save 900 1 save 300 10 save 60 10000 //第235行,在进行快照备份时,一旦发生错误是否停止,默认yes即可 stop-writes-on-bgsave-error yes //第241行,指定RDB文件是否压缩。yes表示压缩,会消耗CPU资源 rdbcompression yes /*第250行,是否对RDB文件做校验码检测。 *此项定义在redis启动时加载RDB文件是否对文件检查校验码,在redis生成RDB文件是会生成校验信息,在redis再次启动或装载RDB文件时,是否检测校验信息。 *如果检测的情况下会消耗时间,会导致redis启动时慢,但是能够判断RDB文件是否产生错误。 */ rdbchecksum yes //第253行,RDB文件名称 dbfilename dump.rdb //第263行,RDB文件存放的路径 dir /var/lib/redis //第286行,定义Master服务器的IP和端口,主从复制的配置信息 # replicaof <masterip> <masterport> //第293行,定义Master服务器的密码,主从复制的配置信息 # masterauth <master-password> //第308行,当从端在主从复制过程中与主端断开连接,yes表示继续提供服务,即使数据可能不是最新的;no表示对请求返回错误信息 replica-serve-stale-data yes //第324行,从端只读 replica-read-only yes //第355行,默认不使用diskless(无磁盘)同步方式 repl-diskless-sync no //第367行,diskless(无磁盘)方式进行数据传递之前会有一个时间的延迟,以便从端能够进行到待传送的目标队列中,默认5秒 repl-diskless-sync-delay 5 //第373行,从端向主端发送ping的时间间隔,默认10秒 # repl-ping-replica-period 10 //第385行,设置超时时间 # repl-timeout 60 /*第400行,是否启用TCP_NODELAY。 * 如果启用则会使用少量的TCP包和带宽去进行数据传输到从端,速度较慢; * 如果不启用则使用较多的带宽进行数据传输,速度较快。 */ repl-disable-tcp-nodelay no /*第413行,设置backlog的大小。backlog是一个缓冲区,在从端失联时存放要同步到从端的数据。 * 因此当从端重连时,一般是不需要完全同步的。backlog越大,从端可以失联的时间就越长(相对来说) */ # repl-backlog-size 1mb //第426行,一段时间后,从端还没有连上master,那么backlog(缓冲区)的内存将被释放。0表示永不释放,默认3600秒 # repl-backlog-ttl 3600 //第441行,从端的优先级设置,数字越小优先级越高。主端故障会根据优先级高的从端来进行恢复。如果设置的是0,那么该从端永远不会被选中 replica-priority 100 //第457到458行,当主端的可用从端小于3个或网路延迟岛屿10秒时,主端拒绝接收用户的写请求。 # min-replicas-to-write 3 # min-replicas-max-lag 10 //第507行,指定认证密码,默认不启动 # requirepass foobared //第539行,同时连接redis的最大数量 # maxclients 10000
特别注意:第69行的bind,第88行的protected-mode,第136行的daemonize,第539行的maxclients,还有主从复制的所有配置参数。
redis 的默认端口是6379
redis-cli是redis 的命令行工具,通过127.0.0.1端口6379连接到服务器,如果未开启 redis,会显示无法连接数据库
redis-cli #本地连接
redis-cli -h IP地址 -p 端口 #连接外部redis
redis-cli -h 127.0.0.1 -p 6379 -a myPassword #-a使用密码认证连接
redis命令 (通过redis-cli进入redis后使用的命令)
ping #用于检测redis服务是否启动
config get * #获取所有配置项
config get port #获得端口
config get bind #获得redis监听的端口
config set port "1234" #修改端口
redis命令官方文档:http://redisdoc.com/index.html