redis学习笔记

一、入门介绍

  1. 官方网站:http://redis.io/

  2. 国内中文网站:http://www.redis.cn/

二、安装redis

1、简单安装
1
2
3
4
5
6
7
8
9
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
tar xzf redis-3.2.3.tar.gz
cd redis-3.2.3
make
##启动redis
##redis-server --port 6380
src/redis-server
##打开客户端
src/redis-cli

三、持久化

1、RDB方式
  • 根据配置规则进行自动快照;

  • 用户执行 SAVE或 BGSAVE命令;

  • 执行 FLUSHALL命令;

  • 执行复制(replication)时。

1)根据配置规则进行自动快照(修改配置redis.conf)

1
2
3
4
#save [sec] [feq] 每sec秒执行feq次则保存快照
save 900 1
save 300 10
save 60 10000

2)用户执行 SAVE或 BGSAVE命令

  • SAVE命令:在快照执行的过程中会阻塞所有来自客户端的请求。

  • BGSAVE命令:BGSAVE 命令可以在后台异步地进行快照操作。

  • LASTSAVE命令:LASTSAVE命令获取最近一次成功执行快照的时间,返回结果是一个Unix时间戳。

3)执行 FLUSHALL命令

当执行 FLUSHALL 命令时,Redis 会清除数据库中的所有数据。只要自动快照条件不为空,Redis就会执行一次快照操作,否则不会进行快照。

4)执行复制(replication)时

当设置了主从模式时,Redis 会在复制初始化时进行自动快照。

2、快照原理

1) 修改配置文件可更改快照位置

1
2
dir ./
dbfilename dump.rdb
3、AOF方式

1) 开启AOF

当使用Redis存储非临时数据时,一般需要打开AOF持久化来降低进程中止导致的数据丢失。AOF可以将Redis执行的每一条写命令追加到硬盘文件中,这一过程显然会降低Redis 的性能

1
2
appendonly yes
appendfilename appendonly.aof

五、集群

1、主从复制(replication)

1)搭建配主从复制

1
2
3
4
5
6
7
8
9
#开启master
redis-server --port 6379
#开启slave
redis-server --port 6380 --slaveof 127.0.0.1 6379
redis-server --port 6381 --slaveof 127.0.0.1 6379
#连接客户端
redis-cli -p 6380
##打印Replication信息
INFO replication

Replication信息

1
2
3
4
5
6
7
8
9
10
# Replication
role:master #指的是master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=6105,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=6105,lag=1
master_repl_offset:6105
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:6104

不能向slave写入数据

1
2
SET foo hi
(error) READONLY You can't write against a read only slav

配置slave可写

1
2
3
4
#配置redis.conf
slave-redis-only no
#执行命令
SLAVEOF 127.0.0.1 6379
2、主从复制原理(Replication)

1)从数据库会将收到的内容写入到硬盘上的临时文件中,当写入完成后从数据库会用该临时文件替换RDB快照文件。

2)同步的过程中从数据库并不会阻塞,而是可以继续处理客户端发来的命令。

1
2
#可配置同步时数据是否可读
slave-serve-stale-data no

3)复制初始化阶段结束后,主数据库执行的任何会导致数据变化的命令都会异步地传送给从数据库。

4)主数据库将该命令传送给从数据库之前,如果两个数据库之间的网络连接断开了,此时二者之间的数据就会是不一致的,Redis 提供了两个配置选项来限制只有当数据至少同步给指定数量的从数据库时,主数据库才是可写的。

1
2
min-slaves-to-write 3 #表示只有当3个或3个以上的从数据库连接到主数据库时,主数据库才是可写的
min-slaves-max-lag 10 #表示允许从数据库最长失去连接的时间
3、分区集群模式搭建

1)开启redis

1
src/redis-server redis.conf

2)安装ruby

执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境

错误内容:

1
/usr/bin/env: ruby: No such file or directory

所以需要安装ruby的环境,这里推荐使用yum install ruby安装

1
yum install ruby

然后再执行第6步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装

错误内容:

1
2
3
4
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
#执行以下命令
yum install rubygems

再次执行第6步的命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装

错误内容:

1
2
3
4
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from ./redis-trib.rb:25
#执行以下命令
gem install redis

3)开启集群

1
redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385














附件列表

    原文地址:https://www.cnblogs.com/apescode/p/5912778.html