Redis的安全:
我们使用Redis客户端请求连接Redis实例,和memcache一样,好像有ip地址有端口号就能访问,并没有像mysql那样有密码验证。这样就太不安全了,那Redis可不可以有密码验证?当然是可以的。
查看配置文件:
requirepass参数就是Redis实例的密码。默认情况下 requirepass 参数是空的,这就意味着无需通过密码验证就可以连接到 redis 服务。
我们使用config命令来修改该参数:
config set requirepass 123456 #为Redis服务设置访问密码123456
设置密码后,客户端连接 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参数设置。
maxclients 的默认值是 10000。根据服务器的性能可以修改此参数。
在Redis的bin目录,有个工具文件:
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 | -k | 1=keep alive 0=reconnect | 1 |
8 | -r | SET/GET/INCR 使用随机 key, SADD 使用随机值 | |
9 | -P | 通过管道传输 <numreq> 请求 | 1 |
10 | -q | 强制退出 redis。仅显示 query/sec 值 | |
11 | --csv | 以 CSV 格式输出 | |
12 | -l | 生成循环,永久执行测试 | |
13 | -t | 仅运行以逗号分隔的测试命令列表。 | |
14 | -I | Idle 模式。仅打开 N 个 idle 连接并等待。 |
./redis-benchmark -n 10000 -q