Redis 简介
什么是Redis?
Redis(Remote Dictionary Server)是一个开源的内存数据库,支持多种数据结构,常用作缓存、消息队列和会话存储。
主要特性
- 高性能:基于内存,读写速度极快
- 丰富的数据类型:String、Hash、List、Set、ZSet等
- 持久化:支持RDB和AOF两种持久化方式
- 高可用:支持主从复制、哨兵模式、集群模式
- 原子操作:所有操作都是原子性的
- 支持事务:通过MULTI/EXEC实现事务
应用场景
1. 缓存
redis
# 缓存用户信息
SET user:1001 '{"name":"GlowXQ","age":25}'
GET user:1001
# 设置过期时间
SETEX session:abc123 3600 "user_data"2. 计数器
redis
# 文章点赞数
INCR article:1001:likes
DECR article:1001:likes
GET article:1001:likes3. 排行榜
redis
# 游戏积分排行榜
ZADD leaderboard 9500 "player1"
ZADD leaderboard 8800 "player2"
ZADD leaderboard 9200 "player3"
# 获取前10名
ZREVRANGE leaderboard 0 9 WITHSCORES4. 消息队列
redis
# 生产者
LPUSH queue:tasks "task1"
LPUSH queue:tasks "task2"
# 消费者
RPOP queue:tasks5. 分布式锁
redis
# 获取锁
SET lock:resource "uuid" NX EX 30
# 释放锁
DEL lock:resource6. 会话存储
redis
# 存储Session
SETEX session:user:1001 1800 '{"user_id":1001,"username":"glowxq"}'安装与启动
安装
bash
# Ubuntu/Debian
sudo apt-get install redis-server
# CentOS/RHEL
sudo yum install redis
# macOS
brew install redis
# Docker
docker run -d --name redis -p 6379:6379 redis:latest启动
bash
# 启动服务
redis-server
# 指定配置文件
redis-server /etc/redis/redis.conf
# 连接客户端
redis-cli
# 连接指定主机和端口
redis-cli -h 127.0.0.1 -p 6379
# 带密码连接
redis-cli -a password基本命令
通用命令
redis
# 查看所有键
KEYS *
# 判断键是否存在
EXISTS key
# 删除键
DEL key
# 设置过期时间(秒)
EXPIRE key 60
# 设置过期时间(毫秒)
PEXPIRE key 60000
# 查看剩余时间
TTL key
# 移除过期时间
PERSIST key
# 查看键的类型
TYPE key
# 重命名键
RENAME oldkey newkey
# 选择数据库(0-15)
SELECT 0
# 清空当前数据库
FLUSHDB
# 清空所有数据库
FLUSHALL连接命令
redis
# 测试连接
PING # 返回PONG
# 认证
AUTH password
# 选择数据库
SELECT 1
# 退出
QUIT服务器命令
redis
# 查看服务器信息
INFO
# 查看统计信息
INFO stats
# 查看内存使用
INFO memory
# 查看客户端连接
CLIENT LIST
# 保存数据到磁盘
SAVE # 阻塞保存
BGSAVE # 后台保存
# 获取配置
CONFIG GET *
# 设置配置
CONFIG SET maxmemory 256mb
# 监控实时命令
MONITORRedis配置
基本配置
conf
# 绑定IP
bind 127.0.0.1
# 端口
port 6379
# 后台运行
daemonize yes
# 日志级别
loglevel notice
# 日志文件
logfile /var/log/redis/redis.log
# 数据库数量
databases 16
# 密码
requirepass your_password
# 最大内存
maxmemory 256mb
# 内存淘汰策略
maxmemory-policy allkeys-lru持久化配置
conf
# RDB持久化
save 900 1 # 900秒内至少1个键改变
save 300 10 # 300秒内至少10个键改变
save 60 10000 # 60秒内至少10000个键改变
# RDB文件名
dbfilename dump.rdb
# 数据目录
dir /var/lib/redis
# AOF持久化
appendonly yes
appendfilename "appendonly.aof"
# AOF同步策略
appendfsync everysec # 每秒同步(推荐)
# appendfsync always # 每次写入同步(最安全)
# appendfsync no # 由操作系统决定(最快)性能测试
bash
# 基准测试
redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000
# 测试SET命令
redis-benchmark -t set -n 100000 -q
# 测试GET命令
redis-benchmark -t get -n 100000 -q
# 测试多个命令
redis-benchmark -t set,lpush -n 100000 -q
# 测试管道性能
redis-benchmark -n 1000000 -t set,get -P 16 -qRedis数据库
Redis默认有16个数据库(0-15),可以通过SELECT命令切换。
redis
# 切换到数据库1
SELECT 1
# 移动键到其他数据库
MOVE key 2
# 查看当前数据库键的数量
DBSIZE事务
Redis事务通过MULTI、EXEC、DISCARD和WATCH等命令实现。
redis
# 开启事务
MULTI
# 执行命令(命令进入队列)
SET key1 "value1"
SET key2 "value2"
INCR counter
# 执行事务
EXEC
# 取消事务
DISCARD
# 监视键(乐观锁)
WATCH key
MULTI
SET key "newvalue"
EXEC💡 提示
这是一个demo文档,欢迎补充更多Redis相关内容。