redis安装和常用用法

文章目录


前言

关系型数据库基于结构化表与事务 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


总结

关系型数据库强在事务与关联查询,非关系型数据库胜在高性能与扩展性,需结合业务数据特征、并发量等因素选择适配方案。

相关推荐
Dragon online2 小时前
数据分析师成长之路--从SQL恐惧到数据掌控者的蜕变
数据库·sql
VX:Fegn08953 小时前
计算机毕业设计|基于springboot + vue音乐管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
一招定胜负3 小时前
navicat连接数据库&mysql常见语句及操作
数据库·mysql
热心市民蟹不肉3 小时前
黑盒漏洞扫描(三)
数据库·redis·安全·缓存
chian_ocean3 小时前
openEuler集群 Chrony 时间同步实战:从零构建高精度分布式时钟体系
数据库
Databend3 小时前
构建海量记忆:基于 Databend 的 2C Agent 平台 | 沉浸式翻译 @ Databend meetup 上海站回顾及思考
数据库
αSIM0V4 小时前
数据库期末重点
数据库·软件工程
2301_800256114 小时前
【第九章知识点总结1】9.1 Motivation and use cases 9.2 Conceptual model
java·前端·数据库
不会写程序的未来程序员4 小时前
Redis 的核心机制(线程模型、原子性、Bigkey、单线程设计原因等)
数据库·redis
编程圈子4 小时前
灵动微MM32 芯片串口升级OTA功能开发5. 写入FLASH与跳转功能
数据库