set('library','phpredis');//存储key为library,值phpredis得记录$redis->get("library");//获取key为library得记录值set/g" /> set('library','phpredis');//存储key为library,值phpredis得记录$redis->get("library");//获取key为library得记录值set/g">
目录
redis操作
首页 数据库 Redis laravel的redis操作方法有哪些

laravel的redis操作方法有哪些

May 26, 2023 pm 01:38 PM
laravel redis

redis操作

1、set/get操作

普通得set/get操作,set操作,如果键名存在,则会覆盖原有得值

    $redis = app("redis.connection");

    $redis->set('library' , 'phpredis');//存储key为library ,值phpredis得记录

    $redis->get("library");//获取key为library得记录值


set/get 多个key-value

    $mkv = array(

        "user:001"=>'First user',

        "user:002"=>"Second user",

        "user:003"=>"Third user"

    );

   $redis->mset($mkv); // 存储多个key对应的value

   $retval = $redis->mget( array_keys($mkv) );//获取多个key对应的value


setex 存放带存储时效的记录

    $redis->setex("library" , 10 , 'phpredis');  //存储key为library,值为phpredis的记录,有效时长为10秒


add操作,不会覆盖已有值

    $redis->setnx("foo" , 12); //返回true, 添加成功  存在不做任何操作  否则创建

    $redis->setnx('foo' , 34); //返回false ,添加失败,因为存在键名foo的记录


getset 是 set的变种,结果返回替换前的值

    $redis->getset('foo' , 56);//返回12;如果之前不存在记录,则返回null
登录后复制

2、incrby/incr/decrby/decr对值得递增和递减

$redis->incr('foo'); //返回57 ,递增 阶梯为1

    $redis->incrby('foo' , 2); //返回59 递增 阶梯为2
登录后复制

3、 exists 检测是否存在 存在返回1 否则返回0

    $redis->exists("foo");
登录后复制

4、type 类型检测,字符串返回 string ,列表返回 list , set表返回 set/zset ,hash表返回 hash

    $redis->type('foo');
登录后复制

5、 append 连接到已存在字符串

    $redis->get('str');//返回test

    $redis->append('str' , "_123");
登录后复制

6、setrange 部分替换操作,并返回字符串长度

    $redis->setrange('str' , 0 , 'abc'); //返回3,第2个参数为0等同于set操作

    $redis->setrange('str' , 2 , 'cd'); //返回4,表示从第2个字符后替换,这时‘str’ 为 ‘abcd’
登录后复制

7、substr 部分获取操作

    $redis->substr('str' , 0 , 2);//返回abc 表示从第0个起,取到第2个字符串

    $redis->strlen('str'); // 返回4 此时‘str’ 为‘abcd’
登录后复制

8、setbit 位存储

   $redis->setbit('library' , 31 ,1); // 表示在第31位存入1

getbit 位获取

    $redis->getbit('library' , 31); //返回1
登录后复制

9、 keys 模糊查找功能,支持 * 号 以及 ?号 (匹配一个字符)

    $redis->set('foo1',123);

    $redis->set('foo2' , 456);

    $redis->keys('foo*'); //返回foo1和foo2的array

    $redis->keys('f?0?'); // 同上
登录后复制

10、 randomkey 随机返回一个key

   $redis->randomkey(); //可能是返回‘foo1’ 或者是foo2 及其它任何已存在的key
登录后复制

11、 rename/renamenx 方式对key进行改名,所不同的是renamenx不允许改成已存在的key

     $redis->rename('str','str2'); // 把原先命名为 str 的key改成了 str2
登录后复制

12、expire 设置key-value的时效性

ttl  获取剩余有效期

    persist  重新设置为永久存储

    $redis->expire('foo' , 10);//设置有效期为10秒

    $redis->ttl('foo'); // 返回剩余有效期值10秒

    $redispersist("fool");//取消有效期,变为永久存储
登录后复制

13、dbsize 返回redis当前数据库的记录总数

  $redis->dbsize();
登录后复制

14、队列操作

rpush/rpushx有序列表操作,从队列后插入元素;

