《閒扯Redis一》五種數據類型之String型


原文出處www.yund.tech/zdetail.htm…html

做者: jstarsevenredis

1、前言

Redis 提供了5種數據類型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每種數據類型的特色對於redis的開發和運維很是重要。sql

String是Redis的最基本的數據類型,能夠理解爲與 Memcached 如出一轍的類型,即Key-Value型的數據,String類型是二進制安全的,另外 Redis 的 String 能夠包含任何數據,簡單的字符串、複雜的字符串(xml、json)、數字(整數、浮點數)、二進制(圖片、音頻、視頻),一個 Redis 中字符串 value 最多能夠是 512M。json

2、String 類型操做命令

命令 描述 用法
SET 1.將字符串值Value關聯到Key
2.Key已關聯則覆蓋,無視類型
3.本來Key帶有生存時間TTL,那麼TTL被清除
SET key value [EX seconds] [PX milliseconds] [NX|XX]
GET 1.返回key關聯的字符串值
2.Key不存在返回nil
3.Key存儲的不是字符串,返回錯誤,由於GET只用於處理字符串
GET key
MSET 1.同時設置一個或多個Key-Value鍵值對
2.某個給定Key已經存在,那麼MSET新值會覆蓋舊值
3.若是上面的覆蓋不是但願的,那麼使用MSETNX命令,全部Key都不存在纔會進行覆蓋
4.MSET是一個原子性操做,全部Key都會在同一時間被設置,不會存在有些更新有些沒更新的狀況
MSET key value [key value ...]
MGET 1.返回一個或多個給定Key對應的Value
2.某個Key不存在那麼這個Key返回nil
MGET key [key ...]
SETEX 1.將Value關聯到Key
2.設置Key生存時間爲seconds,單位爲秒
3.若是Key對應的Value已經存在,則覆蓋舊值
4.SET也能夠設置失效時間,可是不一樣在於SETNX是一個原子操做,即關聯值與設置生存時間同一時間完成
SETEX key seconds value
SETNX 1.將Key的值設置爲Value,當且僅當Key不存在
2.若給定的Key已經存在,SEXNX不作任何動做
SETNX key value

3、應用場景

  • 緩存功能:字符串最經典的使用場景,redis最爲緩存層,Mysql做爲儲存層,絕大部分請求數據都是redis中獲取,因爲redis具備支撐高併發特性,因此緩存一般能起到加速讀寫和下降 後端壓力的做用。
  • 計數器:許多運用都會使用redis做爲計數的基礎工具,他能夠實現快速計數、查詢緩存的功能,同時數據能夠一步落地到其餘的數據源。如:視頻播放數系統就是使用redis做爲視頻播放數計數的基礎組件。
  • 共享session:出於負載均衡的考慮,分佈式服務會將用戶信息的訪問均衡到不一樣服務器上,用戶刷新一次訪問可能會須要從新登陸,爲避免這個問題能夠用redis將用戶session集中管理,在這種模式下只要保證redis的高可用和擴展性的,每次獲取用戶更新或查詢登陸信息都直接從redis中集中獲取。
  • 限速:處於安全考慮,每次進行登陸時讓用戶輸入手機驗證碼,爲了短信接口不被頻繁訪問,會限制用戶每分鐘獲取驗證碼的頻率。

4、特殊的String操做:INCR/DECR

  INCR/DECR操做能夠利用Redis自動幫助咱們對一個Key對應的Value進行加減,在實際工做中仍是很經常使用的。後端

INCR/DECR操做在 Redis 中的相關命令:
複製代碼
命令 描述 用法
INCR 1)Key中存儲的數字值+1,返回增長以後的值
2)Key不存在,那麼Key的值被初始化爲0再執行INCR
3)若是值包含錯誤類型或者字符串不能被表示爲數字,那麼返回錯誤
4)值限制在64位有符號數字表示以內即-9223372036854775808~9223372036854775807
INCR key
DECR 1)Key中存儲的數字值-1
2)其他同INCR
DECR key
INCRBY 1)將key所存儲的值加上增量返回增長以後的值
2)其他同INCR
INCRBY key increment
DECRBY 1)將key所存儲的值減去減量decrement
2)其他同INCR
DECRBY key decrement

5、INCR/DECR 應用場景

  • 原先單機環境中統計在線人數,變成分佈式部署以後可使用INCR/DECR
  • 因爲Redis自己極高的讀寫性能,一些秒殺的場景庫存增減能夠基於Redis來作而不是直接操做DB

本文由博客一文多發平臺 OpenWrite 發佈!緩存

相關文章
相關標籤/搜索