当前位置: 首页 > news >正文

ThinkPHP中Redis操作示例

1. 基本操作

Redis 命令ThinkPHP 方法说明
SET key valueRedis::set($key, $value)设置键值对
GET keyRedis::get($key)获取键的值
EXISTS keyRedis::exists($key)检查键是否存在
DEL keyRedis::del($key)删除键
TTL keyRedis::ttl($key)获取键的过期时间(秒)
PTTL keyRedis::pttl($key)获取键的过期时间(毫秒)
TYPE keyRedis::type($key)获取键的类型
KEYS patternRedis::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 keyRedis::incr($key)将键的值加1
INCRBY key incrementRedis::incrBy($key, $increment)将键的值增加指定值
DECR keyRedis::decr($key)将键的值减1
DECRBY key decrementRedis::decrBy($key, $decrement)将键的值减少指定值
APPEND key valueRedis::append($key, $value)追加值到键的末尾
STRLEN keyRedis::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 valueRedis::hset($key, $field, $value)设置哈希字段的值
HGET key fieldRedis::hget($key, $field)获取哈希字段的值
HSETNX key field valueRedis::hsetnx($key, $field, $value)如果字段不存在,设置哈希字段的值
HGETALL keyRedis::hgetall($key)获取哈希中所有的字段和值
HDEL key field1 field2 ...Redis::hdel($key, $field1, $field2, ...)删除哈希中的字段
HINCRBY key field incrementRedis::hincrby($key, $field, $increment)增加哈希字段的值
HLEN keyRedis::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 endRedis::lrange($key, $start, $end)获取列表中指定范围的值
LPOP keyRedis::lpop($key)从左侧移除并返回值
RPOP keyRedis::rpop($key)从右侧移除并返回值
LREM key count valueRedis::lrem($key, $count, $value)移除列表中指定值的元素
LLEN keyRedis::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 keyRedis::smembers($key)获取集合中的所有元素
SISMEMBER key memberRedis::sismember($key, $member)检查元素是否在集合中
SREM key member1 member2 ...Redis::srem($key, $member1, $member2, ...)从集合中移除元素
SCARD keyRedis::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 keyRedis::zcard($key)获取有序集合中元素的数量
ZINCRBY key increment memberRedis::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']);

相关文章:

  • 重温hot100-day5
  • libevent服务器附带qt界面开发(附带源码)
  • Oracle PL/SQL 中,异常(Exception)
  • C++基础语法(1)
  • Wan2.1 多模态数据导出 export_to_video
  • 解密 Vue 打包策略
  • WHAT - 动态导入模块遇到版本更新解决方案
  • [Java实战经验]对象拷贝
  • 《ADVANCING MATHEMATICAL REASONING IN LAN- GUAGE MODELS》全文阅读
  • ESP32驱动读取ADXL345三轴加速度传感器实时数据
  • 一键直达:用n8n打造谷歌邮箱到Telegram的实时通知流
  • 贪心算法day10(无重叠区间)
  • 信息系统项目管理师-工具名词解释(中)
  • [Lc] 最长公共子序列 | Fenwick Tree(树状数组):处理动态前缀和
  • Linux 415 XSHELL(需解决) no enable repos 配置静态IP
  • 【无标题】win7和win11双系统共存
  • groovy运行poi包处理xlsx文件报NoClassDefFoundError
  • linux下编译grpc
  • OpenJUMP:一个开源的桌面地理信息系统(GIS)软件
  • IDEA远程Debug调试
  • 教皇方济各逝世,外交部:表示哀悼,愿同梵方共同推动中梵关系持续改善
  • 去年净流入人口达45万,居各省份第一:浙江带来哪些启示?
  • 上海虹桥机场口岸单日出入境突破1.1万人次,创今年新高
  • 习近平致电祝贺诺沃亚当选连任厄瓜多尔总统
  • 五一假期出行预订进入高潮:酒店搜索热度翻倍,“请4休11”拼假带动长线游
  • 汕头22岁女子手术成功却意外脑死亡,家属称缺氧30分钟医生未发觉