掌握Redis核心命令如SET、GET、DEL、EXPIRE等,能避免盲目操作导致数据丢失,通过KEYS *谨慎查询、FLUSHALL前备份数据,实现高效运维和零误删风险。
基础键值操作
SET key value:设置键值对的基本命令,用于存储字符串数据。例如,SET user:1 "张三" 将键user:1的值设置为张三。
GET key:获取指定键的值。如果键不存在,返回nil。使用GET user:1 可以快速读取用户数据。
MSET key1 value1 key2 value2:同时设置多个键值对,提高批量操作效率,避免多次网络往返。
列表操作命令
LPUSH key value1 value2:从列表左侧插入一个或多个值,创建或追加到列表头部。
RPOP key:移除并返回列表尾部的元素,常用于队列实现FIFO。
LRANGE key start stop:获取列表指定区间内的元素,start和stop为索引,从0开始,支持负数表示从尾部计算。
哈希操作详解
HSET key field value:为哈希表key中的域field设置值,如果域不存在则创建。
HGET key field:获取哈希表中指定域的值,返回nil如果域不存在。
HDEL key field1 field2:删除哈希表中的一个或多个域,返回被删除域的数量。
集合与有序集合
SADD key member1 member2:向集合key添加一个或多个成员,不允许重复。
ZADD key score1 member1 score2 member2:为有序集合添加成员及其分数,用于排行榜场景。
SCARD key:返回集合key的成员个数,便于统计。
避免误删的关键命令
使用EXISTS key检查键是否存在再执行DEL,避免误删不存在的键。
SCAN 0 MATCH * COUNT 100:增量迭代键空间,替代危险的KEYS *命令,防止阻塞Redis。
CONFIG SET save ""临时禁用RDB持久化,FLUSHALL前确保数据安全备份。
FAQ
Q: 如何避免FLUSHALL误删所有数据?
A: 先执行BGSAVE创建RDB备份,或用SCAN迭代删除指定模式键。
Q: KEYS *命令为什么危险?
A: 在大数据量时会阻塞主进程,用SCAN代替进行游标迭代。
Q: Redis如何设置键过期时间?
A: 用EXPIRE key seconds或SETEX key seconds value,一键设置值和过期时间。
Q: 批量删除键的 safest方式?
A: 结合SCAN和EVAL脚本:EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 pattern*。