能夠對string進行自增和自減,從而實現計數器的功能。git
將熱點數據緩存起來,同時設置內存的最大使用量和淘汰策略來保證緩存的命中率。web
使用redis做爲統一的session服務器,則後端能夠進行集羣部署。redis
在分佈式場景下,沒法使用單機環境下的鎖來實現對多個節點上的進程進行同步,可使用redis的SETNX(SET If Not Exists)命令,來實現分佈式鎖。算法
問題:在「執行setnx以後執行expire以前」用戶進程意外crash,這個鎖不久永遠得不到釋放了嗎?後端
set指令有很是複雜的參數,能夠同時把setnx和expire合成一條指令來用的!緩存
「多個進程執行如下Redis命令:」服務器
SETNX lock.foo <current Unix time + lock timeout + 1>
session
Set能夠實現交集、並集等操做,從而實現共同好友等功能;編輯器
sadd key value //往集合添加元素,key是指向一個set
sinter key1 key2 ... //查詢集合的交集
複製代碼
ZSet能夠實現有序性操做,從而實現排行榜等功能;(以訪問量爲分數進行排列)分佈式
geohash地理空間索引。
geoadd key longitude latitude member //經度-維度-成員,添加到指定的集合中。能夠一個省一個集合
geoadd beijing 116.182881 39.72877 良鄉大學城北 geoadd beijing 116.182881 39.72877 良鄉大學城南 geoadd beijing 116.318427 39.986771 新東方大廈 geoadd beijing 116.319873 39.987953 中鋼大廈 geodist 返回兩個位置之間的距離 geodist beijing 新東方大廈 良鄉大學城北 m //m爲距離單位,km,mi,ft geopos 返回指定位置的經緯度 geopos beijing 新東方大廈 georadius 返回以給定的經緯度爲中心,長度範圍內的成員。 georadius beijing 116.3180199 39.398575 100 km withcoord //withcoord指定返回的格式 georadiusbymember 返回指定成員長度範圍內的其餘成員。(能夠實現附近的人) georadiusbymember beijing 新東方大廈 20 km 複製代碼
12 KB
內存,就能夠計算接近
2^64
個不一樣元素的基數。
❝若是用set做統計,須要保護海量的數據,那內存還不炸了;
位圖也能夠作統計,儘管相比set內存消耗要少一些,但內存的消耗量仍是不少;
❞
pfadd key element //添加元素到指定的HyperLogLog,不存在則返回1,存在則返回0
pfcount key //返回HyperLogLog的基數估算值
pfmerge key1 key2 ...//將多個HyperLogLog合併成一個
複製代碼
通常使用:統計數據量大,單條數據佔用內存也大的狀況,且容許存在偏差。
本文使用 mdnice 排版