redis-cli shutdown,这是种安全关闭redis的方式,但这种写法只适用于没有配置密码的场景,比较不安全,配置密码下一部分会讲
kill -9 pid,这种方式就是强制关闭,可能会造成数据未保存
重启后,我们可以使用ps -ef | grep redis,netstat -ant | grep 6379命令来验证Redis已经启动。
Redis登录授权
上面我们安装了Redis,但这种方式是非常不安全的,因为没有密码,这样任何连接上Redis服务器的用户都可以对Redis执行操作,所以这一部分我们来讲一下给Redis设置密码。
打开redis.conf,找到"requirepass"部分,打开原本关闭的注释,替换一下自己想要的密码即可:
重启Redis,授权登录有两种做法:
连接的时候直接指定密码,redis-cli -h 127.0.0.1 -p 6379 -a 123456
连接后授权,redis-cli -h 127.0.0.1 -p 6379,auth 123456
在配置了密码的情况下,没有进行授权,那么对Redis发送的命令,将返回"(error) NOAUTH Authentication required."。
Redis配置文件redis.conf
上面两小节,设置使用守护线程启动、设置密码,都需要修改redis.conf,说明redis.conf是Redis核心的配置文件,本小节我们来看一下redis.conf中一些常用配置:
配置 作用 默认bind
当配置了bind之后:
只有bind指定的ip可以直接访问Redis,这样可以避免将Redis服务暴露于危险的网络环境中,防止一些不安全的人随随便便通过远程访问Redis
如果bind选项为空或0.0.0.0的话,那会接受所有来自于可用网络接口的连接
127.0.0.1protected-mode
protected-mode是Redis3.2之后的新特性,用于加强Redis的安全管理,当满足以下两种情况时,protected-mode起作用:
bind未设置,即接收所有来自网络的连接
密码未设置
当满足以上两种情况且protected-mode=yes的时候,访问Redis将报错,即密码未设置的情况下,无密码访问Redis只能通过安装Redis的本机进行访问
yesport Redis访问端口,由于Redis是单线程模型,因此单机开多个Redis进程的时候会修改端口,不然一般使用大家比较熟悉的6379端口就可以了 6379
tcp-backlog 半连接队列的大小,对半连接队列不熟的可以看我以前的文章TCP:三次握手、四次握手、backlog及其他 511
timeout 指定在一个client空闲多少秒之后就关闭它,0表示不管 0
tcp-keepalive
设置tcp协议的keepalive,从Redis的注释来看,这个参数有两个作用:
发现死的连接
从中间网络设备的角度看连接是否存活
300daemonize 这个前面说过了,指定Redis是否以守护进程的方式启动 no
supervised 这个参数表示可以通过upstart和systemd管理Redis守护进程,这个具体和操作系统相关,资料也不是很多,就暂时不管了 no
pidfile 当Redis以守护进程的方式运行的时候,Redis默认会把pid写到pidfile指定的文件中 /var/run/redis_6379.pid
loglevel
指定Redis的日志级别,Redis本身的日志级别有notice、verbose、notice、warning四种,按照文档的说法,这四种日志级别的区别是:
debug,非常多信息,适合开发/测试
verbose,很多很少有用的信息(直译,读着拗口,从上下文理解应该是有用信息不多的意思),但并不像debug级别这么混乱
notice,适度的verbose级别的输出,很可能是生产环境中想要的