|
一、安全性
设置客户端连接后进行任何其他指定前需要使用的密码。
下面我们做一个实验,说明 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 的数量。
|
|
|