lpush/lpushx和rpush/rpushx的区别是插入到队列的头部,同上,‘x’含义是只对已存在的key进行操作

    $redis->rpush('foolist' , 'bar1'); //返回列表长度1

    $redis->rpush('foolist' , 'bar0'); // 返回列表长度2

    $redis->rpushx('foolist' , 'bar2'); // 返回3 , rpushx只对已存在的队列做添加,否则返回0

    $redis->llen('foolist'); //返回 3


lrange 返回队列中一个区间的元素

    $redis->lrange('foolist' , 0 , 1); //返回数组包含第0个至第1个,共2个元素

    $redis->lrange('foolist' , 0 , -1);//返回第0个至倒数第一个,相当于返回所有元素  


lindex 返回指定顺序位置的list元素


    $redis->lindex('foolist' , 1); //返回bar1


lset 修改队列中指定位置的value 

    $redis->lset('foolist' , 1 ,'123'); // 修改位置1的元素,返回true



lrem 删除队列中左起指定数量的字符

    $redis->lrem("foolist" , 1 , '_'); //删除队列中左起(右起使用-1)1个字符‘_’(若有)



lpop/rpop 类似栈结构地弹出(并删除)最左或最右的一个元素


    $redis->lpop('foolist');//左侧返回

    $redis->rpop('foolist'); // 右侧返回



ltrim 队列修改,保留左边起若干元素,其余删除

    $redis->ltrim('foolist' , 0 , 1);   //  保留左边起第0个至第1个元素


rpoplpush 从一个队列中pop元素并push到另一个队列

    $redis->rpush('list1' , 'ab0');

    $redis->rpush('list1','ab1');

    $redis->rpush('list2' , 'ab2');

    $redis->rpush('list2' , "ab3");

    $redis->rpoplpush('list1' , "list2"); 

    $redis->rpoplpush('list2' , 'list2'); 


linsert在队列的中间指定元素前或后插入元素


    $redis->linsert('list2' , 'before' , 'ab1' , '123');//表示在元素 ‘ab1’ 之前插入‘123’

    $redis->linser('list2' , 'after' , 'ab1' , "456");//表示在元素 ‘ab1’ 之后插入


blpop/brpop 阻塞并等待一个队列不为空时,在pop出最左或最右的一个元素(这个功能在php以外可以说非常好用)


    $redis->blpop('list3' , 10) ; //如果list3 为空则一直等待,知道不为空时将第一个元素弹出,10秒后超时
登录后复制

15、set集合操作

sadd增加set集合元素,返回true,重复返回false

    $redis->sadd('set1' , 'ab');

    $redis->sadd('set1' , 'cd');

    $redis->sadd('set1' , 'ef');

    $redis->smembers("set1");  // 查看集合元素


srem 移除指定元素

    $redis->srem('set1' , 'cd');//删除‘cd’ 元素


spop弹出首元素

    $redis->spop("set1");//返回‘ab’


smove移动当前set集合的指定元素到另一个set集合

    $redis->sadd("set2",'123');

    $redis->smove('set1','set2','ab');//移动set1中的ab到set2 ,返回true or false;此时 set1 集合不存在 ab 这个值


scard 返回当前set表元素个数

    $redis->scard('set2');//返回2


sismember判断元素是否属于当前set集合

    $redis->sismember('set2','123'); //返回true or false


smembers返回当前set集合的所有元素

    $redis->smember('set2'); //返回array(123,ab)


sinter/sunion/sdiff 返回两个表中的交集/并集/补集

    $redis->sadd('set1' , 'ab');

    $redis->sinter('set2' , 'set1');//返回array('ab');

sinterstore/sunionstore/sdiffstore 将两个表交集/并集/补集元素copy到第三个表中

    $redis->set('foo' , 0);

    $redis->sinterstore('foo' , 'set1');//等同于将set1 的内容copy到foo中,并将foo转为set表

    $redis->sinterstore('foo' , array('set1' , 'set2'));//将set1和set2中相同的元素copy到foo表中,覆盖foo原有内容

srandmember 返回表中一个随即元素

    $redis->srandmember('set1');
登录后复制

16、有序set表操作

