云计算-架构|不能不学的Redis基础

理论 工作原理:
云计算-架构|不能不学的Redis基础
文章图片

Redis重要特性
1.速度快
c语言写的
代码优雅
单线程架构
2.支持多种数据结构
字符串,哈希,列表,集合,有序集合
3.丰富的功能
天然计数器
健过期功能(过期自动消失,双11数据)
消息队列
4.支持客户端语言多
php,java,python
5.数据持久化
所有的数据都运行在内存中
支持2种格式持久化数据AOF RDB AOF&RDB(保存之后的数据,重启还在)
6.自带多种高可用架构
主从
哨兵
集群
redis应用场景
1.缓存-键过期时间
把session会话存在redis,过期删除
缓存用户信息,缓存Mysql部分数据,用户先访问redis,redis没有再访问mysql
商城优惠卷过期时间
2.排行榜-列表&有序集合
热度/点击数排行榜
直播间礼物积分排行
3.计数器-天然支持计数器
帖子浏览数
视频播放数
评论数
点赞/踩
4.社交网络-集合
粉丝
共同好友
兴趣爱好
标签
5.消息队列-发布订阅
配合ELK缓存收集来的日志
安装redis 1.准备安装和数据目录
mkdir -p /data/soft
mkdir -p /opt/redis_cluster/redis_6379/{conf,logs,pid}
2.下载redis安装包
cd /data/soft
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
cd /opt/redis_cluster/redis
编译并安装
make && make install
云计算-架构|不能不学的Redis基础
文章图片

5.编写配置文件
vim /opt/redis_cluster/redis_6379/conf/6379.conf
添加:
bind 127.0.0.1 192.168.2.130
port 6379
daemonize yes
pidfile /opt/redis_cluster/redis_6379/pid/redis_6379.pid
logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log
databases 16
dbfilename redis.rdb
dir /opt/redis_cluster/redis_6379
保存退出
6.启动当前redis服务(不打后面配置文件路径,以默认配置文件启动)
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
7.关闭redis服务
redis-cli shutdown
8.登录redis
云计算-架构|不能不学的Redis基础
文章图片

redis基本操作命令
1.全局命令

KEYS *#列出所有键值名,但在企业环境禁止使用(显示文件量大,占满内存) DBSIZE#查看有多少键值数 EXISTS #查看键值是否存在 EXPIRE k2 20 #设置K2过期时间为20秒,20秒后k2自动取消 PERSIST k2#取消k2的过期时间 TTL k2 #查看k2的生命周期 TYPE#查看数据类型

云计算-架构|不能不学的Redis基础
文章图片

2.字符串类型:string
SET k3 3#创建键值 GET k3#查看键值 DEL k2#删除键值 INCR k3#键值k3为整数,递增加1 INCRBY k3 10#递增k3的量值10 MSET k4 v4 k5 v5 k6 v6 k7 v7#批量创建键值 MGET k4 k5 k6 k7#批量查看键值

云计算-架构|不能不学的Redis基础
文章图片

3.列表:list
RPUSH list1 1 2 3 4#创建列表list1,值为1 2 3 4 RPUSH list1 5 6 7 8#在list1右侧添加5 6 7 8 LPUSH list1 0#在list1左侧添加0 LRANGE list1 0-1#查看list1所有值 RPOP list1#删除右侧最后一个值 LPOP list1#删除左侧第一个值 LTRIM list1 0 2#仅保留前3位,其他值删除

4.哈希:hash
HMSET user:1000 username zhangsan age 17 job it#创建hash键值user:1000 HGET user:1000 username#查看键值中username参数 HGET user:1000 age#查看键值中age参数 HGET user:1000 job#查看键值中job参数 HMSET user:1000 tel 18866668888#添加值tel

云计算-架构|不能不学的Redis基础
文章图片

5.集合:set(集合不能有重复,列表可以)
SADD set1 1 2 3#创建集合set1 SMEMBERS set1#查看集合set1 SADD set1 1 4#为集合set1添加值1 4 ,但集合特性是去除重复,所以1无法再添加 SREM set1 1 4#删除集合的值1 4 sadd set2 1 4 5#创建第二个集合set2 SDIFF set1 set2#求差集 SINTER set1 set2 #求合集(交集) SUNION set1 set2 #求并集

1.redis持久化:
RDB:生成时间点快照,保存于硬盘
优点:速度快,适合做备份,能做主从复制,单开子进程进行rdb操作不影响主业务
缺点:会有部分数据丢失
AOF:记录所有写操作命令,通过再次执行这些命令还原数据
优点:最大程度保证数据不丢失
缺点:日志记录量太大
2.RDB配置:
登录redis
redis-cli
保存命令
bgsave rdb
云计算-架构|不能不学的Redis基础
文章图片

修改配置文件:
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.重启redis
redis-cli shutdown
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
云计算-架构|不能不学的Redis基础
文章图片

Redis主存复制群集 环境:
主服务器:192.168.2.130
从服务器:192.168.2.135
【云计算-架构|不能不学的Redis基础】1.redis主从复制
为解决单点故障把数据复制到一个或多个副本副本服务器(从服务器),实现故障恢复和负载均衡
2.开启第二台服务器,安装redis
(1)把第一台服务器的redis安装目录,scp到第二台服务器上
scp -rp /opt/redis_cluster/ root@192.168.2.135:/opt
(2)在第二台服务器上,make install安装redis
进入二进制文件目录
cd /opt/redis_cluster/redis
安装
make install
vim /opt/redis_cluster/redis_6379/conf/6379.conf
修改配置:
bind 127.0.0.1 192.168.2.135
slaveof 192.168.2.130 6379
保存退出
(3)启动服务
redis-server /opt/redis_cluster/redis_6379/conf/6379.conf
(4)主服务器新建键值,测试从服务器自动同步
云计算-架构|不能不学的Redis基础
文章图片

验证:从服务器
云计算-架构|不能不学的Redis基础
文章图片

(5)从服务器在同步过程中,只能复制主数据库的数据,不能手动添加修改数据;
云计算-架构|不能不学的Redis基础
文章图片

如果从服务器非要修改数据,需要断开同步:
云计算-架构|不能不学的Redis基础
文章图片

再次验证:可以修改、创建数据
云计算-架构|不能不学的Redis基础
文章图片

    推荐阅读