1. 基本操作
Redis 命令 | ThinkPHP 方法 | 说明 |
---|
SET key value | Redis::set($key, $value) | 设置键值对 |
GET key | Redis::get($key) | 获取键的值 |
EXISTS key | Redis::exists($key) | 检查键是否存在 |
DEL key | Redis::del($key) | 删除键 |
TTL key | Redis::ttl($key) | 获取键的过期时间(秒) |
PTTL key | Redis::pttl($key) | 获取键的过期时间(毫秒) |
TYPE key | Redis::type($key) | 获取键的类型 |
KEYS pattern | Redis::keys($pattern) | 查找符合模式的键 |
// 设置键值对
Redis::set('key1', '123');
// 获取键值对的值
$value = Redis::get('key1');
// 匹配符合模式的键
$keys = Redis::keys('key*');
// 检查键是否存在
$exists = Redis::exists('key1');
// 删除键
Redis::del('key1');
// 查看键的过期时间(秒)
$ttl = Redis::ttl('key1');
// 查看键的过期时间(毫秒)
$pttl = Redis::pttl('key1');
// 查看键的类型
$type = Redis::type('key1');
2. 字符串(String)
Redis 命令 | ThinkPHP 方法 | 说明 |
---|
MSET key1 value1 key2 value2 ... | Redis::mset([$key1 => $value1, $key2 => $value2, ...]) | 批量设置键值对 |
MGET key1 key2 ... | Redis::mget([$key1, $key2, ...]) | 批量获取键的值 |
INCR key | Redis::incr($key) | 将键的值加1 |
INCRBY key increment | Redis::incrBy($key, $increment) | 将键的值增加指定值 |
DECR key | Redis::decr($key) | 将键的值减1 |
DECRBY key decrement | Redis::decrBy($key, $decrement) | 将键的值减少指定值 |
APPEND key value | Redis::append($key, $value) | 追加值到键的末尾 |
STRLEN key | Redis::strlen($key) | 获取键的值的长度 |
// 批量设置键值对
Redis::mset(['key1' => '10', 'key2' => '29', 'key3' => '30']);
// 批量获取键值对
$values = Redis::mget(['key1', 'key2', 'key3']);
// 如果键不存在则设置
Redis::setnx('key1', '1');
// 如果键存在则设置
Redis::set('key1', '1', ['xx']);
// 设置键值对并设置过期时间(秒)
Redis::setex('key1', 10, 'value');
// 设置键值对并设置过期时间(毫秒)
Redis::psetex('key1', 10000, 'value');
// 将键的值加1
Redis::incr('key');
// 将键的值加10
Redis::incrby('key', 10);
// 将键的值减1
Redis::decr('key');
// 将键的值减10
Redis::decrby('key', 10);
// 将键的值增加1.23
Redis::incrbyfloat('key', 1.23);
// 追加值到键的末尾
Redis::append('key', 'qwe');
// 获取键值的指定范围
$range = Redis::getrange('key', 1, 3);
// 获取键值的全部范围
$fullRange = Redis::getrange('key', 0, -1);
// 从偏移量开始设置字符串
Redis::setrange('key', 1, 'fad');
// 获取键的长度
$length = Redis::strlen('key');
3. 哈希(Hash)
Redis 命令 | ThinkPHP 方法 | 说明 |
---|
HSET key field value | Redis::hset($key, $field, $value) | 设置哈希字段的值 |
HGET key field | Redis::hget($key, $field) | 获取哈希字段的值 |
HSETNX key field value | Redis::hsetnx($key, $field, $value) | 如果字段不存在,设置哈希字段的值 |
HGETALL key | Redis::hgetall($key) | 获取哈希中所有的字段和值 |
HDEL key field1 field2 ... | Redis::hdel($key, $field1, $field2, ...) | 删除哈希中的字段 |
HINCRBY key field increment | Redis::hincrby($key, $field, $increment) | 增加哈希字段的值 |
HLEN key | Redis::hlen($key) | 获取哈希中字段的数量 |
// 设置哈希字段的值
Redis::hset('map', 'key1', '10');
// 获取哈希字段的值
$value = Redis::hget('map', 'key1');
// 检查哈希中是否有字段
$exists = Redis::hexists('map', 'key1');
// 删除哈希中的字段
Redis::hdel('map', 'key1', 'key2');
// 获取哈希中的所有字段
$fields = Redis::hkeys('map');
// 获取哈希中的所有值
$values = Redis::hvals('map');
// 获取哈希中的所有字段和值
$hash = Redis::hgetall('map');
// 一次获取哈希中多个字段的值
$values = Redis::hmget('map', ['key1', 'key2', 'key3']);
// 获取哈希中字段的个数
$count = Redis::hlen('map');
// 如果字段不存在则设置值
Redis::hsetnx('map', 'key1', 'ddd');
// 增加哈希字段的值
Redis::hincrby('map', 'key1', 10);
// 增加哈希字段的浮点数值
Redis::hincrbyfloat('map', 'key1', 1.24);
4. 列表(List)
Redis 命令 | ThinkPHP 方法 | 说明 |
---|
LPUSH key value1 value2 ... | Redis::lpush($key, $value1, $value2, ...) | 从左侧插入值到列表 |
RPUSH key value1 value2 ... | Redis::rpush($key, $value1, $value2, ...) | 从右侧插入值到列表 |
LRANGE key start end | Redis::lrange($key, $start, $end) | 获取列表中指定范围的值 |
LPOP key | Redis::lpop($key) | 从左侧移除并返回值 |
RPOP key | Redis::rpop($key) | 从右侧移除并返回值 |
LREM key count value | Redis::lrem($key, $count, $value) | 移除列表中指定值的元素 |
LLEN key | Redis::llen($key) | 获取列表的长度 |
// 从左侧插入值到列表
Redis::lpush('mylist', '1', '2', '3', '1', '5');
// 获取列表中所有元素
$list = Redis::lrange('mylist', 0, -1);
// 如果列表存在则从左侧插入
Redis::lpushx('list', 'aa', 'dd');
// 从右侧插入值到列表
Redis::rpush('mylist', '1', '2', '3', '1', '5');
// 如果列表存在则从右侧插入
Redis::rpushx('list', 'aa', 'dd');
// 从左侧移除并返回值
$value = Redis::lpop('mylist');
// 从右侧移除并返回值
$value = Redis::rpop('mylist');
// 获取列表中指定位置的元素
$value = Redis::lindex('mylist', 1);
// 在列表中指定元素前插入值
Redis::linsert('mylist', 'before', 'I', 'love');
// 在列表中指定元素后插入值
Redis::linsert('mylist', 'after', 'I', 'love');
// 获取列表的长度
$count = Redis::llen('mylist');
// 从左侧移除指定值的元素
Redis::lrem('list', 1, 'value');
// 从右侧移除指定值的元素
Redis::lrem('list', -1, 'value');
// 移除列表中所有指定值的元素
Redis::lrem('list', 0 ',value');
// 保留列表中指定范围的元素
Redis::ltrim('list', 1, 3);
// 设置列表中指定位置的值
Redis::lset('list', 1, 'hello');
// 阻塞式从左侧弹出元素
$value = Redis::blpop('list', 10);
// 阻塞式从右侧弹出元素
$value = Redis::brpop('list', 10);
5. 集合(Set)
Redis 命令 | ThinkPHP 方法 | 说明 |
---|
SADD key member1 member2 ... | Redis::sadd($key, $member1, $member2, ...) | 添加元素到集合 |
SMEMBERS key | Redis::smembers($key) | 获取集合中的所有元素 |
SISMEMBER key member | Redis::sismember($key, $member) | 检查元素是否在集合中 |
SREM key member1 member2 ... | Redis::srem($key, $member1, $member2, ...) | 从集合中移除元素 |
SCARD key | Redis::scard($key) | 获取集合中元素的数量 |
// 向集合中添加元素
Redis::sadd('myset', 'q', 'w', 'r', 't', 'e', 'y', 'q', 'q', 'q');
// 获取集合中的所有元素
$members = Redis::smembers('myset');
// 检查元素是否在集合中
$exists = Redis::sismember('myset', 'q');
// 从集合中随机弹出元素
$value = Redis::spop('myset', 2);
// 从集合中随机返回元素
$values = Redis::srandmember('myset', 3);
// 统计集合中元素的数量
$count = Redis::scard('myset');
// 将元素从一个集合移动到另一个集合
Redis::smove('myset', 'yourset', 'w');
// 从集合中删除元素
Redis::srem('yourset', 'd');
// 获取两个集合的交集
$intersection = Redis::sinter('myset', 'yourset');
// 将两个集合的交集存储到另一个集合
Redis::sinterstore('resultset', 'myset', 'yourset');
// 获取两个集合的并集
$union = Redis::sunion('myset', 'yourset');
// 将两个集合的并集存储到另一个集合
Redis::sunionstore('resultset', 'myset', 'yourset');
// 获取两个集合的差集
$difference = Redis::sdiff('myset', 'yourset');
// 将两个集合的差集存储到另一个集合
Redis::sdiffstore('resultset', 'myset', 'yourset');
6. 有序集合(ZSet)
Redis 命令 | ThinkPHP 方法 | 说明 |
---|
ZADD key score1 member1 score2 member2 ... | Redis::zadd($key, $score1, $member1, $score2, $member2, ...) | 添加元素到有序集合 |
ZRANGE key start end [WITHSCORES] | Redis::zrange($key, $start, $end, $withScores = false) | 获取有序集合中指定范围的元素 |
ZREVRANGE key start end [WITHSCORES] | Redis::zrevrange($key, $start, $end, $withScores = false) | 获取有序集合中按分数降序排列的元素 |
ZREM key member1 member2 ... | Redis::zrem($key, $member1, $member2, ...) | 从有序集合中移除元素 |
ZCARD key | Redis::zcard($key) | 获取有序集合中元素的数量 |
ZINCRBY key increment member | Redis::zincrby($key, $increment, $member) | 增加有序集合中元素的分数 |
// 向有序集合中添加元素
Redis::zadd('myzset', 3, 'hello', 5, 'world');
// 获取有序集合中的元素个数
$count = Redis::zcard('myzset');
// 获取分数在指定范围内的元素个数
$count = Redis::zcount('myzset', 3, 5);
// 获取有序集合中指定范围的元素(升序)
$values = Redis::zrange('myzset', 0, 1, true);
// 获取有序集合中指定范围的元素(降序)
$values = Redis::zrevrange('myzset', 0, -1, true);
// 获取分数在指定范围内的元素
$values = Redis::zrangebyscore('myzset', 3, 5, ['withscores' => true]);
// 弹出分数最高的元素
$values = Redis::zpopmax('myzset', 2);
// 阻塞式弹出分数最高的元素
$values = Redis::bzpopmax('myzset', 10);
// 弹出分数最低的元素
$values = Redis::zpopmin('myzset', 2);
// 阻塞式弹出分数最低的元素
$values = Redis::bzpopmin('myzset', 10);
// 获取元素的排名(升序)
$rank = Redis::zrank('myzset', 't');
// 获取元素的排名(降序)
$rank = Redis::zrevrank('myzset', 't');
// 获取元素的分数
$score = Redis::zscore('myzset', 't');
// 从有序集合中删除元素
Redis::zrem('myzset', 't', 'q');
// 删除指定排名范围内的元素
Redis::zremrangebyrank('myzset', 0, 2);
// 删除指定分数范围内的元素
Redis::zremrangebyscore('myzset', 6, 7);
// 增加元素的分数
Redis::zincrby('yourzset', 5, 'hello');
// 获取两个有序集合的交集并存储
Redis::zinterstore('result', ['myzset', 'yourzset'], ['weights' => [2, 3], 'aggregate' => 'sum']);
// 获取两个有序集合的并集并存储
Redis::zunionstore('result', ['myzset', 'yourzset'], ['weights' => [2, 3], 'aggregate' => 'sum']);