Redis的基本用法以及場景分析

Redis(Remote Dictionary Server)redis

簡介:

Redis 是徹底開源的,遵照 BSD 協議,是一個高性能的 key-value 數據庫。
Redis 與其餘 key - value 緩存產品有如下三個特色:數據庫

一、Redis支持數據的持久化,能夠將內存中的數據保存在磁盤中,重啓的時候能夠再次加載進行使用。
二、Redis不單單支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
三、Redis支持數據的備份,即master-slave模式的數據備份。緩存

1、String

Redis 字符串數據類型的相關命令用於管理 redis 字符串值markdown

類比Java:HasMap<String, Object>數據結構

Object -->分佈式

一、字符串(String)

  • 基本操做:oop

    SET --存入一個字符串鍵 SETNX --存入一個字符串鍵,若Key存在則操做失敗 GET --獲取指定Key的字符串 MSET --批量存入字符串鍵 MGET --批量獲取指定Key的字符串 DEL --刪除指定Key(全部類型均可以使用此命令) 123456性能

  • 應用場景:
    (1)、分佈式鎖:SETNX(Key, Value),釋放鎖:DEL(Key)spa

二、數值(Number)

  • 基本操做:.net

    INCRBY Key increment --對Key進行數值相加,key不存在則新建 DECRBY Key decrement --對Key進行數值相減,key不存在則新建 INCR Key --對Key進行自加1,key不存在則新建 DECR Key --對Key進行自減1,key不存在則新建 1234

  • 應用場景:
    (1)、文章的瀏覽量,視頻的觀看量
    (2)、全局序列

三、二進制(bit)

  • 基本操做:

    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)、用戶在線統計

2、HashMap

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)、購物車功能

3、List

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)、新聞推薦

4、Set

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)、商品篩選

5、ZSet

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)、周榜,月榜,年榜

如您在閱讀中發現不足,歡迎留言!!!

原文連接:blog.csdn.net/qq\_4006577…?

相關文章
相關標籤/搜索