zadd增加元素,并设置序号,成功返回true,重复返回false

    $redis->zadd("zset1" , 1 , 'ab');

    $redis->zadd('zset1' , 2 , 'cd');

    $redis->zadd('zset1' , 3 , 'ef');

    zincrBy对指定元素索引值的增减,改变元素排序次序

    $redis->zincryBy('zset1' , 10 , 'ab');  //返回11


zrem 移除指定元素

    $redis->zrem('zset1' , 'ef');//返回true  or  false


zrange按位置次序返回表中指定区间的元素

    $redis->zrange("zset1" , 0 , 1);//返回位置0 和 1 之间(两个)的元素

    $redis->zrange('zset1' , 1 , -1);//返回位置0和倒数第一个元素之间的元素(相当于所有元素)


zrevrange同上,返回表中指定区间的元素,按次序倒排

    $redis->zrevrange('zset1' , 0 ,-1);//元素顺序和zrange相反


zrangeByscore/zrevrangeByscore 按顺序/降序返回表中指定索引区间的元素

    $redis->zadd('zset1' , 3 , 'ef');

    $redis->zadd('zset1' , 5 , 'gh');

    $redis->zrangeByscore('zset1' , 2, 9);//返回索引值2-9之间的元素array('ef' , 'gh');

    $redis->zrangeByscore('zset1' , 2 ,9 ,array('withscores'=>true , 'limit'=>array(1,2)));
    //返回索引值2-9之间的元素,withscores=>true表示包含索引值;limit=>array(1,2),表示偏移1,返回2条,结果为array(array('ef',3),array('gh',5))


zcount统计一个索引区间的元素个数

    $redis->zcount('zset1' , 3 , 5);//返回2

    $redis->zcount('zset1' , '(3' , 5 ) );//’(3‘ 表示索引的值在3-5之间但不含3,同理也可以使用’(5‘ 表示上限为5但不含5


zcard 统计元素个数

    $redis->zcard('zset1');//返回4


zremrangeByscore删除一个索引区间的元素

    $redis->zremrangeByscore('zset1' , 0 ,  2);//删除索引在0-2之间的元素(ab ,  cd),返回删除元素个数2


zrank/zrevrank返回元素所在表顺序/降序的位置(不是索引)

    $redis->zrank('zset1' , 'ef');//返回0,因为它是一个元素;zrevrank则返回1(最后一个)

zremrangeByrank删除表中指定位置区间的元素

    $redis->zremrangeByrank('zset1' , 0  ,  10);//删除位置为0-10的元素,返回删除的元素个数2
登录后复制

17、hash表操作

    $redis->hset('hash1' , 'key1' , 'v1');//将key为key1,value为v1的元素存入hash1表

    $redis->hset("hash1" , 'key2' , 'v2');

    $redis->hget('hash1' , 'key1');//取出表hash1中的key   key  key1的值,返回v1


hexists返回hash表中的指定key是否存在

    $redis->hexists("hash1" , 'key1');//true 或 false


hdel 删除hash表中指定key的元素

    $redis->hdel('hash' , 'key2');//true  or  false


hlen 返回hash表元素个数

    $redis->hlen('hash1'); // 返回1


hsetnx增加一个元素,但不能重复

    $redis->hsetnx('hash1' , 'key1' , 'v2');

    $redis->hsetnx('hash1' , 'key2' , 'v2');


hmset/hmget存取多个元素到hash表

    $redis->hmset( 'hash1' , array('key3'=>'v3' , 'key4'=>'v4' ) );

    $redis->hmget( 'hash1' , array('key3' , 'key4') );//返回响应的值 array('v3' , 'v4');


hincryby 对指定key进行累加

    $redis->hincryBy('hash1' , 'key5' ,  3); //不存在,则存储并返回3 ;存在,即返回原有值 +3

    $redis->hincryBy("hash1" , 'key5' , 10);//返回13


hkeys返回hash表中的所有key

    $redis->hkeys('hash1'); // 返回array('key1' , 'key2' , 'key3' , 'key4' , 'key5');


hvals 返回hash表中的所有value

    $redis->hvals('hash1'); // 返回array('v1' , 'v2' , 'v3' , 'v4' , 13);


hgetall返回整个hash表元素

    $redis->hgetall('hash1');//返回hash1所有表元素
