文章目录
前言
关系型数据库基于结构化表与事务 ACID 特性,适用于复杂关联场景;非关系型数据库灵活应对海量非结构化数据,二者互补支撑不同业务需求。
一、关系型和非关系型数据库
关系型特点:
- 表格模型(行 + 列)
- 使用 SQL 语言
- 数据必须符合表结构
- 强事务 ACID
- 纵向扩展(升级硬件)
常见产品:MySQL、Oracle、PostgreSQL
非关系型特点:
- 键值对 / 文档 / 图结构存储
- 无需固定表结构
- 高并发、高可扩展
- 横向扩展(增加服务器节点)
常见产品:redis、mongodb、hbase、memcached
二、redis介绍
定义:开源、C 语言编写、基于内存、支持持久化的键值数据库。
特性:
- 高性能:读取可达 110000 次/s,写入 81000 次/s
- 数据结构丰富:string、list、hash、sets、sorted sets
- 支持持久化:数据可保存到磁盘
- 原子性:单线程避免并发锁问题
- 主从复制:数据备份
读写快速的原因: - 纯内存操作 → 避免磁盘 IO
- 单线程 → 避免锁开销
- I/O 多路复用 → 高并发
适用场景:
秒杀活动:库存扣减、订单写入,放到 Redis 避免数据库压力。
抖音热搜榜:用 sorted set 存储关键词 + 热度,实时排序。
注意:
在 Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。
redis使用学习网址:
中文网:https://www.tkcnn.com/redis/Getting-started.html
官网: https://redis.io/docs/latest/get-started/
三、redis安装部署
1、下载地址
redis 下载地址:http://download.redis.io/releases/
2、安装redis流程
#1关闭防火墙和增强服务
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#2安装依赖
yum install -y gcc gcc++ make
#3解压redis文件和编译安装
cd /opt/
tar zvxf redis-5.0.7.tar.gz -C /opt/
cd /opt/redis-5.0.7/
#由于Redis源码包中直接提供了 Makefile 文件,所以在解压完软件包后,不用先执行 ./configure 进行配置
make && make install prefix=/usr/local/redis
#4、创建软链接(添加到path路径),让Linux能直接找到redis的server文件
ln -s /usr/local/redis/bin/* /usr/local/bin/
#5执行脚本获取redis服务配置文件
cd /opt/redis-5.0.7/utils
./install_server.sh
#6查看redis端口号,是否启动成功
#net-tools包
netstat -antulp | grep redis
安装成功截图

3、服务控制
/etc/init.d/redis_6379 stop #停止
/etc/init.d/redis_6379 start #启动
/etc/init.d/redis_6379 restart #重启
/etc/init.d/redis_6379 status #状态
4、修改配置参数
vim /etc/redis/6379.conf
# 输入esc+:set nu显示行数
# 127.0.0.1 只能本机访问redis
# 192.168.10.14 别的服务器可以通过这个ip地址访问redis
bind 127.0.0.1 192.168.10.14 #70行,添加 监听的主机地址
port 6379 #93行,Redis默认的监听端口
daemonize yes #137行,启用守护进程
pidfile /var/run/redis_6379.pid #159行,指定 PID 文件
loglevel notice #167行,日志级别
logfile /var/log/redis_6379.log #172行,指定日志文件
# 修改配置文件后一定要重启
/etc/init.d/redis_6379 restart
四、redis命令工具
1、redis-cli
redis-server:启动redis服务,redis数据库存放数据的位置
redis-cli:客户端工具。其他服务器可以通过这个工具访问redis服务
语法:
redis-cli -h host -p port -a password
-h :指定远程主机
-p :指定 Redis 服务的端口号
-a :指定密码,未设置数据库密码可以省略-a 选项
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库
# 服务器通过cli访问redis
redis-cli -h 192.168.10.14 -p 6379
示例1:
其他服务器下载cli二进制文件,通过redis-cli访问redis
scp /usr/local/redis/bin/redis-cli root@192.168.10.15:/usr/local/bin/
chmod +x /usr/local/bin/redis-cli
直接在192.168.10.15通过redis-cli -h 192.168.10.14 -p 6379访问即可
示例2:
前提一定要:在配置文件/etc/redis/6379.conf里设置
bind 127.0.0.1 192.168.10.14 #70行,添加 监听的主机地址
通过第三方工具redis desktop manager访问

2、redis-benchmark压力测试
示例: redis-benchmark -c 100 -n 100000 → 100 并发,10 万请求
案例:测试 Redis 是否能支撑双十一秒杀
语法使用:
redis-benchmark 是官方自带的 Redis 性能测试工具,可以有效的测试 Redis 服务的性能。
基本的测试语法:redis-benchmark [选项] [选项值]。
-h :指定服务器主机名。
-p :指定服务器端口。
-s :指定服务器 socket
-c :指定并发连接数。
-n :指定请求数。
-d :以字节的形式指定 SET/GET 值的数据大小。
-k :1=keep alive 0=reconnect 。
-r :SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P :通过管道传输<numreq>请求。
-q :强制退出 redis。仅显示 query/sec 值。
--csv :以 CSV 格式输出。
-l :生成循环,永久执行测试。
-t :仅运行以逗号分隔的测试命令列表。
-I :Idle 模式。仅打开 N 个 idle 连接并等待
示例:
#向 IP 地址为 192.168.10.23、端口为 6379 的 Redis 服务器发送 100 个并发连接与
100000 个请求测试性能
redis-benchmark -h 192.168.10.23 -p 6379 -c 100 -n 100000
#测试存取大小为 100 字节的数据包的性能
redis-benchmark -h 192.168.10.161 -p 6379 -q -d 100
#测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能
redis-benchmark -t set,lpush -n 100000 -q
3、修复持久化文件
redis-check-rdb
redis-check-aof
五、redis常用命令
1、存取键值对
set:存放数据,命令格式为 set key value
get:获取数据,命令格式为 get key
set a1 sjj
get a1

2、模糊查询
keys * #查看所有健
keys k* #查看所有K开头的键
keys k? #查看当前数据库中以 k 开头后面包含任意一位的数据
keys k?? #查看当前数据库中以k开头后面跟着任意两位的数据

3、判断和删除
exists k1 #判断键k1是否存在
del k1 #删除键k1
type k1 #获取k1的值的类型

4、重命名
rename 旧键名 新键名
如果新键名与旧键名相同则覆盖对应的值
rename k2 k3

5、查看key数量和批量查看键和值
dbsize
mget 键1 键2 键3
dbsize # 键总数
mget k1 k2 k3 # 查看k1,k2,k3对应的值
6、设置及查看密码
config set requirepass 密码
auth 密码
config get requirepass
bash
config set requirepass 123456
auth 123456
config get requirepass

7、redis多数据库常用命令
bash
# 切换数据库
select 1 # redis数据库默认16个,0-15。直接选择对应序号即可
# 数据库之间数据移动
move k1 2 # 当前数据库的k1数据移动到2数据库
#清除数据库内数据
flushdb #清除当前数据库的数据
flushall #清除所有数据库数据

六、快照(rdb)恢复数据
1、写入数据

2、手动触发快照
bgsave
3、备份文件
mv /var/lib/redis/6379/dump.rdb /var/lib/redis/6379/dump.rdb.bak
4、清空文件
flushall
5、停止redis
/etc/init.d/redis_6379 stop
6、备份恢复
mv /var/lib/redis/6379/dump.rdb.bak /var/lib/redis/6379/dump.rdb
7、/etc/init.d/redis_6379 start
总结
关系型数据库强在事务与关联查询,非关系型数据库胜在高性能与扩展性,需结合业务数据特征、并发量等因素选择适配方案。