架构第二十章:redis

一、数据库分类 ***

关系型: 安全、速度稍慢

mysql oracle sqlserver db2 postgresql

非关系型:速度快,安全性稍差
		redis mongodb Elasticsearch

二、Redis重要特性

1.速度快

c语言写的

代码优雅

单线程架构,并发能力稍差,但可以用集群弥补

2.支持多种数据类型

字符串,哈希,列表,集合,有序集合

3.丰富的功能

天然计数器

健过期功能

消息队列

4.支持客户端语言多

php,java,python

5.数据持久化(memcache 无法持久化)

所有的数据都运行在内存中

支持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

5.编写配置文件

vim /opt/redis_cluster/redis_6379/conf/6379.conf

添加:

bind 127.0.0.1 192.168.8.10

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-cli

远程登录

redis-cli -h 192.168.8.10 -p 6379

#####################################################################

redis基本操作命令

1.全局命令

KEYS * #列出所有键值名,但在企业环境禁止使用

DBSIZE #查看有多少键值数

EXISTS #查看键值是否存在

EXPIRE k2 20 #设置K2过期时间为20秒,20秒后k2自动取消

PERSIST k2 #取消k2的过期时间

TTL k2 #查看k2的生命周期

TYPE #查看数据类型

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 #批量查看键值

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

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-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.重启redis

redis-cli shutdown

redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

######################################################################################

环境:

主服务器:192.168.8.10

从服务器:192.168.8.20

1.redis主从复制

为解决单点故障把数据复制到一个或多个副本副本服务器(从服务器),实现故障恢复和负载均衡

2.开启第二台服务器,安装redis

(1)把第一台服务器的redis安装目录,scp到第二台服务器上

scp -rp /opt/redis_cluster/ root@192.168.8.20:/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.8.20

slaveof 192.168.8.10 6379

保存退出

(3)启动服务

redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

(4)主服务器上新建键值,测试从服务器自动同步

(5)从服务器在同步过程中,只能复制主数据库的数据,不能手动添加修改数据;

如果从服务器非要修改数据,需要断开同步:

redis-cli slaveof no one

相关推荐
Wh1teR0se10 分钟前
sqli_labs-10,11,12 --详细解析
数据库·web安全·网络安全
小龙.nice42 分钟前
数据库约束&表设计
数据库
古人诚不我欺1 小时前
mysql之基本常用的语法
android·数据库·mysql
胖头鱼的鱼缸(尹海文)1 小时前
数据库管理-第267期 23ai:Oracle Data Redaction演示(20241128)
数据库·oracle
liuxin334455661 小时前
林业产品推荐系统:Spring Boot架构设计
数据库·spring boot·后端
老王笔记1 小时前
DBA面试题-1
数据库·ffmpeg·dba
Python私教1 小时前
SQLModel与FastAPI结合:构建用户增删改查接口
数据库·oracle·fastapi
小生凡一2 小时前
为什么redis用跳表不用b+树,而mysql用b+树而不是跳表?
redis·b树·mysql
代码中の快捷键2 小时前
理解B+树
数据库
桃酥4032 小时前
数据库(总结自小林coding)|事务的四大特性、数据库的事务隔离级别、MySQL的执行引擎、MySQL为什么使用B+树来作索引
数据库·b树·mysql