Redis(Remote Dictionary Server)redis
Redis 是徹底開源的,遵照 BSD 協議,是一個高性能的 key-value 數據庫。
Redis 與其餘 key - value 緩存產品有如下三個特色:數據庫
一、Redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用。
二、Redis不單單支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
三、Redis支持數據的備份,即master-slave模式的數據備份。緩存
Redis 字符串數據類型的相關命令用於管理 redis 字符串值markdown
類比Java:HasMap<String, Object>數據結構
Object -->分佈式
基本操做:oop
SET --存入一個字符串鍵 SETNX --存入一個字符串鍵,若Key存在則操做失敗 GET --獲取指定Key的字符串 MSET --批量存入字符串鍵 MGET --批量獲取指定Key的字符串 DEL --刪除指定Key(全部類型均可以使用此命令) 123456性能
應用場景:
(1)、分佈式鎖:SETNX(Key, Value),釋放鎖:DEL(Key)spa
基本操做:.net
INCRBY Key increment --對Key進行數值相加,key不存在則新建 DECRBY Key decrement --對Key進行數值相減,key不存在則新建 INCR Key --對Key進行自加1,key不存在則新建 DECR Key --對Key進行自減1,key不存在則新建 1234
應用場景:
(1)、文章的瀏覽量,視頻的觀看量
(2)、全局序列
基本操做:
GETBIT Key offset --獲取Key下標offset的值 SETBIT Key offset value --對Key下標offset進行設值 BITCOUNT Key [start] [end] --統計start到end位置設值爲1的數量 BITOPS op destkey [key...] --對多個key進行位計算op(AND/OR/XOR/NOT) 1234
應用場景:
(1)、存儲圖片
(2)、用戶在線統計
Redis hash 是一個 string 類型的 field(字段) 和 value(值) 的映射表,hash 特別適合用於存儲對象
類比Java:HashMap<String, HashMap<String, Object>>
key - field - value 結構
基本操做:
HSET --存入一個key filed 散列結構 HSETNX --存入一個key field,若key中filed已經存在則操做失敗 HGET --獲取指定key field HMSET --批量存入key filed HMGET --批量獲取key filed HDEL --刪除指定Key filed HINCRBY --對key field的數值進行加減操做 1234567
優勢:
(1)、將信息凝聚在一塊兒,便於管理
(2)、從必定上避免誤操做,減小key衝突
(3)、減小內存/IO/CPU的消耗
應用場景:
(1)、購物車功能
Redis列表是簡單的字符串列表,按照插入順序排序。你能夠添加一個元素到列表的頭部(左邊)或者尾部(右邊)
類比Java:HasMap<String, List>
基本操做:
LPUSH Key value [value...] --往key的列表鍵中左邊放入一個元素,key不存在則新建 RPUSH Key value [value...] --往key的列表鍵中右邊放入一個元素,key不存在則新建 LPOP Key --從key的列表鍵最左端彈出一個元素 RPOP Key --從key的列表鍵最右端彈出一個元素 LRANGE Key start stop --獲取列表鍵從start下標到stop下標的元素 BLPOP Key [Key...] timeout --阻塞的從key的列表鍵最左端彈出一個元素,若列表鍵中不存在元素,阻塞等待{timeout}秒,若{timeout}=0,一直阻塞
BRPOP Key [Key...] timeout --阻塞的從key的列表鍵最右端彈出一個元素,若列表鍵中不存在元素,阻塞等待{timeout}秒,若{timeout}=0,一直阻塞 12345678
應用場景:
(1)、消息隊列
(2)、新聞推薦
Redis 的 Set 是 String 類型的無序集合。集合成員是惟一的,這就意味着集合中不能出現重複的數據
類比Java:HasMap<String, HashSet>
基本操做:
SADD Key member [member...] --往集合鍵key中存放元素,若key不存在則新建 SREM Key member [member...] --從集合鍵key中刪除元素 SMEMBERS Key --獲取集合鍵key中的全部元素 SCARD Key --獲取集合鍵key中的元素個數 SISMEMBER Key member --判斷{member}元素是否存在於集合鍵key中 SRANDMEMBER Key [count] --從集合鍵key中選出{count}個元素,不從集合鍵key中刪除 SPOP Key [count] --從集合鍵key中選出{count}個元素,而且從集合鍵key中刪除 1234567
應用場景:
(1)、抽獎
(2)、點贊,轉發,收藏
集合運算:
SINTER Key [Key...] --交集運算 SINTERSTORE destination key [key...] --交集運算,運算結果保存在集合鍵destination中 SUNION Key [Key...] --並集運算 SUNIONSTORE destination Key [Key...] --並集運算,運算結果保存在集合鍵destination中 SDIFF Key [Key...] --差集運算 SDIFFSTORE destination key [key...] --差集運算,運算結果保存在集合鍵destination中 123456
應用場景:
(1)、共同關注
(2)、可能認識的人
(3)、我關注的人也關注了他
(4)、商品篩選
Redis 有序集合和集合同樣也是 string 類型元素的集合,且不容許重複的成員
基本操做:
ZADD Key score element [...] --往有序集合鍵key中存放元素,若key不存在則新建 ZREM Key element [element...] --從有序集合鍵key中刪除元素 ZSCORE Key element --獲取有序集合鍵key中{element}元素的score值 ZINCRBY Key increment element --給有序集合鍵key中{element}元素進行score值操做,若key不存在則新建,{element}元素不存在則新增後進行score值操做 ZCARD Key --獲取有序集合鍵key中元素個數 ZRANGE Key start stop [WITHSCORES] --正序獲取有序集合鍵key中從start下標到end下標的元素 ZREVRANGE Key start stop [WITHSCORES] --倒序獲取有序集合鍵key中從start下標到end下標的元素 1234567
集合運算:
ZUNIONSTORE destkey numkeys key [key...] --並集運算 ZINTERSTORE destkey numkeys key [key...] --交集運算 12
應用場景:
(1)、排行榜,熱搜榜
(2)、周榜,月榜,年榜
如您在閱讀中發現不足,歡迎留言!!!