PHP 操作 redis 手冊

2021-08-07 09:34:06 字數 4805 閱讀 8633

本文為網上查詢資料,修改作為筆記記載,

為什麼用 redis 不用 memcached?

memcached存放資料無法持久化(將資料寫到硬碟中)。

redis資料也是存放到記憶體中,所以速度快。並且資料可以週期性寫到硬碟中,redis資料可以持久化。

redis有五種資料型別

字串(string)、list(鍊錶)、set(集合)、zset(有序集合)、hash(雜湊)

php操作redis

一、連線

$redis = new redis();

$redis->connect('127.0.0.1',6379,1);     

//短鏈結,本地host,埠為6379,超過1秒放棄

$redis->pconnect('127.0.0.1',6379,1);   //長鏈結,本地host,埠為6379,超過1秒放棄

$redis->ping();  //檢查是鏈結,返回 pong即是連線

$redis->select(0);  //選擇redis庫,0~15 共16個庫,預設選擇庫是 0

$redis->close();//釋放資源

二、string

$redis->set('test','aa');     //設定 鍵 key = 'test',值 value = 'aa'

$redis->get('test');

//獲取 test 的 值

$redis->delete('test');

// 刪除test 鍵

$redis->

setnx('test','aa');

//如果test鍵不存在,則設定,如果test鍵存在,則無效。

$redis->mset($arr);

//傳入$arr為陣列,設定乙個或多個鍵值

$redis->mget($arr);

//傳入$arr為陣列,獲取乙個或多個值,以陣列形式返回

$redis->getset($arr);

//先獲取值,再覆蓋設定值 ,返回舊值

三、list棧

$redis->lpush('list','val');   //(增) 在列表list的表頭增加乙個值val 

$redis->rpush('list','val');   //(

增) 在列表list的表尾增加乙個值val

$redis->lpop('list');   //(

刪)  刪除 並返回列表list 的表頭乙個值

$redis->rpop('list');   //(

刪) 刪除 

並返回列表list 的表尾乙個值

$redis->ltrim('list',0,2);   //(

刪)只保留下標為0到第2個的值,其他刪除

$redis->lrem('list','val',1)  //(

刪) 刪除列表list 裡面 的 val 值 1次

$redis->lset('list',2,'val') //(

改) 將 列表list 下標為2的值改為 val

$redis->lindex('list',1);(查) 返回 列表 list 的下標為1 的值

$redis->lrange('list',0,3);(查)  以陣列形式返回 列表 list 的下標為 0到3的值

四、set

string型別的無序集合。

是通過hash table 實現的,新增、刪除和查詢的複雜度都是0(1)。

對集合我們可以取並集、交集、差集)

$redis->sadd('key','value1','value2','valuen');  //為key集合新增 多個或乙個元素

$redis->smembers('key'); //返回集合key 所有元素

$redis->sinter('key1','key2','keyn');//返回所有給定集合的交集 

$redis->sunion('key1','key2','keyn');//返回所有給定集合的並集

$redis->sdiff('key1','key2','keyn');//返回所有給定集合的差集 

$redis->

srandmember

('key');//返回集合乙個隨機元素

$redis->srem('key','value1','value2');  //

為key集合刪除多個值或乙個元素

$redis->spop('key') //

移除並返回集合中的乙個隨機元素

$redis->sismember('key','member') //判斷集合key是否有member元素

五、 zset(有序集合)

$redis->zadd('key',1,'aa');  //在key集合新增與 1關聯 元素aa ,集合元素不可重複,可一次新增多個 zadd('key',1,'aa',2,'bb')

$redis->zrange('key',0,1); //獲取集合元素,從 0 到 1

$redis->zdelete('key','aa');刪除key集合裡面的 aa元素

$redis->zrevrange('key',0,1,true); // 

獲取集合元素,從0位置 到 -1 位置,陣列按照score降序處理 返回score關聯陣列

$redis->zrangebyscore('key',0,0.2); //獲取score 在0到0.2的元素

$redis->zcount('key',1,10) //計算 score 1到10的元素

$redis->zremrangebyscore('key',1,3); //刪除score區間 1到3

$redis->zremrangebyrank('key',0,1); //刪除下標 區間0到1

$redis->zsize('key'); //返回key有序集合 有多少個元素

$redis->zscore('key','a'); //返回key集合中 a元素對應的score值

$redis->zrange('key','a');//返回key集合中 a元素對應的下標值

$redis->zincrby('key',1.5,'a'); //將集合key中的元素a的score值加1.5

$redis->zunion('union',array('key','key2')) //將集合key和key2合併於集合union,如有重複,則重複元素score值相加

$redis->zunion('union',array('key',key2),arrar(4,2)); // 將key元素的score值乘4,key2元素score值乘2,然後合併,重 復元素則score相加

$redis->zunion('union',array('key',key2),arrar(4,2),'max'); // 如有重複,則score取最大,也可以設定最小值min

$redis->zinter('new',array('k1','k2')); //取k1 k2 的交集於 new,安裝score值排序,如元素種復,則score值相加

$redis->zinter('new',array('k1','k2'),array(4,2),'max'); //k1每個元素乘4,k2每個元素乘2,取交集 於new,重複元素則取最大值(也可min最小值)

五、雜湊(hash)

$redis->hset('key','name','val);//為key新增 名字為name,值為 val

$redis->hmset('key',array('aa'=>'aaa','bb'=>'bbb'));//批量設定新增

$redis->hsetnx('key','name','val');//為key新增 名字為name,值為 val ,存在則返回false

$redis->hget('key','name');//獲取key表的 name 裡面的值

$redis->hmget('key,array('aa','bb'));//批量獲取name欄位的值

$redis->

hlen('key');//獲取key表裡面的字段數

$redis->hdel('key','name');//刪除欄位name

$redis->hkeys('key');//獲取key表所有字段

$redis->hvals('key');//獲取key表所有欄位的值

$redis->hgetall('key』);//獲取key所有欄位和值(關聯陣列)

$redis->hexists('key','name');//判斷key是否含有name欄位

$redis->hincrby('key','name',-2);//為key裡面的字段name 的值 -2,如果非陣列,則返回false

$redis->hincrbyfloat('key','name',-2.5);//為key裡面的字段name 的值 -2.5(浮點數),如果非陣列,則返回false

$redis->zadd('key',1,'aa');  //在key集合新增與 1關聯 元素aa ,集合元素不可重複,可一次新增多個 zadd('key',1,'aa',2,'bb')

php操作redis php操作redis

redis類和redi ception類 redis類用於建立redis客戶端 redis new redis 如果無法訪問redis伺服器,會丟擲redi ception異常物件 連線問題,redis服務已關閉,或者redis主機過載等 在任何其他不涉及無法訪問的伺服器 如金鑰不正確,無效命令等 ...

php操作redis例項

1 獲取所有key,不包括值 redis keys 2 獲取乙個或多個key的值,不限制資料型別 redis mget key1,key2 引數為陣列 3 設定指定key的生命週期 redis expire key,30 設定生命週期為30秒 4 獲取指定key的剩餘生命週期 redis ttl k...

Redis學習手冊

1 redis學習手冊 開篇 一 簡介 二 redis的優勢 三 目前版本中redis存在的主要問題 四 和關係型資料庫的比較 五 如何持久化記憶體資料 2 redis學習手冊 string資料型別 一 概述 二 相關命令列表 三 命令示例 3 redis學習手冊 list資料型別 一 概述 二 相...