## 一:連接redis
```
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);//連接地址和端口
$redis->auth('mypassword');//連接密碼
//查看服務是否運行
echo "Server is running: " . $redis->ping();
```
## 二:通用操作:
```
//設置緩存的過期時間為5秒
$redis->expire('key', 5);
//刪除緩存
$redis->del('key'); //可以傳入數組 ['key1','key2'] 刪除多個鍵
//判斷緩存是否存在
$redis->exists('key'); //驗證鍵是否存在,存在返回true
//獲取緩存的有效時間,單位秒
$redis->ttl('key'); //key不存在返回-2,key永不過期返回-1
//移除 key 的過期時間,key 將持久保持。
$redis->persist('key');
//獲取redis信息
$redis->info();
//獲取所有的key
$redis->keys('*') //可以模糊匹配 keys('goods*') 模糊匹配goods的key
//獲取值的類型
$redis->type('key')
//查看當前數據庫key的數量
$redis->dbSize();
```
## 二:常見String的操作
```
//設置緩存
$redis->set('key','value');
//獲取緩存
$redis->get('key'');
//設置key的值同時設置緩存時間
$redis->setex('key', 3600, 'value')
// 批量設置緩存
$redis->mset(['number' => 'value0', 'key' => 'value1']);
//批量獲取緩存,返回一個數組
$redis->mget(['number','key']);
//當key不存在時再設置緩存,例如已經有了一個key為goods的緩存,使用setnx('goods','value')方法時將不再緩存
$redis->setnx('key','value');
//批量設置緩存,使用setnx()方法批量操作
$redis->msetnx(['key0' => 'value0', 'key1' => 'value1']);
//自增
$redis->incr('number'); //鍵值加1
//鍵值加10
$redis->incrby('number',10);
//自減
$redis->decr('number'); //鍵值減1
//鍵值減10
$redis->decrBy('number',10);
//追加值,例如原有值是hello,追加后變成hello-world
$redis->append('key', '-world');
//獲取key的長度
$redis->strlen('key');
//截取緩存的值
$redis->getRange('key', 0, 5); // 鍵值截取從0位置開始到5位置結束???????????????????????????
```
## 三:常見List的操作
```
//向列表左邊添加一個元素,返回鏈表長度
$redis->lpush('list', 'javasrcipt');
$redis->lpush('list', 'html');
$redis->lpush('list', 'css');
$redis->lpush('list', 'php');
//獲取列表所有值
$list = $redis->lrange('list', 0, -1);
["php","css","javasrcipt "]
//從左邊刪除一個
$redis->lpop('list');
//獲取列表所有值
$list = $redis->lrange('list', 0, -1);
["css","html","javasrcipt "]
//向列表右邊添加一個元素,返回鏈表長度
$redis->rpush('rlist', 'python');
$redis->rpush('rlist', 'go');
$redis->rpush('rlist', 'node');
//獲取列表所有值
$list = $redis->lrange('list', 0, -1);
["python","go","node"]
//從右邊刪除一個
$redis->rpop('rlist');
//獲取列表所有值
$list = $redis->lrange('list', 0, -1);
["css","html","javasrcipt "]
//通過下標修改元素的值
$redis->lset('list', 0, 'newV3');
```
## 三:常見 Hash的操作
```
// 緩存訂單數據
$redis->hset('order', 'order_key', 'D2022401086');
$redis->hset('order', 'create_time', '20224010618');
$redis->hset('order', 'product_name', '衣服');
$redis->hset('order', 'price', '100');
//還可以批量緩存一個hash,比如緩存一個用戶數據
$user = [
'id'=> 1,
'name' => 'itbsl',
'age' => 25,
'email' => 'itbsl@gmail.com',
'address' => '北京朝陽區大望路'
];
$redis->hmset('user', $user);
//獲取user的name字段
$redis->hget('user','name');
//獲取一個hash中所有的key和value
$redis->hgetall('order');
["order_key" => "D2022401086" ,"create_time" => "product_name" => "衣服", "price" => 100 ]
//獲取一個hash中所有的key
$redis->hkeys('order');
["order_key","create_time","product_name","price"]
//獲取hash緩存的值
$redis->hvals('order');
["D2022401086","20224010618","衣服","100"]
//獲取一個hash中key的數量
$redis->hlen('order');
//刪除hash中一個key 如果表不存在或key不存在則返回false
$redis->hdel('order', 'product_name'); //類似unset($order['product_name'])
```
## 四:常見Set的操作
```
//添加
$redis->sadd('team', 'kobe');
$redis->sadd('team', 'jordan');
$redis->sadd('team', 'curry');
$redis->sadd('team', 'kobe');//由于kobe已經被添加到team集合中,所以重復添加是無效的
//獲取值
$redis->smembers('set');
["kobe","jordan","curry"]
//刪除指定的值
$redis->srem('team', 'kobe', 'curry');
["jordan"]
//查看集合中成員的數量
$redis->scard('team');
//計算兩個集合的交集
$redis->sinter('set1', 'set2')
//計算兩個集合的并集
$redis->sunion('set1', 'set2')
//計算兩個集合的差集
$redis->sdiff('set1', 'set2')
```
## 四:常見ZSet的操作
```
//添加
$redis->zadd('set', 1, 'cat');
$redis->zadd('set', 2, 'dog');
$redis->zadd('set', 3, 'fish');
//獲取所有值
$redis->zrange('set', 0, -1);
["cat","dog","fish"]
//獲取分值(score)最大的三位,可以用作點擊率(score)最高的使用場景
$redis->zRevRange('set', 0, 2, true);
//獲取score在[40, 90]之間的元素,按照score從小到大排序
$redis->zRangeByScore('set', 40, 90);
//返回元素的score值
$redis->zscore('set', 'dog'); //2
//查看集合中成員的數量
$redis->zcard('set'); //3
//獲取分值在[50,90]的元素的數量
$count = $redis->zCount('zSet', 50, 90);
//刪除指定成員
$redis->zrem('set', 'cat');
//刪除score在[40, 70]之間的元素
$redis->zRemRangeByScore('set', 40, 70);
```