redis基礎篇

clsld發表於2020-10-13

redis的應用場景

  1. 快取

    (會話快取,最常用)

    • 對於一些前端資料的快取,當有大量資料庫的增刪改查操作的時候,為了避免每次都去sql裡請求資料,可以把一些資料儲存到redis中去,這樣是直接從記憶體中將獲取資料,速度會增快很多

    • web端使用者,用於登入快取session資料,登入的一些資料資訊存到session中,快取到redis中

  2. 佇列

    (訊息佇列,比如支付,此外應用的場景還有例如活動排行榜或計數、釋出或訂閱訊息、商品列表或評論列表等)

    • redis中提供了list介面,這個list介面提供了lpush和rpop,這兩個方法具有原子性,可以插在佇列元素和彈出佇列元素
  3. 資料儲存

    • redis是非關係型資料庫,可以把redis直接用於資料儲存,提供了增刪改查等操作,因為redis有良好的硬碟持久化機制,reids資料就可以定期持久化到硬碟中,保證了redis資料的完整性和安全性
  4. redis鎖實現防刷機制

    • redis鎖可以處理好併發問題,redis資料型別中有一個set型別,set型別儲存資料的時候是無序的,而且每個值都不一樣,不能重複,這樣就可以快速的查詢元素中的某個值是否存在,精確的進行增刪改查操作

redis資料的基本型別

  1. String(字串型別)

    string儲存的元素型別可以是string/int/float,int型別可以進行增加和減少操作。

    set string koala
    #設定一個key為string,value為koala的鍵值對
    get string
    #得到value
    set string1 2
    
    incr string2 
    #將原本為string2:2的值增加1
    decrby string2 2
    #將原本為string2的值設定為2後自減1,即最後的值為1
    
  2. list(字串列表)

    list型別是一個有序的列表,有序表示的是從左到右火哦從右到左,而且資料內容是可以重複的。

    rpop 用於移除並返回列表的最後一個元素
    
    lpush list1 12
    
    lpush list1 13
    #往list1集合中新增元素
    
    rpop list1
    #移除最後一個元素並返回值
    
    lrange list1 0 -1
    #檢視元素從第一個到最後一個
    
  3. set(字串集合)

    set型別中提供了無序的方式來儲存多個不同的元素,set型別中每個元素的值都不一樣,使用者可以快速對元素中的值新增刪除,檢查某些值是否存在,重複的元素是無法繼續插入集合的。

    sadd set1 12
    #往集合無需集合裡新增一個元素
    
    sadd set1 12
    #新增失敗,因為集合裡面的值不能重複
    
    scrad set1
    #檢視set1裡面的元素有多少個
    
    sismeber set1 13
    #檢視13是否在set1這個集合中
    
    srem set1 13
    #從集合中刪除13
    
  4. hash(雜湊)

    雜湊也叫做雜湊型別,儲存的時候存的是鍵值對。查詢條數的時候只要是鍵的值不一樣,就是不同的條數,儘管值是相同的

    hset hash1 key1 12
    #在雜湊列表hash1中設定key為key1,value為12的鍵值對
    hset hash1 key2 13
    
    hget hash1 key1
    #得到雜湊列表hash1中key為key1的值
    
    hmget hash1 key1 key2
    #得到多個key的值
    
    hlen hash1
    #查詢hash1的條數
    
  5. sort set(有序字串集合)

    sort set中的值是全域性唯一的,一個值設定了之後再次設定就不會增加,只會覆蓋修改

    如果有兩條分數相同,排名應該怎麼檢視?

    如果兩個分值形同,會根據值兩個元素變數名的字典排序先後

    zadd zset1 10.1 val1
    zadd zset1 11.1 val2
    zadd zset1 12.1 val3
    
    zcard zset1
    #統計一下當前key下值的個數
    
    zrange zset1 0 2 withscores
    #檢視0到2的所有值和分數,按照排名列出
    

相關文章