1. 程式人生 > 實用技巧 >redis 應用場景

redis 應用場景

redis應用場景:

一.string

1.快取

簡單key-value儲存

2.分散式鎖

setnx key value,當key不存在時,將 key 的值設為 value ,返回1

若給定的 key 已經存在,則setnx不做任何動作,返回0。

當setnx返回1時,表示獲取鎖,做完操作以後del key,表示釋放鎖,如果setnx返回0表示獲取鎖失敗。

3.計數器

如知乎每個問題的被瀏覽器次數

set key 0 
incr key // incr readcount::{帖子id} 每閱讀一次 
get key // get readcount::{帖子id} 獲取閱讀量 

二.hash

比如我們要儲存使用者資訊,ID、姓名、電話、年齡、身高 ,怎麼儲存?

key = userdata使用者ID

hashKey = 姓名,value = xx

hashKey = 電話,value = xx

hashKey = 年齡,value = xx

hashKey = 身高,value = xx

查詢時,取出key即可。

//新增
$redis->hSet(key, hashKey, value);
$redis->hSet(key, hashKey, value);
$redis->hSet(key, hashKey, value);
//編輯
$redis->hSet(key, hashKey, value);
//查詢
$redis->hGetAll(key); //
查詢所有屬性 $redis->hGet(key, hashKey); //查詢某個屬性

三.list

佇列:比如實現一個簡單的日誌收集功能或傳送大量簡訊、郵件的功能,實現方式是先將資料收集到佇列中,然後有一個定時任務去消耗佇列,處理該做的事情。

直接使用redis的rpush,lpop和lpush,rpop

//進佇列
$redis->lpush(key, value);
//出佇列
$redis->rpop(key);  

四.set

可以基於set做交集,並集,差集的操作。如把2個人的粉絲列表弄一個交集,就能看到兩個人的共同好友是誰

1.實現點贊,簽到,like等功能

//1001使用者給8001帖子點贊
sadd like::8001 1001 srem like::8001 1001 //取消點贊 sismember like::8001 1001 //檢查使用者是否點過贊 smembers like::8001 //獲取點讚的使用者列表 scard like::8001 //獲取點贊使用者數

2.電商商品篩選:每個商品入庫的時候即會建立他的靜態標籤列表如,品牌,尺寸,處理器,記憶體

// 將拯救者y700P-001和ThinkPad-T480這兩個元素放到集合brand::lenovo 
sadd brand::lenovo 拯救者y700P-001 ThinkPad-T480 
sadd screenSize::15.6 拯救者y700P-001 機械革命Z2AIR 
sadd processor::i7 拯救者y700P-001 機械革命X8TIPlus 
 
// 獲取品牌為聯想,螢幕尺寸為15.6,並且處理器為i7的電腦品牌(sinter為獲取集合的交集) 
sinter brand::lenovo screenSize::15.6 processor::i7 -> 拯救者y700P-001 

五.zset

排序的set,可以去重還可以排序,寫進去的時候給一個分數,自動根據根據分數排序,分數可以自定義排序規則

redis的zset天生是用來做排行榜的、好友列表, 去重, 歷史記錄等業務需求

// user1的使用者分數為 10 
zadd ranking 10 user1 
zadd ranking 20 user2 
// 取分數最高的3個使用者 
zrevrange ranking 0 2 withscores