linux下载安装:
安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++
1.从官网下载 http://download.redis.io/releases/redis-x.x.x.tar.gz 根据需要下载对应版本
2.解压源码 tar -zxvf redis-x.x.x.tar.gz
3.进入解压目录进行编译 make
4.安装到制定目录 make PREFIX=/usr/local/redis install 路径可以自定义
5.安装之后在安装目录下的bin目录下有以下文件
-------------------------------------------
redis-benchmark redis性能测试工具
redis-check-aof redis的aof日志检查工具
redis-check-rdb redis的rdb日志检查工具
redis-cli redis的客户端工具
redis.conf 从源码目录中拷贝的redis的配置文件,本身并不存在该文件
redis-server redis的服务
-------------------------------------------
6.执行bin下面的redis-server 并指定配置文件 启动redis进程,默认端口为6379 ---- bin/redis-server redis.conf
7.在另一个窗口启动redis-cli客户端连接服务器
redis配置:
1.daemonize no --- 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。
2.port 6379 --- 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
3.tcp-backlog 511 --- TCP 监听的最大容纳数量,在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。Linux 内核会一声不响的把这个值缩小成 /proc/sys/net/core/somaxconn 对应的值,所以你要修改这两个值才能达到你的预期。
4.timeout 0 --- 指定在一个 client 空闲多少秒之后关闭连接(0 就是不关闭)
5.databases 16 --- 设置数据库的数目。默认数据库是 DB 0,你可以在每个连接上使用 select <dbid> 命令选择一个不同的数据库
6.requirepass foobared --- 设置密码
...
参考: https://www.cnblogs.com/kreo/p/4423362.html
命令:
redis命令详细描述在 http://www.redis.net.cn/order/3528.html 查看
事务:
multi 开启事务
exec 提交事务
discard 撤销事务
watch 监视key的值变化
unwatch 取消所有监视
消息发布与订阅:
publish channel message 发布信息
subscribe channel 订阅频道
psubscribe pattern 匹配订阅
unsubscribe channel 取消订阅
punsubscribe pattern 匹配取消订阅
持久化:
快照rdb:
工作原理:每隔N分钟或者N次写操作之后从内存生成rdb文件,压缩,放在备份目录
配置:save 900 1 900秒有1次修改
save 300 10 300秒有10次修改
save 60 10000 60秒有10000次修改
(从下往上检查,全部屏蔽之后不进行rdb持久化)
stop-writes-on-bgsave-error yes 后台写错误是否停止写入
rdbcompression yes 导出dump文件是否压缩
rdbchecksum yes 导入时验证文件完整性
dbfilename dump.rdb 导出文件的文件名
dir ./ 导出的文件的路径
缺陷:两个保存点之间容易丢失数据
aof:
配置:appendonly no 是否开启aof方式持久化
appendfilename "appendonly.aof" aof文件日志文件的文件名称
appendfsync everysec/always/no 每分钟/总是每一条命令/系统决定 同步
no-appendfsync-on-rewrite no 正在导出rdb时是否停止追加aof文件
auto-aof-rewrite-percentage 100 aof文件大小比上次从重写时的增长率为100%时重写
auto-aof-rewrite-min-size 64mb aof文件的重写的最小大小限制
手动触发重写:使用BGREWRITEAOF
aof和rdb共用:开启aof之后恢复时按照aof为准
性能测试:
使用redis-benchmark -n count 执行count个命令测试性能
redis集群:
主从通信:1.rdb同步 2.aof同步 3.replicationFeedSlaves进程同步
集群原理:1.所有redis节点使用(ping-pong机制)互联
2.节点的宕机是通过集群中超过半数的节点失效才生效
3.客户端连接时连接任何一个可用节点即可
4.集群将所有物理节点映射到0-16383个hash槽上,cluster负责维护
集群搭建:
1.redis集群需要ruby支持
--------------------------------
#安装ruby
yum install ruby
yum install rubygems
#安装ruby和redis的接口程序
gem install redis-x.x.x.gem
--------------------------------
2.创建集群
这里需要6台服务器,3台主服务器,3台备份服务器
伪集群的话在一个服务器上使用不同的端口表示不同的服务器
例如:主节点--127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003
从节点--127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
创建集群cluster目录并复制redis安装目录bin下的文件,并重命名redis1-6
拷贝redis源码目录src下的redis-trib.rb文件到该目录
3.修改每个redis实例的配置文件
port xxx 根据实际要分配端口配置
cluster-enabled yes 开启redis集群支持
.... 根据需要修改其他配置
4.创建启动脚本并启动所有redis实例
-------------------------------
cd redis1
./redis-server redis.conf
cd ..
cd redis2
./redis-server redis.conf
cd..
...
-------------------------------
编写完成之后为文件授予执行权限 chmod +x startall.sh
5.执行集群创建命令
-------------------------------
./redis-trib.rb create --replicas 1 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
使用create参数创建集群并分配主从节点,--replicas 1表示为每个主节点分配一个从节点,剩下的是节点集合
-------------------------------
可以从命令执行的输出情况看出集群的结果
6.连接集群
集群连接使用 ./redis-cli -c -h 127.0.0.1 -p 8001 其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号
7.查询节点信息
连接集群之后使用 cluster info可以查看集群信息
8.添加主节点
新增一个8007端口的redis服务
修改配置文件
启动新增的redis服务
使用./redis-trib.rb add-node 127.0.0.1:8007 127.0.0.1:8001 命令添加节点,add-node是加入集群节点,127.0.0.1:8007作为要添加的节点,127.0.0.1:8001表示要加入的集群,理论上集群中任意节点都可以
--检查节点状态
使用 ./redis-trib.rb check 127.0.0.1:8007 查看节点的状态是否添加成功
--重新分配hash槽
新增节点并未分配hash槽,所以无法存储数据
使用 ./redis-trib.rb reshard 127.0.0.1:8001(集群中任意节点即可)
提示需要为8007分配多少个槽,根据需要进行分配
还需要输入新增节点的id:根据实际情况输入,输出信息Performing Cluster Check下方为每个节点信息,M:或者S:后面的即为节点id
之后会询问是否从某个节点获取槽进行分配,输入指定id,槽将从指定节点进行获取分配,输入all节点将会全部重新分配,输入done取消分配
最后输入yes开始移动槽到目标结点id
9.添加从节点
新增一个8008端口的redis服务
使用./redis-trib.rb add-node --slave --master-id {masterid} 127.0.0.1:8008 127.0.0.1:8001 为指定的主节点添加从节点,最后指定集群
检查是否添加成功过 ./redis-trib.rb check 127.0.0.1:8008
10.删除主节点
使用 ./redis-trib del-node 127.0.0.1:8002 {node-id} 指定集群,并指定要删除的节点id
--报错
删除节点需要被删除节点无数据,需要重新分配hash槽将要删除节点的槽清空
--重新分配hash槽
使用 ./redis-trib.rb reshard 127.0.0.1:8001(集群中任意节点即可)
提示需要为其他节点分配多少个槽,输入要删除的节点的槽大小
还需要输入要接受槽节点的id
之后会询问是否从某个节点获取槽进行分配,输入要删除的节点id
最后输入yes开始移动槽到目标结点id
--执行删除操作
./redis-trib del-node 127.0.0.1:8002 {node-id}
11.删除从节点
直接执行 ./redis-trib del-node 127.0.0.1:8002 {node-id}
运维命令:
time:查看当前时间戳,返回秒数和微秒数
dbsize:查看当前所选数据库下key的数量
bgrewriteaof:手动重写aof文件
save:手动保存rdb文件 bgsave:后台执行保存rdb文件
lastsave:最后保存rdb文件的时间
flushdb:清空当前所选数据库的数据
flushall:清空所有数据
info [section]:服务器状态及配置等信息
config get/set conf :查看或者设置配置信息
slowlog get :查看执行比较慢的日志记录
shutdown [save | nosave] :关闭服务器
安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++
1.从官网下载 http://download.redis.io/releases/redis-x.x.x.tar.gz 根据需要下载对应版本
2.解压源码 tar -zxvf redis-x.x.x.tar.gz
3.进入解压目录进行编译 make
4.安装到制定目录 make PREFIX=/usr/local/redis install 路径可以自定义
5.安装之后在安装目录下的bin目录下有以下文件
-------------------------------------------
redis-benchmark redis性能测试工具
redis-check-aof redis的aof日志检查工具
redis-check-rdb redis的rdb日志检查工具
redis-cli redis的客户端工具
redis.conf 从源码目录中拷贝的redis的配置文件,本身并不存在该文件
redis-server redis的服务
-------------------------------------------
6.执行bin下面的redis-server 并指定配置文件 启动redis进程,默认端口为6379 ---- bin/redis-server redis.conf
7.在另一个窗口启动redis-cli客户端连接服务器
redis配置:
1.daemonize no --- 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。
2.port 6379 --- 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
3.tcp-backlog 511 --- TCP 监听的最大容纳数量,在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。Linux 内核会一声不响的把这个值缩小成 /proc/sys/net/core/somaxconn 对应的值,所以你要修改这两个值才能达到你的预期。
4.timeout 0 --- 指定在一个 client 空闲多少秒之后关闭连接(0 就是不关闭)
5.databases 16 --- 设置数据库的数目。默认数据库是 DB 0,你可以在每个连接上使用 select <dbid> 命令选择一个不同的数据库
6.requirepass foobared --- 设置密码
...
参考: https://www.cnblogs.com/kreo/p/4423362.html
命令:
redis命令详细描述在 http://www.redis.net.cn/order/3528.html 查看
事务:
multi 开启事务
exec 提交事务
discard 撤销事务
watch 监视key的值变化
unwatch 取消所有监视
消息发布与订阅:
publish channel message 发布信息
subscribe channel 订阅频道
psubscribe pattern 匹配订阅
unsubscribe channel 取消订阅
punsubscribe pattern 匹配取消订阅
持久化:
快照rdb:
工作原理:每隔N分钟或者N次写操作之后从内存生成rdb文件,压缩,放在备份目录
配置:save 900 1 900秒有1次修改
save 300 10 300秒有10次修改
save 60 10000 60秒有10000次修改
(从下往上检查,全部屏蔽之后不进行rdb持久化)
stop-writes-on-bgsave-error yes 后台写错误是否停止写入
rdbcompression yes 导出dump文件是否压缩
rdbchecksum yes 导入时验证文件完整性
dbfilename dump.rdb 导出文件的文件名
dir ./ 导出的文件的路径
缺陷:两个保存点之间容易丢失数据
aof:
配置:appendonly no 是否开启aof方式持久化
appendfilename "appendonly.aof" aof文件日志文件的文件名称
appendfsync everysec/always/no 每分钟/总是每一条命令/系统决定 同步
no-appendfsync-on-rewrite no 正在导出rdb时是否停止追加aof文件
auto-aof-rewrite-percentage 100 aof文件大小比上次从重写时的增长率为100%时重写
auto-aof-rewrite-min-size 64mb aof文件的重写的最小大小限制
手动触发重写:使用BGREWRITEAOF
aof和rdb共用:开启aof之后恢复时按照aof为准
性能测试:
使用redis-benchmark -n count 执行count个命令测试性能
redis集群:
主从通信:1.rdb同步 2.aof同步 3.replicationFeedSlaves进程同步
集群原理:1.所有redis节点使用(ping-pong机制)互联
2.节点的宕机是通过集群中超过半数的节点失效才生效
3.客户端连接时连接任何一个可用节点即可
4.集群将所有物理节点映射到0-16383个hash槽上,cluster负责维护
集群搭建:
1.redis集群需要ruby支持
--------------------------------
#安装ruby
yum install ruby
yum install rubygems
#安装ruby和redis的接口程序
gem install redis-x.x.x.gem
--------------------------------
2.创建集群
这里需要6台服务器,3台主服务器,3台备份服务器
伪集群的话在一个服务器上使用不同的端口表示不同的服务器
例如:主节点--127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003
从节点--127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
创建集群cluster目录并复制redis安装目录bin下的文件,并重命名redis1-6
拷贝redis源码目录src下的redis-trib.rb文件到该目录
3.修改每个redis实例的配置文件
port xxx 根据实际要分配端口配置
cluster-enabled yes 开启redis集群支持
.... 根据需要修改其他配置
4.创建启动脚本并启动所有redis实例
-------------------------------
cd redis1
./redis-server redis.conf
cd ..
cd redis2
./redis-server redis.conf
cd..
...
-------------------------------
编写完成之后为文件授予执行权限 chmod +x startall.sh
5.执行集群创建命令
-------------------------------
./redis-trib.rb create --replicas 1 127.0.0.1:8001 127.0.0.1:8002 127.0.0.1:8003 127.0.0.1:8004 127.0.0.1:8005 127.0.0.1:8006
使用create参数创建集群并分配主从节点,--replicas 1表示为每个主节点分配一个从节点,剩下的是节点集合
-------------------------------
可以从命令执行的输出情况看出集群的结果
6.连接集群
集群连接使用 ./redis-cli -c -h 127.0.0.1 -p 8001 其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号
7.查询节点信息
连接集群之后使用 cluster info可以查看集群信息
8.添加主节点
新增一个8007端口的redis服务
修改配置文件
启动新增的redis服务
使用./redis-trib.rb add-node 127.0.0.1:8007 127.0.0.1:8001 命令添加节点,add-node是加入集群节点,127.0.0.1:8007作为要添加的节点,127.0.0.1:8001表示要加入的集群,理论上集群中任意节点都可以
--检查节点状态
使用 ./redis-trib.rb check 127.0.0.1:8007 查看节点的状态是否添加成功
--重新分配hash槽
新增节点并未分配hash槽,所以无法存储数据
使用 ./redis-trib.rb reshard 127.0.0.1:8001(集群中任意节点即可)
提示需要为8007分配多少个槽,根据需要进行分配
还需要输入新增节点的id:根据实际情况输入,输出信息Performing Cluster Check下方为每个节点信息,M:或者S:后面的即为节点id
之后会询问是否从某个节点获取槽进行分配,输入指定id,槽将从指定节点进行获取分配,输入all节点将会全部重新分配,输入done取消分配
最后输入yes开始移动槽到目标结点id
9.添加从节点
新增一个8008端口的redis服务
使用./redis-trib.rb add-node --slave --master-id {masterid} 127.0.0.1:8008 127.0.0.1:8001 为指定的主节点添加从节点,最后指定集群
检查是否添加成功过 ./redis-trib.rb check 127.0.0.1:8008
10.删除主节点
使用 ./redis-trib del-node 127.0.0.1:8002 {node-id} 指定集群,并指定要删除的节点id
--报错
删除节点需要被删除节点无数据,需要重新分配hash槽将要删除节点的槽清空
--重新分配hash槽
使用 ./redis-trib.rb reshard 127.0.0.1:8001(集群中任意节点即可)
提示需要为其他节点分配多少个槽,输入要删除的节点的槽大小
还需要输入要接受槽节点的id
之后会询问是否从某个节点获取槽进行分配,输入要删除的节点id
最后输入yes开始移动槽到目标结点id
--执行删除操作
./redis-trib del-node 127.0.0.1:8002 {node-id}
11.删除从节点
直接执行 ./redis-trib del-node 127.0.0.1:8002 {node-id}
运维命令:
time:查看当前时间戳,返回秒数和微秒数
dbsize:查看当前所选数据库下key的数量
bgrewriteaof:手动重写aof文件
save:手动保存rdb文件 bgsave:后台执行保存rdb文件
lastsave:最后保存rdb文件的时间
flushdb:清空当前所选数据库的数据
flushall:清空所有数据
info [section]:服务器状态及配置等信息
config get/set conf :查看或者设置配置信息
slowlog get :查看执行比较慢的日志记录
shutdown [save | nosave] :关闭服务器