redis几个特性

1.1:安全性

下面我们做一个实验,说明 redis 的安全性是如何实现的。

# requirepass foobared

requirepass 123456

我们设置了连接的口令是 123456

那么们启动一个客户端试一下:

[root@localhost redis-2.2.12]# src/redis-cli

redis 127.0.0.1:6379> keys *

(error) ERR operation not permitted

redis 127.0.0.1:6379>

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

redis 127.0.0.1:6379> auth 123456

OK

redis 127.0.0.1:6379> keys *

1) "name"

redis 127.0.0.1:6379>

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

[root@localhost redis-2.2.12]# src/redis-cli -a 123456

redis 127.0.0.1:6379> keys *

1) "name"

redis 127.0.0.1:6379>

可以看到我们在连接的时候就可以指定一个口令。

1.2:主从复制

1.2.1 redis 主从复制特点:

(1)、master 可以拥有多个 slave

(2)、多个 slave 可以连接同一个 master 外,还可以连接到其他 slave

(3)、主从复制不会阻塞 master,在同步数据时,master 可以继续处理 client 请求

(4)、提高系统的伸缩性

1.2.2 redis 主从复制过程:

当配置好 slave 后,slave 与 master 建立连接,然后发送 sync 命令。无论是第一次连接还是重新连接,master 都会启动一个后台进程,将数据库快照保存到文件中,同时 master 主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master 就发送文件给 slave,slave将文件保存到硬盘上,再加载到内存中,接着 master 就会把缓存的命令转发给 slave,后续master 将收到的写命令发送给 slave。如果 master 同时收到多个 slave 发来的同步连接命令,master 只会启动一个进程来写数据库镜像,然后发送给所有的 slave。

1.2.3 如何配置配置 

slave 服务器很简单,只需要在 slave 的配置文件中加入如下配置

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

注意:如果主从复制失败,可能原因

centOS7主从复制失败,解决方法之一:

在redis主服务器上的redis.conf中修改bind字段

bind 127.0.0.1

修改为

bind 0.0.0.0

又或者直接注释掉bind字段

# bind 127.0.0.1

原因:如果redis主服务器绑定了127.0.0.1,那么跨服务器IP的访问就会失败,从服务器用IP和端口访问主的时候,主服务器发现本机6379端口绑在了127.0.0.1上,也就是只能本机才能访问,外部请求会被过滤,这是Linux的网络安全策略管理的。如果bind的IP地址是172.168.10.70,那么本机通过localhost和127.0.0.1、或者直接输入命令redis-cli登录本机redis也就会失败了。只能加上本机ip才能访问到。

所以,在研发、测试环境可以考虑bind 0.0.0.0,线上生产环境建议绑定IP地址。

1.3 事务控制

一般情况下 redis 在接受到一个 client 发来的命令后会立即处理并 返回处理结果,但是当一个 client 在一个连接中发出 multi 命令有,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一个队列中。当从此连接受到 exec 命令后,redis 会顺序的执行队列中的所有命令。并将所有命令的运行结果打包到一起返回给 client.然后此连接就 结束事务上下文。

1.3.1 简单事务控制

下面可以看一个例子

redis 127.0.0.1:6379> get age

"33"

redis 127.0.0.1:6379> multi

OK

redis 127.0.0.1:6379> set age 10

QUEUED

redis 127.0.0.1:6379> set age 20

QUEUED

redis 127.0.0.1:6379> exec

1) OK

2) OK

redis 127.0.0.1:6379> get age

"20"

redis 127.0.0.1:6379>

从这个例子我们可以看到 2 个 set age 命令发出后并没执行而是被放到了队列中。调用 exec

后 2 个命令才被连续的执行,最后返回的是两条命令执行后的结果。

1.3.2 如何取消一个事务

我们可以调用 discard 命令来取消一个事务,让事务回滚。接着上面例子

redis 127.0.0.1:6379> get age

"20"

redis 127.0.0.1:6379> multi

OK

redis 127.0.0.1:6379> set age 30

QUEUED

redis 127.0.0.1:6379> set age 40

QUEUED

redis 127.0.0.1:6379> discard

OK

redis 127.0.0.1:6379> get age

"20"

redis 127.0.0.1:6379>

可以发现这次 2 个 set age 命令都没被执行。discard 命令其实就是清空事务的命令队列并退

出事务上下文,也就是我们常说的事务回滚。

1.3.3 乐观锁复杂事务控制

redis 127.0.0.1:6379> get age

"10"

redis 127.0.0.1:6379> watch age

OK

redis 127.0.0.1:6379> multi

OK

redis 127.0.0.1:6379>

1.4 持久化机制

redis 支持两种持久化方式,一种是 Snapshotting(快照)也是默认方式,另

一种是 Append-only file(缩写 aof)的方式。下面分别介绍:

1.4.1 snapshotting 方式

快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件中,

默认的文件名为 dump.rdb。可以通过配置设置自动做快照持久化的方式。我们可以配置 redis

在 n 秒内如果超过 m 个 key 被修改就自动做快照,下面是默认的快照保存配置

save 900 1 #900 秒内如果超过 1 个 key 被修改,则发起快照保存

save 300 10 #300 秒内容如超过 10 个 key 被修改,则发起快照保存

save 60 10000 #10000 秒内容如超过 60 个 key 被修改,则发起快照保存

1.4.2 aof 方式

另外由于快照方式是在一定间隔时间做一次的,所以如果 redis 意外 down 掉的话,就会丢

失最后一次快照后的所有修改。如果应用要求不能丢失任何修改的话,可以采用 aof 持久化

方式。

appendonly yes //启用 aof 持久化方式

# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化

appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

# appendfsync no //完全依赖 os,性能最好,持久化没保证

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,585评论 4 365
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,923评论 1 301
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,314评论 0 248
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,346评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,718评论 3 291
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,828评论 1 223
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,020评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,758评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,486评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,722评论 2 251
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,196评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,546评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,211评论 3 240
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,132评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,916评论 0 200
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,904评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,758评论 2 274

推荐阅读更多精彩内容