跳转至
用户认证 - eMac Tech Docs

用户认证

重要提醒

为了您的权益以及学习体验,请不要外借账号!

如果您没有账号或忘记密码,请联系管理员重置密码。

请输入您的登录信息

Redis数据类型

五种核心类型

flowchart TD
    Redis数据类型[Redis数据类型]
    Redis数据类型 --> String
    Redis数据类型 --> Hash
    Redis数据类型 --> List
    Redis数据类型 --> Set
    Redis数据类型 --> ZSet

类型详解

类型 特点 适用场景 示例命令
String 二进制安全,最大512MB 缓存、计数器 SET/GET/INCR
Hash 字段-值映射表 对象存储 HSET/HGET/HGETALL
List 双向链表,元素可重复 消息队列、最新列表 LPUSH/RPOP/LRANGE
Set 无序集合,元素唯一 标签、好友关系 SADD/SMEMBERS/SINTER
ZSet 有序集合,带分值 排行榜、优先级队列 ZADD/ZRANGE/ZREVRANK

Java操作示例

// String操作
jedis.set("user:1:name", "张三");
String name = jedis.get("user:1:name");

// Hash操作
jedis.hset("user:1", "name", "李四");
Map<String,String> user = jedis.hgetAll("user:1");

// List操作
jedis.lpush("messages", "msg1");
List<String> msgs = jedis.lrange("messages", 0, -1);

// Set操作
jedis.sadd("tags", "java", "redis");
Set<String> tags = jedis.smembers("tags");

// ZSet操作
jedis.zadd("rank", 90, "user1");
Set<String> topUsers = jedis.zrevrange("rank", 0, 2);

性能特点

  1. String: O(1)时间复杂度
  2. Hash: 单个操作O(1),HGETALL O(n)
  3. List: 头尾操作O(1),按索引O(n)
  4. Set: 添加/删除O(1),集合运算O(n)
  5. ZSet: 添加/删除O(logN),范围查询O(logN)

最佳实践

  1. 小数据使用String,大数据考虑Hash分片
  2. List长度控制在千级以内
  3. Set适合存储独立不重复数据
  4. ZSet注意分值设计
  5. 避免大Key(>10KB)

Redis 基础操作

数据类型

1. String(字符串)

# 设置值
SET key value

# 获取值
GET key

# 删除键
DEL key

# 设置过期时间
EXPIRE key seconds

# 自增/自减
INCR key
DECR key

2. List(列表)

# 左侧插入
LPUSH key value

# 右侧插入
RPUSH key value

# 左侧弹出
LPOP key

# 右侧弹出
RPOP key

# 获取范围
LRANGE key start stop

3. Hash(哈希)

# 设置字段值
HSET key field value

# 获取字段值
HGET key field

# 获取所有字段
HGETALL key

# 删除字段
HDEL key field

4. Set(集合)

# 添加成员
SADD key member

# 删除成员
SREM key member

# 判断是否存在
SISMEMBER key member

# 获取所有成员
SMEMBERS key

5. Sorted Set(有序集合)

# 添加成员
ZADD key score member

# 获取分数
ZSCORE key member

# 获取排名
ZRANK key member

# 获取范围
ZRANGE key start stop

常用命令

键操作

# 查看所有键
KEYS *

# 查看键类型
TYPE key

# 查看键是否存在
EXISTS key

# 删除键
DEL key

# 重命名键
RENAME key newkey

数据库操作

# 选择数据库
SELECT index

# 清空当前数据库
FLUSHDB

# 清空所有数据库
FLUSHALL

# 查看数据库大小
DBSIZE

服务器操作

# 查看服务器信息
INFO

# 查看内存使用
INFO memory

# 查看客户端连接
CLIENT LIST

# 关闭服务器
SHUTDOWN

事务操作

基本事务

# 开始事务
MULTI

# 执行命令
SET key1 value1
SET key2 value2

# 提交事务
EXEC

# 取消事务
DISCARD

监视键

# 监视键
WATCH key

# 取消监视
UNWATCH

发布订阅

发布消息

# 发布消息
PUBLISH channel message

订阅消息

# 订阅频道
SUBSCRIBE channel

# 取消订阅
UNSUBSCRIBE channel

持久化

RDB 持久化

# 手动保存
SAVE

# 异步保存
BGSAVE

# 配置自动保存
CONFIG SET save "900 1 300 10 60 10000"

AOF 持久化

# 开启 AOF
CONFIG SET appendonly yes

# 重写 AOF
BGREWRITEAOF

性能优化

1. 内存优化

flowchart TD
    A[分析内存使用] --> B{内存使用过高?}
    B -- 是 --> C[检查大键]
    C --> D[优化数据结构]
    D --> E[设置过期时间]
    E --> F[使用压缩]
    F --> G[继续监控]
    B -- 否 --> G

2. 性能优化

flowchart TD
    A[监控性能指标] --> B{性能下降?}
    B -- 是 --> C[检查慢查询]
    C --> D[优化命令使用]
    D --> E[调整配置参数]
    E --> F[考虑集群]
    F --> G[继续监控]
    B -- 否 --> G

最佳实践

  1. 键命名规范:

    • 使用冒号分隔
    • 使用有意义的名称
    • 避免过长的键名
    • 使用统一的命名空间
  2. 数据操作建议:

    • 合理使用数据类型
    • 设置适当的过期时间
    • 避免大键
    • 使用批量操作
  3. 性能优化建议:

    • 使用 pipeline
    • 避免使用 KEYS 命令
    • 合理设置内存限制
    • 定期清理过期键