PHP与Redis的结合是现代Web开发中提升性能的常见选择,Redis作为高性能的内存数据结构存储,支持丰富的命令操作,通过PHP的Redis扩展可以灵活调用这些命令,以下是PHP中常用的Redis命令分类及使用场景,涵盖数据操作、键管理、事务处理等核心功能。

在PHP中使用Redis前,需确保已安装Redis扩展并通过$redis = new Redis()
创建连接,调用$redis->connect('127.0.0.1', 6379)
建立服务端链接,字符串操作是最基础的命令,如set($key, $value)
设置键值,get($key)
获取值,mSet($array)
批量设置多个键值,incr($key)
递增计数器,append($key, $value)
追加字符串内容,这些命令适用于缓存、计数器等场景,例如用incr
实现文章浏览量统计。
哈希表操作适合存储对象结构,hSet($key, $field, $value)
设置字段值,hGet($key, $field)
获取字段值,hMGet($key, $array)
批量获取多个字段,hIncrBy($key, $field, $increment)
字段值递增,例如存储用户信息时,可用hSet('user:1', 'name', 'Alice')
设置用户名,hGetAll('user:1')
获取所有字段。
列表操作实现队列或栈功能,lPush($key, $value)
头部插入元素,rPush($key, $value)
尾部插入,lPop($key)
弹出头部元素,rPop($key)
弹出尾部元素,lRange($key, $start, $end)
获取列表片段,消息队列中可用lPush
生产消息,rPop
消费消息。
集合操作处理不重复元素,sAdd($key, $member)
添加成员,sMembers($key)
获取所有成员,sRem($key, $member)
删除成员,sInter($key1, $key2)
求交集,例如用集合存储用户标签,sAdd('user:1:tags', 'php')
添加标签,sMembers('user:1:tags')
查询标签。

有序集合在集合基础上增加分数,zAdd($key, $score, $member)
添加成员及分数,zRange($key, $start, $stop, $withScores)
按分数升序获取成员,zRevRange($key, $start, $stop, $withScores)
降序获取,zIncrBy($key, $increment, $member)
增加分数,排行榜功能可通过zAdd('leaderboard', 100, 'player1')
实现分数记录。
键管理命令包括exists($key)
检查键是否存在,del($key)
删除键,expire($key, $seconds)
设置过期时间,type($key)
获取键类型,keys($pattern)
按模式匹配键名(生产环境慎用),事务处理通过multi()
开启事务,exec()
执行,discard()
回滚,例如$redis->multi()->set('key1', 'val1')->get('key1')->exec()
批量执行命令。
以下是常用命令的速查表:
操作类型 | PHP方法 | Redis命令 | 功能描述 |
---|---|---|---|
字符串 | set() | SET | 设置键值 |
字符串 | get() | GET | 获取键值 |
哈希表 | hSet() | HSET | 设置字段值 |
哈希表 | hGetAll() | HGETALL | 获取所有字段 |
列表 | lPush() | LPUSH | 头部插入元素 |
集合 | sAdd() | SADD | 添加成员 |
有序集合 | zAdd() | ZADD | 添加成员及分数 |
键管理 | expire() | EXPIRE | 设置过期时间 |
相关问答FAQs:

Q1: PHP中如何使用Redis实现分布式锁?
A1: 可通过SET
命令的NX选项实现,例如$redis->set('lock:key', '1', ['NX', 'EX' => 10])
,NX表示键不存在时设置,EX设置过期时间,获取锁后执行业务逻辑,最后用del('lock:key')
释放锁,需注意避免死锁,确保设置过期时间。
Q2: Redis事务在PHP中如何保证原子性?
A2: PHP Redis扩展通过multi()
开启事务后,命令会进入队列,调用exec()
时一次性执行,若队列中命令语法错误,exec()
返回空;运行时错误其他命令仍执行,可通过watch($key)
实现乐观锁,监控键变化,若事务执行前键被修改,事务回滚。