目錄
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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

Laravel如何學習 怎麼免費學習Laravel Laravel如何學習 怎麼免費學習Laravel Apr 18, 2025 pm 12:51 PM

想要學習 Laravel 框架,但苦於沒有資源或經濟壓力?本文為你提供了免費學習 Laravel 的途徑,教你如何利用網絡平台、文檔和社區論壇等資源,從入門到掌握,為你的 PHP 開發之旅奠定堅實基礎。

laravel用戶登錄功能 laravel用戶登錄功能 Apr 18, 2025 pm 12:48 PM

Laravel 提供了一個全面的 Auth 框架,用於實現用戶登錄功能,包括:定義用戶模型(Eloquent 模型)創建登錄表單(Blade 模板引擎)編寫登錄控制器(繼承 Auth\LoginController)驗證登錄請求(Auth::attempt)登錄成功後重定向(redirect)考慮安全因素:哈希密碼、防 CSRF 保護、速率限制和安全標頭。此外,Auth 框架還提供重置密碼、註冊和驗證電子郵件等功能。詳情請參閱 Laravel 文檔:https://laravel.com/doc

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

laravel怎麼查看版本號 laravel查看版本號方法 laravel怎麼查看版本號 laravel查看版本號方法 Apr 18, 2025 pm 01:00 PM

Laravel框架內置了多種方法來方便地查看其版本號,滿足開發者的不同需求。本文將探討這些方法,包括使用Composer命令行工具、訪問.env文件或通過PHP代碼獲取版本信息。這些方法對於維護和管理Laravel應用程序的版本控制至關重要。

laravel有哪些版本 laravel新手版本選擇方法 laravel有哪些版本 laravel新手版本選擇方法 Apr 18, 2025 pm 01:03 PM

在面向初学者的 Laravel 框架版本选择指南中,本文深入探討了 Laravel 的版本差異,旨在協助初學者在眾多版本之間做出明智的選擇。我們將重點介紹每個版本的關鍵特徵、比較它們的優缺點,並提供有用的建議,幫助新手根據他們的技能水準和項目需求挑選最合適的 Laravel 版本。對於初學者來說,選擇一個合適的 Laravel 版本至關重要,因為它可以顯著影響他們的學習曲線和整體開發體驗。

laravel和thinkphp的區別 laravel和thinkphp的區別 Apr 18, 2025 pm 01:09 PM

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在開發中各有優缺點。本文將深入比較這兩者,重點介紹它們的架構、特性和性能差異,以幫助開發者根據其特定項目需求做出明智的選擇。

如何利用Redis緩存方案高效實現產品排行榜列表的需求? 如何利用Redis緩存方案高效實現產品排行榜列表的需求? Apr 19, 2025 pm 11:36 PM

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

See all articles