Mrfei 发表于 2018-11-7 09:38:51

Redis实战(9)高级特性(1)安全与主从复制

  一、安全性
  设置客户端连接后进行任何其他指定前需要使用的密码。
  下面我们做一个实验,说明 redis 的安全性是如何实现的,设置口令为beijing
#修改redis.conf配置文件如下  
requirepass beijing
  指定配置文件启动redis服务,然后我们启动一个客户端测试一下:

  说明权限太小,我们可以当前的这个窗口中设置口令

  我们还可以在连接到服务器期间就指定一个口令,如下:

  可以看到我们在连接的时候就可以指定一个口令。
  二、主从复制
  redis 主从复制配置和使用都非常简单。通过主从复制可以允许多个 slave server 拥有和
  master server 相同的数据库副本。
  redis 主从复制特点:
  (1)、master 可以拥有多个 slave
  (2)、多个 slave 可以连接同一个 master 外,还可以连接到其他 slave
  (3)、主从复制不会阻塞 master,在同步数据时,master 可以继续处理 client 请求
  (4)、提高系统的伸缩性
  当配置好 slave 后,slave 与 master 建立连接,然后发送 sync 命令。无论是第一次连接还是
  重新连接,master 都会启动一个后台进程,将数据库快照保存到文件中,同时 master 主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master 就发送文件给 slave,
  slave将文件保存到硬盘上,再加载到内存中,接着 master 就会把缓存的命令转发给 slave,后续
  master 将收到的写命令发送给 slave。如果 master 同时收到多个 slave 发来的同步连接命令,
  master 只会启动一个进程来写数据库镜像,然后发送给所有的 slave。
  如何配置:
  下面我们做一个实验来演示如何搭建一个主从环境:
  把redis.conf复制一下为redis.slave.conf
  修改redis.slave.conf:
#从库采用的端口  
port 6378
  
#指定 master 的 ip 和端口
  
slaveof 127.0.0.1 6379
  启动主库服务:
src/redis-server redis.conf  启动从库服务:
src/redis-server redis.slave.conf  我们在主库上设置一对键值对
  进入主库
src/redis-cli -p 6379
  在从库上取一下这个键

  那么我们如何判断哪个是主哪个是从呢?我们只需调用 info 这个命令就可以得到主从的信息
  了,我们在从库上执行 info 命令
# Server  
redis_version:2.8.2
  
redis_git_sha1:00000000
  
redis_git_dirty:0
  
redis_build_id:9f7a4dc70b6a0d35
  
redis_mode:standalone
  
os:Linux 3.2.0-55-generic x86_64
  
arch_bits:64
  
multiplexing_api:epoll
  
gcc_version:4.6.3
  
process_id:5484
  
run_id:94b25c75331e2e2b249b98155a9dc6bfeb583af2
  
tcp_port:6378
  
uptime_in_seconds:1031
  
uptime_in_days:0
  
hz:10
  
lru_clock:254873
  
config_file:/home/jane/soft/redis-2.8.2/redis.slave.conf
  
# Clients
  
connected_clients:2
  
client_longest_output_list:0
  
client_biggest_input_buf:0
  
blocked_clients:0
  
# Memory
  
used_memory:829440
  
used_memory_human:810.00K
  
used_memory_rss:2179072
  
used_memory_peak:829544
  
used_memory_peak_human:810.10K
  
used_memory_lua:33792
  
mem_fragmentation_ratio:2.63
  
mem_allocator:jemalloc-3.2.0
  
# Persistence
  
loading:0
  
rdb_changes_since_last_save:0
  
rdb_bgsave_in_progress:0
  
rdb_last_save_time:1386668924
  
rdb_last_bgsave_status:ok
  
rdb_last_bgsave_time_sec:0
  
rdb_current_bgsave_time_sec:-1
  
aof_enabled:0
  
aof_rewrite_in_progress:0
  
aof_rewrite_scheduled:0
  
aof_last_rewrite_time_sec:-1
  
aof_current_rewrite_time_sec:-1
  
aof_last_bgrewrite_status:ok
  
# Stats
  
total_connections_received:3
  
total_commands_processed:113
  
instantaneous_ops_per_sec:0
  
rejected_connections:0
  
sync_full:0
  
sync_partial_ok:0
  
sync_partial_err:0
  
expired_keys:0
  
evicted_keys:0
  
keyspace_hits:4
  
keyspace_misses:1
  
pubsub_channels:0
  
pubsub_patterns:0
  
latest_fork_usec:227
  
# Replication
  
role:slave
  
master_host:127.0.0.1
  
master_port:6379
  
master_link_status:up
  
master_last_io_seconds_ago:1
  
master_sync_in_progress:0
  
slave_repl_offset:1559
  
slave_priority:100
  
slave_read_only:1
  
connected_slaves:0
  
master_repl_offset:0
  
repl_backlog_active:0
  
repl_backlog_size:1048576
  
repl_backlog_first_byte_offset:0
  
repl_backlog_histlen:0
  
# CPU
  
used_cpu_sys:0.09
  
used_cpu_user:0.16
  
used_cpu_sys_children:0.00
  
used_cpu_user_children:0.00
  
# Keyspace
  
db0:keys=2,expires=0,avg_ttl=0
  里面有一个角色标识role,来判断是主库还是从库,对于本例是一个从库。
  role:master 主库
  role:slave    从库
  同时还有一个master_link_status 用于标明主从是否异步,
  如果此值=up,说明同步正常;
  如果此值=down,说明同步异步;
  db0:keys=2,expires=0, 用于说明数据库有几个 key,以及过期 key 的数量。


页: [1]
查看完整版本: Redis实战(9)高级特性(1)安全与主从复制