Redis 基础
2025/12/12大约 3 分钟
Redis 基础
Redis 安装配置与基本命令。
安装配置
Linux 安装
# Ubuntu/Debian
apt update && apt install redis-server
# CentOS
yum install redis
# 编译安装
wget https://download.redis.io/releases/redis-7.0.0.tar.gz
tar xzf redis-7.0.0.tar.gz
cd redis-7.0.0
make && make installDocker 安装
# 启动 Redis
docker run -d --name redis -p 6379:6379 redis:7
# 带密码和持久化
docker run -d --name redis \
-p 6379:6379 \
-v /data/redis:/data \
redis:7 redis-server --requirepass mypassword --appendonly yes配置文件
# redis.conf 关键配置
bind 0.0.0.0 # 监听地址
port 6379 # 端口
daemonize yes # 后台运行
requirepass yourpassword # 密码
maxmemory 2gb # 最大内存
maxmemory-policy allkeys-lru # 淘汰策略
# 启动
redis-server /path/to/redis.conf
# 连接
redis-cli -h 127.0.0.1 -p 6379 -a passwordKey 操作
基本命令
# 查看 key
KEYS * # 查看所有 key(生产禁用!)
KEYS user:* # 模式匹配
SCAN 0 MATCH user:* COUNT 100 # 迭代查找(推荐)
EXISTS key # 判断 key 是否存在
TYPE key # 查看类型
# 删除 key
DEL key [key ...] # 同步删除
UNLINK key [key ...] # 异步删除(推荐)
# 重命名
RENAME key newkey
RENAMENX key newkey # 仅当 newkey 不存在时
# 移动
MOVE key db # 移动到指定数据库过期时间
# 设置过期时间
EXPIRE key seconds # 秒
PEXPIRE key milliseconds # 毫秒
EXPIREAT key timestamp # Unix 时间戳
EXPIRETIME key # 查看过期时间戳(Redis 7.0+)
# 查看剩余时间
TTL key # 秒(-1 永不过期,-2 不存在)
PTTL key # 毫秒
# 移除过期时间
PERSIST key
# 设置值同时设置过期时间
SET key value EX 60 # 60 秒
SET key value PX 60000 # 60000 毫秒
SETEX key 60 value # 同上Key 命名规范
业务:模块:id
示例:
user:profile:1001 # 用户信息
order:detail:202401001 # 订单详情
cache:hot:goods # 热门商品缓存
lock:order:1001 # 分布式锁数据库操作
Redis 默认有 16 个数据库(0-15)。
SELECT 1 # 切换数据库
DBSIZE # 当前库 key 数量
FLUSHDB # 清空当前库
FLUSHALL # 清空所有库(危险!)客户端连接
Java - Jedis
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.0</version>
</dependency>// 单机连接
Jedis jedis = new Jedis("localhost", 6379);
jedis.auth("password");
jedis.set("key", "value");
String value = jedis.get("key");
jedis.close();
// 连接池
JedisPool pool = new JedisPool("localhost", 6379);
try (Jedis jedis = pool.getResource()) {
jedis.set("key", "value");
}Java - Lettuce
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.2.0.RELEASE</version>
</dependency>RedisClient client = RedisClient.create("redis://password@localhost:6379");
StatefulRedisConnection<String, String> connection = client.connect();
RedisCommands<String, String> commands = connection.sync();
commands.set("key", "value");
String value = commands.get("key");
connection.close();
client.shutdown();Spring Data Redis
# application.yml
spring:
redis:
host: localhost
port: 6379
password: yourpassword
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0@Autowired
private StringRedisTemplate redisTemplate;
// String 操作
redisTemplate.opsForValue().set("key", "value", 60, TimeUnit.SECONDS);
String value = redisTemplate.opsForValue().get("key");
// Hash 操作
redisTemplate.opsForHash().put("user:1001", "name", "张三");
// List 操作
redisTemplate.opsForList().rightPush("list", "item");
// Set 操作
redisTemplate.opsForSet().add("set", "member");
// ZSet 操作
redisTemplate.opsForZSet().add("rank", "user1", 100);常用管理命令
# 服务器信息
INFO # 全部信息
INFO server # 服务器信息
INFO memory # 内存信息
INFO replication # 主从信息
INFO stats # 统计信息
# 客户端管理
CLIENT LIST # 客户端列表
CLIENT KILL ip:port # 断开连接
CLIENT SETNAME name # 设置名称
# 配置管理
CONFIG GET maxmemory # 查看配置
CONFIG SET maxmemory 4gb # 修改配置
CONFIG REWRITE # 持久化到配置文件
# 慢查询
SLOWLOG GET 10 # 最近 10 条慢查询
SLOWLOG LEN # 慢查询数量
SLOWLOG RESET # 清空慢查询日志
# 持久化
BGSAVE # 后台 RDB
BGREWRITEAOF # 后台 AOF 重写
LASTSAVE # 上次保存时间