登录后复制

18、排序操作

sort排序

    $redis->rpush('tab' , 3);

    $redis->rpush('tab' , 2);

    $redis->rpush('tab' , '17');

    $redis->sort('tab');//返回array(2,3,17);

    $redis->sort('tab' , array('sort'=>'desc'));//降序排序,返回array(17 , 3, 2)

    $redis->sort('tab' , array('limit'=>array(1,2)));//返回顺序位置中1的元素2个(这里的2是指个数,而不是位置),返回array(3,17)

    $redis->sort('tab' , array('limit'=>array('alpha'=>true)));//按首字符排序返回array(17 , 2 , 3 ),因为17的首字符是 1 所以排首位置

    $redis->sort('tab' , array('limit'=>array('store'=>'ordered')));//表示永久性排序,返回元素个数

    $redis->sort('tab' , array("limit"=>array('get'=>'pre_*')));//使用了通配符 * 过滤元素,表示只返回以pre开头的元素
登录后复制

19、Redis 管理操作

info显示服务当状态信息

    $redis->info();

select指定要操作的数据库

    $redis->select(4);//指定数据库的下标

flushdb清空当前库

    $redis->flushdb();

move移动当库的元素到其它数据库

    $redis->set('tomove' , 'bar');

    $redis->move('tomove' , 4);

slaveof 配置从服务器

    $redis->slaveof('127.0.0.1' , 80);//配置127.0.0.1端口80的服务器为从服务器

    $redis->slaveof();//消除从服务器

同步保存服务器数据到磁盘

    $redis->save();

异步保存服务器数据到磁盘

    $redis->bgsave()

返回最后更新磁盘的时间

    $redis->lastsave();
登录后复制

redis操作

