03.Redis单实例部署之基于RDB持久化

一、部署Redis单实例[RDB持久化]

## 操作系统环境说明

[[email protected] ~]# cat /etc/redhat-release;uname -r;uname -m;
CentOS Linux release 7.5.1804 (Core)
3.10.0-862.el7.x86_64
x86_64
[[email protected] ~]# firewall-cmd --state       ## 查看firewall墙的状态
not running
[[email protected] ~]# free -h                    ## 查看当前系统可用的内容
              total        used        free      shared  buff/cache   available
Mem:           1.8G        113M        1.3G         17M        384M        1.5G
Swap:          2.0G          0B        2.0G
[[email protected] ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   47G  1.6G   46G   4% /
devtmpfs                 899M     0  899M   0% /dev
tmpfs                    911M     0  911M   0% /dev/shm
tmpfs                    911M   18M  894M   2% /run
tmpfs                    911M     0  911M   0% /sys/fs/cgroup
/dev/sdb1                100G   54M  100G   1% /data             ## 一会把软件安装在该目录挂载的磁盘下
/dev/sda1               1014M  142M  873M  14% /boot
tmpfs                    183M     0  183M   0% /run/user/1000
[[email protected] ~]# ifconfig ens33|awk -F " " ‘NR==2{print $2}‘     ## 外网IP地址
10.0.0.31
[[email protected] ~]# ifconfig ens34|awk -F " " ‘NR==2{print $2}‘     ## 内网IP地址
172.16.1.31

## 软件及实例部署规划

/data/apps               # 该目录下安装Redis软件,安装后就是/data/apps/redis
/data/redis/6379         # 该目录下部署Redis 6379实例
  /data/redis/6379/conf  # 存放redis 6379实例的配置文件
  /data/redis/6379/data  # 存放redis 6379实例的持久化数据
  /data/redis/6379/logs  # 存放redis 6379实例的日志文件
  /data/redis/6379/run   # 存放redis 6379实例的pid和socket文件 

## 准备的配置文件内容

相关参数的含义可以参考博文:https://www.cnblogs.com/chenliangc/p/12324731.html

## Basic parameters
bind 172.16.1.31
protected-mode yes
port 6379
maxmemory 1GB
requirepass chenliang
daemonize yes
databases 16
syslog-enabled no
loglevel notice
logfile /data/redis/6379/logs/redis.log
pidfile /data/redis/6379/run/redis.pid
unixsocket /data/redis/6379/run/redis.sock

## Client
maxclients  10000
timeout 300
tcp-backlog 511
tcp-keepalive 60

## RDB Persistence
save 900 1                     # 900秒内有1个key被修改,就进行rdb持久化
save 300 10                    # 300秒内有10个key被修改,就进行rdb持久化
save 60 10000                  # 60秒内有10000个key被修改,就进行rdb持久化
dir /data/redis/6379/data/     # 设置持久化数据文件的保存位置
dbfilename dump.rdb            # 设置rdb持久化的数据文件名称,默认也是dump.rdb
rdbcompression yes             # 对于rdb持久化的数据文件是否进行压缩,默认也是yes
rdbchecksum yes                # 是否检查rdb持久化数据文件,默认也是yes
stop-writes-on-bgsave-error no # rdb持久化出现错误时,redis主进程继续响应客户端的写操作

## Redis软件的安装

## 创建redis用户(需要设置密码,需要远程登录,需要有家目录,不要让其用户和密码过期)
[[email protected] ~]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow
[[email protected] ~]# useradd redis
[[email protected] ~]# echo "redis"|passwd --stdin redis
Changing password for user redis.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow

## 安装相关的依赖包
[[email protected] ~]# yum -y install gcc gcc-c++ make
[[email protected] ~]# rpm -qa install gcc gcc-c++ make
gcc-4.8.5-39.el7.x86_64
gcc-c++-4.8.5-39.el7.x86_64
make-3.82-24.el7.x86_64

## 创建相关的目录
[[email protected] ~]# mkdir /data/apps
[[email protected] ~]# ls -ld /data/apps/
drwxr-xr-x 2 root root 6 Feb 19 09:01 /data/apps/

## 上传软件包,进行安装
[[email protected] ~]# mkdir tools
[[email protected] ~]# cd tools
[[email protected] tools]# rz
[[email protected] tools]# ll redis-4.0.14.tar.gz
-rw-r--r-- 1 root root 1740967 Oct 26 14:54 redis-4.0.14.tar.gz
[[email protected] tools]# tar xf redis-4.0.14.tar.gz -C /data/apps
[[email protected] tools]# ls -ld /data/apps/redis-4.0.14/
drwxrwxr-x 6 root root 309 3月  19 2019 /data/apps/redis-4.0.14/
[[email protected] tools]# cd /data/apps/redis-4.0.14
[[email protected] redis-4.0.14]# make

## 做软链接并更改属主/组
[[email protected] redis-4.0.14]# cd
[[email protected] ~]# ln -sv /data/apps/redis-4.0.14/ /data/apps/redis
‘/data/apps/redis’ -> ‘/data/apps/redis-4.0.14/’
[[email protected] ~]# chown -R redis:redis /data/apps/redis/
[[email protected] ~]# ls -ld /data/apps/redis/
drwxr-xr-x 3 redis redis 17 Feb 19 09:06 /data/apps/redis/

## 配置环境变量
[[email protected] ~]# ls -ld /data/apps/redis/src/
drwxrwxr-x 3 redis redis 8192 2月  19 15:43 /data/apps/redis/src/
[[email protected] ~]# echo "PATH=/data/apps/redis/src:$PATH" >>/etc/bashrc
[[email protected] ~]# source /etc/bashrc
[[email protected] ~]# which redis-cli
/data/apps/redis/bin/redis-cli

## 部署一个Redis 6379实例

## 创建redis 6379实例的相关目录
[[email protected] ~]# mkdir /data/redis/6379/{conf,data,logs,run} -p
[[email protected] ~]# tree /data/redis/
/data/redis/
`-- 6379
    |-- conf
    |-- data
    |-- logs
    `-- run

5 directories, 0 files

## 为redis 6379实例准备配置文件
cat >>/data/redis/6379/conf/redis.conf<<EOF
## Basic parameters
bind 172.16.1.31
protected-mode yes
port 6379
maxmemory 1GB
requirepass chenliang
daemonize yes
databases 16
syslog-enabled no
loglevel notice
logfile /data/redis/6379/logs/redis.log
pidfile /data/redis/6379/run/redis.pid
unixsocket /data/redis/6379/run/redis.sock

## Client
maxclients  10000
timeout 300
tcp-backlog 511
tcp-keepalive 60

## RDB Persistence
save 900 1
save 300 10
save 60 10000
dir /data/redis/6379/data/
dbfilename dump.rdb
rdbcompression yes
rdbchecksum yes
stop-writes-on-bgsave-error no
EOF

## 查看配置文件
[[email protected] ~]# ll /data/redis/6379/conf/redis.conf
-rw-r--r-- 1 root root 499 Feb 19 09:14 /data/redis/6379/conf/redis.conf

## 准备redis 6379实例的配置文件
   ## https://www.cnblogs.com/chenliangc/p/11746400.html 博文件中脚本内容复制
   ## 在/data/redis/6379目录下,创建一个redisd文件,把复制的内容粘贴并保存
   ## chmod 700 /data/redis/6379/redisd  更改权限为700

## 更改/data/redis/6379目录及目录下所有文件的属主/组为redis
[[email protected] ~]# chown -R redis:redis /data/redis/6379
[[email protected] ~]# ls -ld /data/redis/6379/
drwxr-xr-x 6 redis redis 67 Feb 19 09:18 /data/redis/6379/

## 启动redis 6379实例
[[email protected] ~]# /data/redis/6379/redisd start
Start redis[6379] service                                  [  OK  ]
[[email protected] ~]# netstat -lntup|grep redis
tcp  0   0 172.16.1.31:6379     0.0.0.0:*    LISTEN   19758/redis-server  

## 加入开机自启动
[[email protected] ~]# echo -ne "\n# Boot start redis service[6379]. USER:chenliang TIME:$(date +%F)\n/data/redis/6379/redisd start\n" >>/etc/rc.local
[[email protected] ~]# tail -2 /etc/rc.local
# Boot start redis service[6379]. USER:chenliang TIME:2020-02-19
/data/redis/6379/redisd start
## redis相关命令的简单介绍

redis-sentinel   # 用来启动redis sentinel服务,sentinel是一个单独的服务
redis-server     # 用来启动redis服务
redis-cli        # 用来连接redis服务和sentinel服务
redis-check-rdb  # 检测RDB持久化生成的文件
redis-check-aof  # 检测AOF持久化生成的文件
redis-benchmark  # 性能测试工具,测试Redis在当前系统下的读写性能
redis-trib.rb    # 用来管理Redis-cluster集群的一个命令
## 通过redis-cli命令连接redis 6379实例

## 通过ip+端口的方式连接redis 6379
[[email protected] ~]# redis-cli -h 172.16.1.31 -p 6379 -a chenliang
172.16.1.31:6379>
172.16.1.31:6379> 

## 通过socket文件连接redis6379
[[email protected] ~]# redis-cli -s /data/redis/6379/run/redis.sock  -a chenliang
redis /data/redis/6379/run/redis.sock>
redis /data/redis/6379/run/redis.sock> 

## 连接的相关参数说明
-h  指定可连接到redis 6379实例的IP地址
-p  redis 6379实例的监听的端口
-a  指定密码,前期在配置文件中配置的密码就是chenliang
-s  指定redis 6379实例的socket文件,前提是配置文件中得配置哈;

## redis相关命令的简单介绍

redis-sentinel   # 用来启动redis sentinel服务,sentinel是一个单独的服务
redis-server     # 用来启动redis服务
redis-cli        # 用来连接redis服务和sentinel服务
redis-check-rdb  # 检测RDB持久化生成的文件
redis-check-aof  # 检测AOF持久化生成的文件
redis-benchmark  # 性能测试工具,测试Redis在当前系统下的读写性能
redis-trib.rb    # 用来管理Redis-cluster集群的一个命令

## 通过redis-cli命令连接redis 6379实例

## 通过ip+端口的方式连接redis 6379
[[email protected] ~]# redis-cli -h 172.16.1.31 -p 6379 -a chenliang
172.16.1.31:6379>
172.16.1.31:6379> 

## 通过socket文件连接redis6379
[[email protected] ~]# redis-cli -s /data/redis/6379/run/redis.sock  -a chenliang
redis /data/redis/6379/run/redis.sock>
redis /data/redis/6379/run/redis.sock> 

## 连接的相关参数说明
-h  指定可连接到redis 6379实例的IP地址
-p  redis 6379实例的监听的端口
-a  指定密码,前期在配置文件中配置的密码就是chenliang
-s  指定redis 6379实例的socket文件,前提是配置文件中得配置哈;

## 看一看redis是什么角色

redis服务(这里就是redis 6379实例)一启动,它默认的角色是Master。

172.16.1.31:6379> info replication
# Replication
role:master          # 角色:master
connected_slaves:0   # 连接slave个数:0
master_replid:414c8302c9996957b1f70921c72e7d2e1dde3a33
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
redis /data/redis/6379/run/redis.sock>

二、RDB持久化相关知识点总结

01:RDB持久化是Redis默认的持久化,也就是默认是开启的;若想关闭,设置save ""即可。

02:RDB持久化是在设置的时间间隔内生成数据集的快照,快照在磁盘上的体现是一个文件,
    这个文件始终只有一个,不管你的数据集有多大,名称默认为dump.rdb,不能直接查看
    其内容和进行二次的编辑。

03:RDB持久化生成的数据文件(dump.rdb)大小比实际数据大小在小,因为它是压缩了的。

04:Redis在进行RDB持久化时是使用bgsave命令for出一个后台子进程来完成持久化的工
    作;这样的好处是不会影响Redis仅有的一个主进程继续响应客户端的操作;

05:RDB持久化时是后台的子进程来工作,若在持久化数据过程中,出现了错误(例如磁盘满
    了或损坏了),Redis的主进程是否还接受客户端的操作呢?这个其实是redis服务的一
    个参数来让其决定,该参数是stop-writes-on-bgsave-error,默认是yes,也就是
    redis主进程不响应客户端的写操作;若是no,则表示继续响应客户端的读写操作;

06:如果数据量比较大的时候,又频繁的进行RDB持久化,此时可能会阻塞服务器对客户端
    的请求,因为RDB的持久化实际是打快照,打快照就得占用服务器的物理内存;

07:RDB持久化在进行持久化的过程中是先生成一个dump.rdb.temp的临时文件,当数据持
    久化工作完成后,替换掉之前的dump.rdb文件,这样的好处是当服务或服务器在数据
    持久化进行时发生宕机,不会影响之前持久化的数据,保证了之前持久化数据的完整性。

08:当在大数据集的时候,RDB持久化的数据在加载或恢复时要比AOF持久化的要快;

09:RDB持久化不能做到实时或秒级的数据持久,因此对数据有实时持久化的需求下,RDB持
    久化就不太适合了;

原文地址:https://www.cnblogs.com/chenliangc/p/12329733.html

时间: 2024-10-13 22:15:24

03.Redis单实例部署之基于RDB持久化的相关文章

redis单实例、多实例、主从同步实战

[安装redis单实例实战] yum -y install gcc gcc-c++    #安装编译工具 cd /opt wget -c http://download.redis.io/releases/redis-3.0.5.tar.gz   #下载包 tar xf redis-3.0.5.tar.gz     #解压 cd redis-3.0.5 make MALLOC=libc  #编译 make PREFIX=/usr/local/redis install  #安装 echo 'PA

redis 单实例安装

单实例安装 近些年,由于内存技术的提升.造价的下降,越来越多企业的服务器内存已增加到几百G.这样的内存容量给了内存数据库一个良好的发展环境. 而使用Redis是内存数据库的一股清流,渐有洪大之势.下面就来接触下redis.从安装开始. 1.1 安装 1.1.1 安装 从redis 官网下载:http://download.redis.io/releases/redis-stable.tar.gz 也可以在http://download.redis.io/releases/ 上查找自己想要的版本.

Redis单节点部署

安装Redis 由于REDIS使用单线程处理请求,CPU的快慢最对REDIS的性能有较大影响,官方建议INTEL的CPU,其效率能比AMD高一倍左右. 下载Redis:wget http://download.redis.io/releases/redis-3.2.6.tar.gz 在安装Redis之前,需要安装Redis的依赖程序tcl,如果不安装tcl在Redis执行make test的时候就会报错的哦. 1 $ yum install -y tcl tcl-devel yum instal

Redis-No.03 Redis单台服务器创建多个实例

1.复制redis.conf文件 cp -rf redis.conf redis_6380.conf cp -rf redis.conf redis_6381.conf 2.修改redis_6380.conf.redis_6381.conf文件 daemonize yes pidfile /var/run/redis_6380.pid port 6380 logfile logfile/var/log/redis/redis_6380.log daemonize yes pidfile /var

性能测试二十四:环境部署之Redis多实例部署

由于redis服务端是单线程实现的,因此只能占用CPU的单核,为了充分利用CPU资源,可以在一台服务器上同时启动多个redis-server实例 首先删除之前的rdb.aof文件 注释掉3个save appendonly改为no 配置方法: 每个实例创建一个conf文件 修改每个conf文件中的端口号 启动不同实例时指定不同的配置文件 复制一份conf,命名为6380.conf 该端口号.保存的文件名为6380 重启 关闭已启动的Redis进程 启动Redis,加载两个配置文件 使用查看进程和r

Redis单实例数据迁移到集群

环境说明 单机redis 192.168.41.101:6379 redis集群 192.168.41.101:7000 master 192.168.41.101:7001 master 192.168.41.101:7002 192.168.41.102:7000 master 192.168.41.102:7001 192.168.41.102:7002 迁移步骤 查看集群状态及节点槽分布 [[email protected] bin]# ./redis-cli -c -p 7000 12

单实例redis分布式锁的简单实现

redis分布式锁的基本功能包括, 同一刻只能有一个人占有锁, 当锁被其他人占用时, 获取者可以等待他人释放锁, 此外锁本身必须能超时自动释放. 直接上java代码, 如下: package com.test; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import jav

(6) tomcat多实例部署

Tomcat 的基本组成 tomcat的单实例部署见https://www.cnblogs.com/liliyang/p/9742284.html 安装好之后,看下目录结构: [[email protected] tomcat]# ll total 96 drwxr-xr-x 2 root root 4096 Aug 28 00:08 bin drwxr-xr-x 3 root root 198 Oct 5 12:30 conf drwxr-xr-x 2 root root 4096 Aug 2

redis多实例&amp;分片&amp;jedis的使用

接下来学习redis多实例的部署.数据分片,以及jedis API的使用. redis多实例部署 一般单个redis的进程是不能满足实际需求的,需要在单台服务器上部署多个redis进程,充分发挥cpu的效能,多台服务器上的redis进程将组成庞大的集群,多的一般部署达到数千个redis进程. 暂时不考虑高可用的情况,下面在一台centos6.5上部署三个redis实例,要想实现部署需要修改redis.conf文件,需要修改服务端口号.日志文件编号.rdb文件编号等,下面边查看常用配置边修改. (