第十八章:Redis的配置——安全与性能测试

更新于:2019-02-27 15:07:29

Redis的安全:


我们使用Redis客户端请求连接Redis实例,和memcache一样,好像有ip地址有端口号就能访问,并没有像mysql那样有密码验证。这样就太不安全了,那Redis可不可以有密码验证?当然是可以的。


查看配置文件:


1.png


requirepass参数就是Redis实例的密码。默认情况下 requirepass 参数是空的,这就意味着无需通过密码验证就可以连接到 redis 服务。


我们使用config命令来修改该参数:

config set requirepass 123456 #为Redis服务设置访问密码123456


1.png


设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。密码验证的方法为,使用auth命令:

auth 123456


还有一个问题,如果master(主Redis服务实例)设置了密码,那slave(从Redis服务实例)怎么通过master的密码验证?


这个就需要在slave配置文件中加参数“masterauth”,参数值为主服务器密码。


Redis的性能测试:


Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:


首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法。然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送。


Redis同一时间最大连接数是多少?可以通过maxclients参数设置。


1.png


maxclients 的默认值是 10000。根据服务器的性能可以修改此参数。


在Redis的bin目录,有个工具文件:


1.png


redis-benchmark类似于Apache的ab工具,它可以对Redis做性能测试。


具体使用方法:


可选参数


序号选项描述默认值
1-h指定服务器主机名127.0.0.1
2-p指定服务器端口6379
3-s指定服务器 socket
4-c指定并发连接数50
5-n指定请求数10000
6-d以字节的形式指定 SET/GET 值的数据大小2
7-k1=keep alive 0=reconnect1
8-rSET/GET/INCR 使用随机 key, SADD 使用随机值
9-P通过管道传输 <numreq> 请求1
10-q强制退出 redis。仅显示 query/sec 值
11--csv以 CSV 格式输出
12-l生成循环,永久执行测试
13-t仅运行以逗号分隔的测试命令列表。
14-IIdle 模式。仅打开 N 个 idle 连接并等待。

./redis-benchmark -n 10000  -q


1.png