您的位置:首页 > 数据库 > Redis

Redis高级实用特性(安全性、主从复制、事务处理)

2017-05-15 06:58 686 查看

安全性

设置客户端连接后进行任何其他指定前需要使用的密码

警告: 因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意 味着你需要指定非常非常强大的密码来防止暴力破解

在配置文件中找到 # requirepass foobared

添加 requirepass redis

授权方法有两种:

客户端连接后 输入 auth redis

客户端连接时 输入 bin liudongyu$ /usr/local/redis/bin/redis-cli -a redis

主从复制

配置和使用都非常简单。通过主从复制可以允许多个

slave server拥有和master server相同的数据库副本

特点:

master可以拥有多个slave

多个slave除了可以连接同一个master外,还可以连接到其他slave

主从复制不会阻塞master,在同步数据时,master可以继续处理client请求(主从同步时不影响master的数据读写)

提高系统的伸缩性

redis主从复制过程:

slave与master建立连接,发送sync同步命令

master会启动一个后台进程,将数据库快照保存到文件中,

同时master主进程会开始收集新的写命令并缓存。

后台完成保存后,就将此文件发送给slave

slave将此文件保存到硬盘上

配置主从服务器:

1. 配置slave服务器很简单,只需要在slave的配置文件中加入以下配置:redis.conf中:(要保证和主机是连通的 ping一下)

slaveof 192.168.1.1 6379#指定master的ip和端口

masterauth lamp# 这是主机的密码

2. 客户端命令中输入info可以查看该服务器的角色

role :slave
master_link_status:up

role: master
slave0: …
slave1:…


事务处理

multi

exec

redis对事务的支持还比较简单(不是很成熟,e.g.下面例子中队列中有不能正常执行的命令,但redis没有做到回滚)

在客户端中,输入multi,再输入其他的命令,其他的命令不会立即执行,而是放入一个队列中,当输入命令exec时,redis会执行队列中的所有命令

127.0.0.1:6379> get age
"50"
127.0.0.1:6379> set name liudy
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr age
QUEUED
127.0.0.1:6379> incr name
QUEUED
127.0.0.1:6379> exec
1) (integer) 51
2) (error) ERR value is not an integer or out of range


127.0.0.1:6379> get age
"20"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set age 10
QUEUED
127.0.0.1:6379> set age 50
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
127.0.0.1:6379> get age
"50"


discard

取消一个事务(其实就是清空事务的命令队列并退出事务上下文,也就是我们常说的事务回滚)

127.0.0.1:6379> get age
"50"
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set age 10
QUEUED
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> get age
"50"


乐观锁的复杂事务控制(有点类似svn的版本管理)

当开启事务前,对某个键进行监视,若在exec前,该键的值发生了改变,那么exec执行不成功

127.0.0.1:6379> get age
"30"
127.0.0.1:6379> watch age
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set age 20
QUEUED
127.0.0.1:6379> exec
(nil)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis