NoSQL之Redis配置与优化

一、Redis 介绍

Redis 是开源的高性能键值对 NoSQL 数据库,基于内存运行,支持数据持久化与多种数据结构,具备分布式集群能力,广泛用于高并发、高读写效率场景。

核心特点

  1. 数据结构丰富:支持 String、Hash、List、Set、ZSet(有序集合),可直接在服务端操作数据,减少网络 IO。
  2. 高性能:单核处理小数据性能优异,读写速度极快。
  3. 持久化保障:支持 RDB 快照、AOF 日志两种持久化方式,重启可恢复数据。
  4. 分布式与高可用:Redis Cluster 无中心集群,支持主从复制、故障自动转移。
  5. 多数据库:默认 16 个独立数据库(0-15),支持数据隔离与移动。
  6. 内存管理:基于 zmalloc 封装 malloc/free,简洁高效。

二、Redis 作用

  1. 高性能缓存:减轻数据库压力,支撑高并发读写。
  2. 数据持久化存储:内存数据落地磁盘,重启不丢失。
  3. 分布式场景支撑:分布式锁、计数器、限流、消息队列。
  4. 复杂业务处理:利用列表、集合、有序集合实现排行榜、关注列表、去重统计。
  5. 高可用架构:主从复制、集群部署,避免单点故障。

三、Redis 实验步骤

实验 1:Redis 安装与基础配置

关闭防火墙与 SELinux

复制代码
systemctl stop firewalld
setenforce 0

安装依赖

复制代码
yum -y install gcc* zlib-devel

解压并编译 Redis

复制代码
tar xvzf redis-4.0.9.tar.gz
cd redis-4.0.9/
make
# 编译报错执行:make MALLOC=libc 或 make clean && make distclean
make PREFIX=/usr/local/redis install

建立软链接

复制代码
ln -s /usr/local/redis/bin/* /usr/local/bin/

执行安装脚本

复制代码
cd utils/
./install_server.sh

查看进程与端口

复制代码
netstat -anpt | grep redis

服务控制命令

复制代码
/etc/init.d/redis_6379 stop/start/restart/status

修改核心配置(/etc/redis/6379.conf)

复制代码
vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.10.101  # 监听地址
port 6379                       # 端口
daemonize yes                   # 守护进程
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis_6379.log

重启服务生效

复制代码
/etc/init.d/redis_6379 restart

Redis 命令工具使用

redis-cli 连接与测试

复制代码
# 本地连接
redis-cli
# 测试连通性
127.0.0.1:6379> ping  # 返回PONG正常
# 远程连接
redis-cli -h 192.168.10.101 -p 6379

帮助命令

复制代码
127.0.0.1:6379> help @list  # 查看List命令
127.0.0.1:6379> help set   # 查看set命令

redis-benchmark 性能测试

复制代码
# 100并发、10万请求测试
redis-benchmark -h 192.168.10.101 -p 6379 -c 100 -n 100000
# 100字节数据存取测试
redis-benchmark -h 192.168.10.101 -p 6379 -q -d 100
# 仅测试set、lpush
redis-benchmark -t set,lpush -n 100000 -q

Redis 数据库常用命令

基础键值操作

复制代码
127.0.0.1:6379> set teacher zhanglong
127.0.0.1:6379> get teacher

Key 管理命令

复制代码
KEYS *       # 查看所有键
KEYS v*      # 查看v开头键
EXISTS teacher  # 判断键是否存在
DEL v5       # 删除键
TYPE k1      # 查看值类型
RENAME v22 v2  # 重命名(会覆盖)
RENAMENX v2 teacher  # 安全重命名(目标存在不执行)
DBSIZE       # 查看键数量

多数据库操作

复制代码
SELECT 10    # 切换到库10
MOVE k1 1    # 将当前库k1移到库1
FLUSHDB      # 清空当前库
FLUSHALL     # 清空所有库

实验 2:Redis 持久化配置

**RDB 持久化配置(默认开启)**编辑配置文件

复制代码
vim /etc/redis/6379.conf
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/redis/6379
rdbcompression yes

AOF 持久化配置

复制代码
appendonly yes           # 开启AOF
appendfilename "appendonly.aof"
appendfsync everysec     # 每秒同步
aof-load-truncated yes
# AOF重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

重启服务并手动重写 AOF

复制代码
/etc/init.d/redis_6379 restart
127.0.0.1:6379> bgrewriteaof

Redis 性能管理与密码设置

查看内存信息

复制代码
127.0.0.1:6379> info memory

内存回收策略配置(配置文件)

复制代码
maxmemory-policy allkeys-lru  # 常用策略

设置密码

  • 临时生效(重启失效)

    127.0.0.1:6379> config set requirepass 123456

  • 永久生效(修改配置文件)

    vim /etc/redis/6379.conf
    requirepass 123456

带密码连接

复制代码
redis-cli -a 123456
# 或连接后认证
127.0.0.1:6379> auth 123456

安全关闭

复制代码
redis-cli -a 123456 shutdown
相关推荐
m0_514520572 小时前
HTML5中Vuex持久化插件中WebStorage的底层配置
jvm·数据库·python
nodcloud2 小时前
Chrome 142 更新导致点可云报表助手打印异常:启动服务仍提示启动的解决方案
前端·数据库·chrome
Dontla2 小时前
Audit Log(审计日志)介绍(对系统中关键操作行为记录,用户行为+系统变更+安全事件)中间件 / AOP、数据库层——数据库变更捕获(CDC)
数据库·中间件
a9511416422 小时前
Redis如何利用Redisson处理并发击穿
jvm·数据库·python
_Evan_Yao2 小时前
当AI能写SQL时,数据库表设计反而成了最后一道护城河
数据库·人工智能·后端·sql
2401_887724502 小时前
如何防止SQL注入利用存储过程_确保存储过程不拼字符串.txt
jvm·数据库·python
Aray12342 小时前
Redis服务端分片(Redis Cluster)详解
数据库·redis·缓存
m0_716430072 小时前
Laravel 迁移中外键约束错误的成因与修复方案.txt
jvm·数据库·python
2201_756847332 小时前
CSS如何利用CSS变量管理间距_统一定义盒模型数值
jvm·数据库·python