Redis单例部署+常用配置
单例模式
准备
本地下载,远程服务器上载Redis官方tar包
Redis
- Redis官网下载 & Linux安装指导:https://www.redis.net.cn/download/
- 5.0.4压缩包:http://download.redis.io/releases/redis-5.0.4.tar.gz
- 官方全平台指导:https://www.redis.net.cn/tutorial/3503.html
SecureCRT8.5
Alt + P
召唤sftp窗口sftp> cd /opt
改变文件上载到服务器的目录为/opt
,默认是家目录,我用的是root用户,故此/root
。- 直接将windows系统中下载的redis-5.0.4.tar.gz拖入sftp窗口
sftp> put -r "C:\Users\INBreeze\Downloads\Compressed\redis-5.0.4.tar.gz"
安装
-
[root@redis1 opt]# tar -zxvf redis-5.0.4.tar.gz
,解压redis
-v 显示详细信息
-f 指定压缩后的文件名
-z 以gzip命令处理文件
-x 解包.tar文件
附:tar [-zxvf] [文件名.tar.gz] -C [目录绝对路径],解压tar.gz文件至已存在的目录中 -
[root@redis1 opt]# cd redis-5.0.4
,进入解压后的redis-5.0.4目录 -
Yum安装GCC,GCC-C++
[root@redis1 redis-5.0.4]# yum install gcc
[root@redis1 redis-5.0.4]# yum install gcc-c++
-
[root@redis1 redis-5.0.4]# make
,使用上面 gcc、gcc-c++ 编译器编译redis c/c++源码 -
[root@redis1 redis-5.0.4]# make install
,In order to install Redis binaries into /usr/local/bin——ReadME.md
有关 make install 命令的提问:https://segmentfault.com/q/1010000000487043 -
校验全局 Redis 命令是否存在&&查看客户端服务器版本
进入/usr/local/bin
目录查看redis命令列表,如果有 redis-benchmark / cli / server / sentinel,redis-check-aof / rdb[root@redis1 redis-5.0.4]# cd /usr/local/bin [root@redis1 bin]# ll ... [root@redis1 bin]# redis-server -v Redis server v=5.0.4 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=8655bd3a409d3fae [root@redis1 bin]# redis-cli -v redis-cli 5.0.4
且上述命令执行过程中未报错,则证明 Redis 完全安装成功。
启动
核心思想:不破坏不使用,解压文件redis.conf
默认配置文件启动Redis实例,而是复制一份副本至其他目录并由此启动
吐槽:这真的是一个极棒的思想,哎,悔不知少年恨,多听老人言。
-
备份redis.conf:拷贝一份redis.conf到
/root/myredis
目录,前提是你先mkdir
[root@redis1 redis-5.0.4]# mkdir /root/myredis
[root@redis1 redis-5.0.4]# cp redis.conf /root/myredis/redis.conf
-
进入
/root/myredis
,修改 redis.conf 配置文件内容【修改 redis.conf 文件或使用 CONFIG set 命令修改配置】[root@redis1 ~]# vi /root/myredis/redis.conf
第128行 128G:daemonize no ——》 daemonize yes
-
通过指定的配置文件,启动单例Redis服务
[root@redis1 ~]# redis-server /root/myredis/redis.conf
-
通过客户端命令访问本地Redis服务器
[root@redis1 ~]# redis-cli
,本地多个Redis服务器及配套端口则使用 redis-cli –p XXXX
127.0.0.1:6379>ping
,测试连通性,成功返回 PONE -
关闭Redis服务器
[root@redis1 ~]# redis-cli shutdown
修改配置方法
①修改 redis.conf 配置文件
配置文件在解压缩后的 cd /opt/redis-5.0.4/
目录中。一般都是将配置文件复制一份到home目录下,然后配置专门的目录,例如 /root/myredis/
专门存储 配置文件,数据库数据(dump),数据备份(aof,rdb)
daemonize no ——> yes
②在运行时命令更改配置
语法
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
实例
redis 127.0.0.1:6379> CONFIG SET loglevel "notice"
OK
redis 127.0.0.1:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
参数简述
redis.conf 文件包含的配置项说明【不全】
一、基础配置
1. 守护进程模式
//Redis默认不以守护进程运行,使用yes启用守护进程模式,让Redis服务在后台启动【不占用当前SSH会话】
daemonize no
2. PID文件存放位置
//当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile /var/run/redis.pid
3. Redis服务端口
//指定Redis监听端口,默认端口为6379,6379 ==> MERZ,取自意大利歌女Alessia Merz的名字
port 6379
4. 主机地址
//绑定的主机地址,一般来说,我们都是直接注释掉,使用服务器IP
bind 127.0.0.1
5. 包含指定配置文件
//可用在同一主机上多个Redis实例之间共用同一份配置文件,而各个实例又可覆写特定配置
include /root/myredis/redis.conf
二、Snapshot快照(官方),RDB持久化配置:
//此模式下Redis异步地将数据库转储到磁盘上。在调用异步转存时,Redis是停止接受写操作的
//如果想禁用RDB的话,直接将下列的持久化规则全部注释即可。
1. 配置内存数据持久化规则
//异步转存的时机由持久化规则决定
//指定在多长时间内,有多少次更新操作,就将内存数据持久化到数据文件。可多个条件组合
//Redis默认配置三个条件
//分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改
save 900 1
save 300 10
save 60 10000
save <seconds> <changes> 【运行时命令修改配置方式】
2. rdb持久化时是否压缩,默认为yes,采用LZF压缩,为节省CPU时间可关闭但会导致rdb文件巨大
rdbcompression yes
3. 指定rdb文件名,默认为dump.rdb
dbfilename dump.rdb
4. 指定rdb存放目录,默认当前目录
dir ./
5. 是否在当RDB被启用且后台备份时或者后台写失败的两种情况下禁止新的写入
stop-writes-on-bgsave-error yes
三、APPEND ONLY MODE(官方),AOF持久化配置(操作日志)
//AOF模式是对RDB模式的很好补充,补充在于——数据持久化的完整性
//RDB可能会因为意外情况(断电)丢失最后一段时间的数据,AOF可以很好的弥补最后丢失的操作
//如果AOF与RDB同时开启,Redis恢复时先读取AOF文件,如果不行再尝试读取RDB的文件
1. 是否开启AOF持久化模式
//默认是No状态,AOF与上面的RDB是可以同时运作的两种持久化模式。
//AOF是每当有更改操作(增删改)的时候,将当前操作记录在文档中,以达到相对完整持久化。最多丢失几秒的数据
appendonly no
2. 指定aof(Append Only File)文件名,默认为appendonly.aof
appendfilename appendonly.aof
3. 指定更新日志条件,共有3个可选值:
//no:只让操作系统在需要的时候刷新数据(快)
//always:每次写操作后,调用fsync异步同步将数据写到磁盘的aof文件(慢,安全)
//everysec:每秒异步同步数据到磁盘的aof文件一次(折衷,默认值)
appendfsync everysec
四、客户端配置
1. 设置同一时间最大客户端连接数
//Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,默认0 代表无限制
//一般来说在Linux系统下,一个文件可以创建无限制个文件描述符,但通常会被内核kernel限制为10%内存
//当客户端连接数到达限制时,Redis会向客户端返回最大连接错误信息
maxclients 10000
2. 客户端连接闲置X秒后被关闭
timeout 300
3. 设置Redis连接密码
//如果配置了连接密码,客户端连接Redis时需要通过AUTH <password>命令提供密码,默认关闭
//警告:由于Redis运行速度相当快,外部用户可以尝试高达每秒 150k 次登陆。这意味着需要强密码否则非常容易被破解。
requirepass foobared
//WARNING! Virtual Memory is deprecated in Redis 2.4
五、Redis系统设定
1. 指定Redis日志记录级别,默认为notice
//debug (全信息,对开发/测试很有用)
//verbose (许多罕有的有用信息,不像调试级别那么全面而混乱)
//notice (适度冗长,这可能是您在生产中想要的)
//warning (仅重要的,致命的信息)
loglevel notice
2. 指定Redis日志文件名
//""也用于Redis以standard output至日志
//注意,如果使用标准输出进行日志记录,且为守护进程模式则日志将被发送到/dev/null
logfile ""
3. 设置Redis数据库的数量
//默认数据库为0,可用运行时命令 SELECT <dbid> 选择当前使用的数据库
databases 16
4. 指定Redis最大内存限制
//达到最大内存后,Redis会先尝试清除已到期或即将到期的Key
//当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。
maxmemory <bytes>
5. 设定单个EntrySet集合最多存储个数。单个value最大值
//在超过一定的数量或者最大value的临界值时,采用另一种特殊的哈希算法
//小于临界值的时候,使用更加高效的数据结构对哈希进行编码
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
6. 指定是否激活重置哈希,默认为开启
//rehash惰性策略:对哈希表进行越多操作,将有更多的 rehash 机会
//若Redis处于空闲状态则不会有机会完成 rehash 操作,这时哈希表会占用更多内存
activerehashing yes
六、主从模式相关设定
1. 设置当本机的master主机IP及端口
slaveof <masterip> <masterport>
2. 设置master链接密码
masterauth <master-password>
七、集群模式相关设定
1.启用集群模式
cluster-enabled yes
2.集群节点配置文件
cluster-config-file nodes-6379.conf
3.集群节点超时失联阈值
cluster-node-timeout 15000
最后:强推凌云大佬,质量至少是全网10%
2019.03 Redis系列博客