redis安全及必备知识

redis安全及必备知识

一.redis安全

为redis设置密码命令行的模式(重启后失效): 
查看密码:java

CONFIG GET requirepasspython

密码认证:redis

AUTH password数据库

设置密码:c#

CONFIG SET requirepass "password"缓存

127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> CONFIG SET requirepass "abc123"
OK
127.0.0.1:6379> CONFIG GET requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH "abc123"
OK
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "abc123"

在redis配置文件中设置密码,在requirepass后面直接加密码便可:安全

requirepass abc123456并发

在配置文件中指定不能使用的命令:app

rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command SHUTDOWN ""
rename-command KEYS ""
rename-command MONITOR ""

二.redis性能测试

所谓性能测试就是在大并发下看redis的响应速度。能够经过redis-benchmark这个redis自带的测试命令来测试。ide

# redis-benchmark -n 100000 -q
PING_INLINE: 62111.80 requests per second
PING_BULK: 50100.20 requests per second
SET: 68823.12 requests per second
GET: 69348.12 requests per second
INCR: 69979.01 requests per second
LPUSH: 67842.61 requests per second
RPUSH: 68965.52 requests per second
LPOP: 69589.42 requests per second
RPOP: 66889.63 requests per second
SADD: 65061.81 requests per second
HSET: 52938.06 requests per second
SPOP: 56401.58 requests per second
LPUSH (needed to benchmark LRANGE): 45167.12 requests per second
LRANGE_100 (first 100 elements): 63451.78 requests per second
LRANGE_300 (first 300 elements): 47938.64 requests per second
LRANGE_500 (first 450 elements): 67796.61 requests per second
LRANGE_600 (first 600 elements): 68352.70 requests per second
MSET (10 keys): 63131.31 requests per second
-h 指定主机名
-p 指定端口
-c 指定并发数
-n 指定请求数
-q 强制退出 redis。仅显示 query/sec 值
-l 生产循环,永久执行测试

三. 持久化机制

redis是一个支持持久化的内存数据库,也就是redis须要常常将内存中的数据库同步到硬盘来保证持久化。 
redis支持两种持久化方式:

RDB(snapshotting快照的方式(默认)) 
AOF(append-only file)的方式

RDB方式: 
RDB是默认的持久化方式,这种方式是将内存中的数据以快照的方式写入二进制文件中(dump.rdb)。 
配置方式:

save 900 1 #900秒内若是超过1个key被修改,则发起快照保存 
save 300 10 #300秒内若是超过10个key被修改,则发起快照保存 
save 60 10000 #60秒内若是超过10000个key被修改,则发起快照保存

aof方式: 
快照是按照必定时间间隔或者规则来进行的,可是若是redis意外down掉,就会丢失最后一次快照的修改的数据。aof的方式具备更好的持久化性能。在使用aof时,redis会将每一个收到的写命令都经过write函数追加到文件中,当redis重启时会经过从新执行文件中保存的写命令来内存中重建整个数据库的内容。固然因为os会在内核中缓存write作的修改,因此可能不是当即写入磁盘上,这样aof方式的持久化也仍是有可能会丢失部分修改。能够经过配置文件告诉redis咱们想要经过fsync函数强制os写入到磁盘的时机。 
配置方式:

appendonly yes  # 启动aof持久化方式
appendfilename "appendonly.aof"  #指定aof文件名称
# appendfsync always  # 收到写命令就当即写入磁盘最慢,可是保证彻底的持久化
appendfsync everysec  # 每秒钟写入磁盘一次,在性能和持久化方面作了很好的折中处理
# appendfsync no  # 彻底依赖os,性能最好持久化没保证

四. redis事务

redis事务能够一次执行多个命令。 
一个事务从开始到执行会经历如下三个阶段:

  • 开始事务(MULTI)

  • 命令入队

  • 执行事务(EXEC)

    127.0.0.1:6379> MULTI
    OK
    127.0.0.1:6379> SET name "jack"
    QUEUED
    127.0.0.1:6379> GET name
    QUEUED
    127.0.0.1:6379> SADD tag "C++" "python" "java" "c#"
    QUEUED
    127.0.0.1:6379> SMEMBERS tag 
    QUEUED
    127.0.0.1:6379> EXEC
    1) OK
    2) "jack"
    3) (integer) 4
    4) 1) "java"
       2) "C++"
       3) "c#"
       4) "python"
DISCARD 取消事务,放弃执行事务内的全部命令
EXEC 执行全部事务块的命令
MULTI 标记一个事务块的开始
UNWATCH 取消WACTCH命令对全部key的监控
WATCH key [key ...] 监视一个(或多个) key ,若是在事务执行以前这个(或这些) key 被其余命令所改动,那么事务将被打断。
相关文章
相关标签/搜索