一、Redis基础操作命令:数据存取与过期策略 作为内存数据库的代表,Redis的核心功能是高效的数据存取。掌握基础命令是使用Redis的第一步。常用命令包括:
1. SET/GET
这是最基础的键值对操作命令。SET key value用于存储数据,GET key用于获取数据。例如:
SET user:1001 name "张三"
GET user:1001
需要注意的是,SET命令支持多种参数选项,比如EX 3600设置键的过期时间(单位秒),NX表示仅在键不存在时设置值。
2. EXPIRE/EXISTS
EXPIRE key seconds用于设置键的生存时间(TTL),而EXISTS key可以检查键是否存在。在缓存场景中,这两个命令常结合使用:
EXPIRE user:1001 3600
EXISTS user:1001
3. DEL/KEYS
DEL key删除指定键,KEYS pattern根据模式匹配返回所有符合规则的键。例如:
KEYS user:*
DEL user:1001
重要提示:KEYS命令在大数据量时会消耗大量内存,建议使用SCAN命令替代。
二、数据类型操作:字符串、哈希表与列表的深度解析 Redis支持五种数据结构,每种类型都有对应的命令集合。
1. 字符串(String) 字符串是Redis最简单的数据类型,支持多种操作:
INCR key:原子性递增操作,常用于计数器场景APPEND key value:在字符串值后追加内容GETSET key value:先获取旧值再设置新值
实例:
INCR visit:counter
APPEND user:1001 info "北京"
GETSET user:1001 new_value
2. 哈希表(Hash) 适合存储对象,如用户信息:
HSET user:1001 name "李四" age 25
HGETALL user:1001
关键命令包括:
HGET key field:获取指定字段值HMSET key field1 value1 ...:批量设置字段HSCAN key cursor [COUNT count]:增量遍历哈希表
3. 列表(List) 常用命令有:
RPUSH/LPUSH:在列表两端添加元素LRANGE key start end:获取指定范围的元素LTRIM key start end:修剪列表长度
实例:
RPUSH queue:msgs "msg1"
LRANGE queue:msgs 0 2
LTRIM queue:msgs 0 5
三、集合与有序集合:高性能数据处理方案 1. 集合(Set) 适用于唯一元素存储,常用命令:
SADD key member:添加成员SMEMBERS key:获取所有元素SINTER/AINTER/SDIFF:集合间交集、并集和差集运算
应用场景:
SADD tags "java"
SADD tags "python"
SDIFF tags other_tags
2. 有序集合(ZSet) 通过分数排序实现高效排名系统:
ZADD key score member:添加带分值的元素ZRANGE key min max:按分数范围查询ZREVRANK key member:获取倒序排名
实例:
ZADD scores 90 "张三"
ZRANGE scores 0 1
ZREVRANK scores "李四"
四、持久化与内存管理:保障数据安全的关键命令 1. 持久化策略
SAVE:同步保存数据到磁盘(阻塞主线程)BGSAVE:异步保存,适合生产环境
2. 内存淘汰策略
通过CONFIG SET maxmemory-policy设置,常见策略包括:
noeviction(默认):拒绝写操作allkeys-lru:淘汰最近最少使用的键volatile-ttl:优先淘汰剩余时间较短的键
3. 内存碎片管理
使用MEMORY USAGE key查看特定键的内存占用,通过MEMORY STATS分析整体内存状态。
五、高级功能:事务与集群部署 1. 事务处理(MULTI/EXEC) Redis的事务支持:
MULTI
SET key1 value1
INCR key2
EXEC
注意:事务中的命令会按顺序执行,但不保证原子性。
2. 集群模式命令 在集群环境中常用:
CLUSTER INFO:查看集群状态CLUSTER NODES:列出所有节点信息CLUSTER ADD-SLOTS:分配槽位
实例:
CLUSTER INFO
CLUSTER NODES
CLUSTER ADD-SLOTS 0-16383
六、监控与调试:关键诊断命令 1. 性能监控
INFO:获取运行时信息(可添加cpu、memory等参数)SLOWLOG GET:查看慢查询日志
2. 日志管理
CONFIG GET dir:查看日志目录LOGLEVEL:调整日志级别(debug、verbose等)
3. 安全相关
AUTH:验证用户密码FLUSHDB/FLUSHALL:清空数据库(需谨慎使用)
七、特殊场景下的进阶命令
1. Lua脚本执行
通过EVAL命令实现原子性操作:
EVAL "return redis.call('GET', KEYS[1])" 1 mykey
注意:Lua脚本在Redis中是原子执行的,适用于复杂逻辑处理。
2. 位图(Bitmap)操作
使用SETBIT/GETBIT处理二进制数据:
SETBIT user:1001 5 1
GETBIT user:1001 5
3. HyperLogLog统计 用于近似基数计算:
PFADD添加元素PFCOUNT获取统计结果
结语: 通过上述命令的系统学习,开发者可以全面掌握Redis的核心功能。实际应用中需结合业务场景选择合适的数据结构,并合理配置持久化、内存管理等参数。对于高并发系统,建议深入研究集群模式和哨兵机制,以保障系统的可用性与扩展性。