// 清空Redis数据库
Redis::flushall();
 
 
// redis的string类型
Redis::set("laravel","Hello woshi laravel");
dump(Redis::get("laravel")) ;
 
 
// redis的哈希类型
Redis::hmset('happy:huizhou',['name'=>"惠州"]);
Redis::hmset("fail:xiaoshou",[
    "lover" => "黑嘿嘿🙂"
]);
dump(Redis::hgetall("happy:huizhou"));
dump(Redis::hgetall('fail:xiaoshou'));
echo "<br/><hr/>";
 
 
// redis的无序列表
Redis::sAdd(&#39;huizhou&#39;,[&#39;小东&#39;,&#39;小追命&#39;,&#39;小龙女&#39;]);
Redis::sAdd(&#39;xiaoshou&#39;,[&#39;小明&#39;,&#39;小追命&#39;,&#39;阳光宅猫&#39;]);
#获取无序集合
dump(Redis::smembers(&#39;huizhou&#39;));
dump(Redis::smembers(&#39;xiaoshou&#39;));
#获取并集
dump(Redis::sunion(&#39;huizhou&#39;,&#39;xiaoshou&#39;));
#获取交集
dump(Redis::sinter("xiaoshou",&#39;huizhou&#39;));
#获取huizhou与xiaoshou的差集
dump(Redis::sdiff("xiaoshou",&#39;huizhou&#39;));
#获取xiaoshou与huizhou的差集
dump(Redis::sdiff(&#39;huizhou&#39;,"xiaoshou"));
echo "<br/><hr/>";
 
 
// redis的list链表的使用
#栈 -> 先进后出
Redis::lpush("list1",&#39;one&#39;);
Redis::lpush("list1",&#39;two&#39;);
Redis::lpush("list1",&#39;three&#39;);
dump(Redis::lrange(&#39;list1&#39;,0,-1));
 
#队列 ->先进先出
Redis::rpush(&#39;rlist&#39;,&#39;one&#39;);
Redis::rpush(&#39;rlist&#39;,&#39;two&#39;);
Redis::rpush(&#39;rlist&#39;,&#39;three&#39;);
dump(Redis::lrange("rlist",0,-1));
#弹出队列和栈的元素
Redis::lpop("list1");
 
// redis的有序集合
Redis::zadd("zlist",1,"小明");
Redis::zadd("zlist",3,"惠州");
Redis::zadd("zlist",2,"加藤杰");
dump(Redis::zrange("zlist",0,-1));
dump(Redis::zrevrange("zlist",0,-1));
登录后复制

以上是laravel的redis操作方法有哪些的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

centos7 如何安装redis centos7 如何安装redis Apr 14, 2025 pm 08:21 PM

从 Redis 官方源下载源码包编译安装,保证最新稳定版本,可个性化定制。具体步骤如下:更新软件包列表创建 Redis 目录下载 Redis 源码包解压源码包编译安装配置并修改 Redis 配置启动 Redis检查启动状态

laravel入门实例 laravel入门实例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

centos redis如何配置慢查询日志 centos redis如何配置慢查询日志 Apr 14, 2025 pm 04:54 PM

在CentOS系统上启用Redis慢查询日志,提升性能诊断效率。以下步骤将指导您完成配置:第一步:定位并编辑Redis配置文件首先,找到Redis配置文件,通常位于/etc/redis/redis.conf。使用以下命令打开配置文件:sudovi/etc/redis/redis.conf第二步:调整慢查询日志参数在配置文件中,找到并修改以下参数:#慢查询阈值(毫秒)slowlog-log-slower-than10000#慢查询日志最大条目数slowlog-max-len

Laravel如何学习 怎么免费学习Laravel Laravel如何学习 怎么免费学习Laravel Apr 18, 2025 pm 12:51 PM

想要学习 Laravel 框架,但苦于没有资源或经济压力?本文为你提供了免费学习 Laravel 的途径,教你如何利用网络平台、文档和社区论坛等资源,从入门到掌握,为你的 PHP 开发之旅奠定坚实基础。

解决 Craft CMS 中的缓存问题:使用 wiejeben/craft-laravel-mix 插件 解决 Craft CMS 中的缓存问题:使用 wiejeben/craft-laravel-mix 插件 Apr 18, 2025 am 09:24 AM

在使用CraftCMS开发网站时,常常会遇到资源文件缓存的问题,特别是当你频繁更新CSS和JavaScript文件时,旧版本的文件可能仍然被浏览器缓存,导致用户无法及时看到最新的更改。这个问题不仅影响用户体验,还会增加开发和调试的难度。最近,我在项目中遇到了类似的困扰,经过一番探索,我找到了wiejeben/craft-laravel-mix这个插件,它完美地解决了我的缓存问题。

Laravel的主要功能:后端开发 Laravel的主要功能:后端开发 Apr 15, 2025 am 12:14 AM

Laravel在后端开发中的核心功能包括路由系统、EloquentORM、迁移功能、缓存系统和队列系统。1.路由系统简化了URL映射,提高了代码组织和维护性。2.EloquentORM提供了面向对象的数据操作,提升了开发效率。3.迁移功能通过版本控制管理数据库结构,确保一致性。4.缓存系统减少数据库查询,提升响应速度。5.队列系统有效处理大规模数据,避免阻塞用户请求,提升整体性能。

laravel框架技巧分享 laravel框架技巧分享 Apr 18, 2025 pm 01:12 PM

在这个技术不断进步的时代,掌握先进的框架对于现代程序员至关重要。本文将通过分享 Laravel 框架中鲜为人知的技巧,帮助你提升开发技能。Laravel 以其优雅的语法和广泛的功能而闻名,本文将深入探讨其强大的特性,提供实用技巧和窍门,帮助你打造高效且维护性高的 Web 应用程序。

CentOS中GitLab的数据库如何选择 CentOS中GitLab的数据库如何选择 Apr 14, 2025 pm 05:39 PM

在CentOS系统上安装和配置GitLab时,数据库的选择至关重要。GitLab兼容多种数据库,但PostgreSQL和MySQL(或MariaDB)最为常用。本文将分析数据库选择因素,并提供详细的安装和配置步骤。数据库选择指南选择数据库需要考虑以下因素:PostgreSQL:GitLab的默认数据库,功能强大,可扩展性高,支持复杂查询和事务处理,适合大型应用场景。MySQL/MariaDB:广泛应用于Web应用的流行关系型数据库,性能稳定可靠。MongoDB:NoSQL数据库,擅长处

See all articles