Redis学习+集群搭建+持久化+主从复制(详细学习)(上)

简介: Redis学习+集群搭建+持久化+主从复制(详细学习)(上)
+关注继续查看

Redis学习

一,redis简介

1.redis是什么?

redis是一个完全开源的非关系型数据库,遵守BSD协议,是一个高性能的key-value数据库

特点:


redis支持持久化,可以将数据读取到内存,加快访问的读取,第二次读取中可以直接将数据读取到内存中使用

redis不仅支持key-value类型,同时还提供了 list,set,zset,hash等数据类型

redis支持数据的备份,即master-slave模式为备份模式

redis支持cluster模式,支持集群化控制


2.redis优势?

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s

丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作

原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来

丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性

二,redis部署

一,windows安装redis

注意:不建议使用,redis官网提到过,redis没用面向win系统开发,都使用在linux系统来使用

1.下win中redis包

win:https://github.com/tporadowski/redis/releases

2.将包解压到win本地

image

3.打开cmd终端,切换到redis的存放目录

redis-server.exe redis.windows.conf     #启动redis服务

4.使用redis-cli客户端程序安装即可

redis-cli.exe -h 127.0.0.1 -p 6379

二,linux安装redis

1.网络安装redis

1. #yum源下载
2. yum -y install redis-server

2.源码包安装redis

官网下载:Download | Redis

1.准备安装和数据目录
1. mkdir -p /data/soft
2. mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}
2.下载redis安装包
1. cd /data/soft
2. wget http://download.redis.io/releases/redis-5.0.7.tar.gz
3.解压redis到/opt/redis_cluster/
tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/
ln -s /opt/redis_cluster/redis-5.0.7  /opt/redis_cluster/redis
4.切换目录安装redis
1. cd /opt/redis_cluster/redis
2. make && make install
5.编写redis启动配置文件
vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
bind 127.0.0.1 192.168.2.1      #指定启动地址
port 6379                       #端口号
daemonize yes                   
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid        #存放PID的文件目录
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log       #存放日志的文件目录
databases 16
dbfilename redis.rdb                        #数据库文件
dir /opt/redis_cluster/redis_6379           #群集文件
保存退出
6.启动当前的服务
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
7.关闭服务
redis-cli shudown
8.登录
redis-cli -h 127.0.0.1 -p 6379          #指定redis的地址,和端口号

三,redis命令

一,redis 键(key)

image.png

二,redis 字符串(string)image.png三,redis 哈希(hash)

1. Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
2. Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

image.png

四,redis 列表(list)

image.png

五,redis 集合(set)

image.png

六,reids 有序集合(sorted set)image.pngimage.png

四,redis持久化

1.持久化类型

rdb方式:

rdb:是redis默认的持久化方法,rdb方法是通过快照完成的,他保存的是某一时的数据并不关注过程


优点:


rdb是二进制压缩文件,占用空间小,便于传输(传给slave)


主进程fork子进程,可以最大化redis性能


使用RDB文件来恢复数据快


缺点:


不保证数据完整性,会丢失最后一次快照以后更改的所有数据


父进程在fork子进程的时候如果主进程比较大会阻塞


aof方式:

aof:开启aof持久化后redis将所有对数据进行写入的命令(以及参数),记录到aof文件,以此达到记录数据库状态的目的,这样当redis重启后只要按顺序回放这些命令就会恢复到原始状态了


优点:

AOF存储命令操作

大概率保证数据不丢失


缺点:

日志量巨大

ROB与AOF对比

RDB存某个时刻的数据快照,采用二进制压缩存储,AOF存操作命令,采用文本存储(混合);

RDB性能高,AOF性能较低。

RDB在配置触发状态会丢失最后一次快照以后更改的所有数据,AOF设置每一秒保存一次,则最多丢2秒数据

redis以主服务器模式运行,RDB不会保存过期键值对数据,redis以从服务器模式运行,rdb会保存过期键值对,当主服务器向从服务器同步,再清空过期键值对

aof写入文件时,对过期的key会追加一条del命令,当执行AOF重写,会忽略过期key和del命令


应用场景

内存数据库rdb+aof数据不容易丢失

缓存数据器rdb性能高 不建议使用aof(性能差)

在数据还原时 有rdb+aof则还原aof,因为rdb会造成文件的丢失,aof相对数据要完整

2.rdb配置

redis-cli   登录redis
bgsave      rdb保存命令
 
vim /opt/redis_cluster/redis_6379/conf/6379.conf    
添加:
save 900 1           #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。
save 300 10          #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。
save 60 10000        #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照

3.aof配置

vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
appendonly yes          #启用AOF持久化
appendfilename "redis.aof"  #指定AOF文件名
appendfsync everysec        #每秒同步一次

4.设置完成后,重启服务

1. redis-cli shutdown
2. redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
存储 JSON 自然语言处理
Redis基础学习
Redis基础学习
38 0
|
1月前
|
存储 消息中间件 缓存
Redis 学习 | Redis 初识与安装
Redis 学习 | Redis 初识与安装
|
1月前
|
存储 分布式计算 NoSQL
Python | Python学习之Redis交互详解
Python | Python学习之Redis交互详解
|
2月前
|
存储 NoSQL Redis
Redis底层学习(六)—存储类型-ZSet篇
Redis底层学习(六)—存储类型-ZSet篇
|
2月前
|
存储 NoSQL Redis
Redis底层学习(五)—存储类型-Set篇
Redis底层学习(五)—存储类型-Set篇
|
2月前
|
存储 NoSQL Java
Redis底层学习(四)—存储类型-Hash篇
Redis底层学习(四)—存储类型-Hash篇
|
2月前
|
存储 消息中间件 NoSQL
Redis底层学习(三)—存储类型-List篇
Redis底层学习(三)—存储类型-List篇
|
2月前
|
存储 缓存 JSON
Redis底层学习(二)—存储类型-String篇
Redis底层学习(二)—存储类型-String篇
|
2月前
|
存储 缓存 NoSQL
Redis底层学习(一)—概述篇
Redis底层学习(一)—概述篇
|
2月前
|
存储 NoSQL Redis
【Redis 系列】redis 学习 18,redis 存储结构原理 2
我正在参与掘金创作者训练营第4期,点击了解活动详情,一起学习吧! 咱们接着上一部分来进行分享,我们可以在如下地址下载 redis 的源码
推荐文章
更多