91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis中有哪些應用場景

發布時間:2022-01-18 17:01:51 來源:億速云 閱讀:160 作者:iii 欄目:關系型數據庫

本篇內容介紹了“Redis中有哪些應用場景”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Redis數據類型和應用場景

Redis是一個Key-Value的存儲系統,使用ANSI C語言編寫。 key的類型是字符串。【相關推薦:Redis視頻教程】

value的數據類型8種數據類型:

  • 常見數據類型

    • string字符串類型

    • list列表類型

    • set集合類型

    • sortedset(zset)有序集合類型

    • hash類型

  • 不常見數據類型

    • bitmap位圖類型

    • geo地理位置類型

    • stream類型

  • 注意

    Redis中命令是忽略大小寫,(set SET),key是不忽略大小寫的 (NAME name)

Redis中有哪些應用場景

string字符串類型

Redis的String能表達3種值的類型:字符串、整數、浮點數 100.01 是個六位的串

常用命令

命令名稱命令格式命令描述
setset key value賦值
getget key取值
getsetgetset key value取值并賦值
msetMSET key1 value1 key2 value2 .. keyN valueN設置多個 key 的值為各自對應的 value。
mgetMGET KEY1 KEY2 .. KEYN返回所有(一個或多個)給定 key 的值
EXPIREEXPIRE   key  seconds設置一個鍵的過期時間(秒)
appendappend key value向尾部追加值
strlenstrlen key獲取字符串長度
setnxsetnx key value當value不存在時采用賦值
set key value NX PX 3000 原子操作,px 設置毫秒數
incrincr key遞增數字
incrbyincrby key increment增加指定的整數
decrdecr key遞減數字
decrbydecrby key decrement減少指定的整數

應用場景

  • 1、對象緩存

  • 2、單值緩存

  • 3、incr用于樂觀鎖 incr:遞增數字,可用于實現樂觀鎖 watch(事務)

  • 4、setnx用于分布式鎖 當value不存在時采用賦值,可用于實現分布式鎖

  • 5、計數器

  • 6、Web集群session共享

常用方法舉例

dockerRedis:0>keys *
dockerRedis:0>append testName 2
"1"
dockerRedis:0>exists testName
"1"
dockerRedis:0>append testName " 1234"
"6"
dockerRedis:0>get testName
"2 1234"
dockerRedis:0>set testName1 "testName1"
"OK"
dockerRedis:0>get testName1
"testName1"
dockerRedis:0>getset testName2 "testName2"
null
dockerRedis:0>get testName2
"testName2"
dockerRedis:0>strlen testName
"6"
dockerRedis:0>set incrTest "10"
"OK"
dockerRedis:0>incr incrTest
"11"
dockerRedis:0>get incrTest
"11"
dockerRedis:0>decr incrTest
"10"
dockerRedis:0>decrby incrTest 5
"5"
dockerRedis:0>mset set01 1 set02 2 set03 3
"OK"
dockerRedis:0>mget set01 set02 set03
1) "1"
2) "2"
3) "3"

list列表類型

list列表類型可以存儲有序、可重復的元素獲取頭部或尾部附近的記錄是極快的 list的元素個數最多為2^32-1個(40億)

常用命令

命令名稱命令格式命令描述
lpushlpush key v1 v2 v3 ...從左側插入列表
lpoplpop key從列表左側取出
rpushrpush key v1 v2 v3 ...從右側插入列表
rpoprpop key從列表右側取出
lpushxlpushx key value將值插入到列表頭部
blpopblpop key timeout從列表左側取出,當列表為空時阻塞,可以設置最大阻塞時間,單位為秒
llenllen key獲得列表中元素個數
lrangelrange key start end返回列表中指定區間的元素,區間通過start和end指定
lsetlset key index value將列表index位置的元素設置成value的值
rpoplpushrpoplpush key1 key2從key1列表右側彈出并插入到key2列表左側
rpushxrpushx key將值插入到列表尾部 value
brpopblpop key從列表右側取出,當列表為空時阻塞,可以設置最大阻塞時 timeout 間,單位為秒
lindexlindex key value獲得列表中下標為index的元素 index從0開始 index
ltrimltrim key start end對列表進行修剪,只保留start到end區間 end
brpoplpushbrpoplpush從key1列表右側彈出并插入到key2列表左側,會阻塞 key1 key2
linsertlinsert key BEFORE/AFTER pivot value將value插入到列表,且位于值pivot之前或之后

應用場景

  • 1、Stack(棧)=LPUSH + LPOP

  • 2、Queue(隊列)=LPUSH + RPOP

  • 3、Blocking MQ(阻塞隊列)=LPUSH + BRPOP

  • 4、用戶列表、商品列表、評論列表

set集合類型

Set:無序、唯一元素 集合中最大的成員數為 2^32 - 1

常用命令

命令名稱命令格式命令描述
saddsadd key value1 value2 ....往集合key中存入元素,元素存在則忽略,若key不存在則新建
sremsrem key value1 value2 ....從集合key中刪除元素
smemberssmembers key獲得集合中所有元素
spopspop key count從集合key中選出count個元素,元素從key中刪除
srandmembersrandmember key count從集合key中選出count個元素,元素不從key中刪除
scardscard key獲取集合key的元素個數
sismembersismember key member判斷member元素是否存在于集合key中
sintersinter key1 key2 key3求多集合的交集
sdiffsdiff key1 key2 key3求多集合的差集
sunionsunion key1 key2 key3求多集合的并集

應用場景

  • 微信抽獎小程序

  • 微博點贊、收藏、標簽

  • 微博微信關注模型

  • 電商商品篩選

zset有序集合類型

SortedSet(ZSet) 有序集合: 元素本身是無序不重復的 每個元素關聯一個分數(score) 可按分數排序,分數可重復

常用命令

命令名稱命令格式命令描述
zaddzadd key score1 member1 score2 member2 ...往有序集合key中加入帶分值元素
zremzrem key mem1 mem2 ....從有序集合key中刪除元素
zcardzcard key獲得有序集合中的元素數量
zcountzcount key min max返回集合中score值在[min,max]區間 的元素數量
zincrbyzincrby key increment member為有序集合key中元素member的分值加上increment
zscorezscore key member返回有序集合key中元素member的分值
zrankzrank key member獲得集合中member的排名(按分值從 小到大)
zrangezrange key start end正 序獲取有序集合key從start下標到stop下標的元素
zrevrankzrevrank key member獲得集合中member的排名(按分值從 大到小)
zrevrangezrevrange key start end倒序獲取有序集合key從start下標到stop下標的元素

應用場景

  • 點擊排行榜、銷量排行榜、關注排行榜

hash類型

Redis hash是一個string類型的field和value的映射表,它提供了字段和字段值的映射。每個 hash 可以存儲 2^32-1鍵值對(40多億)。

Redis中有哪些應用場景

  • 優點

    • 1、同類數據歸類整合儲存,方便數據管理

    • 2、相比string操作消耗內存與cpu更小

    • 3、相比string儲存更節省空間

  • 缺點

    • 1、過期功能不能使用在field上,只能用在key上

    • 2、Redis集群架構下不適合大規模使用

常用命令

命令名稱命令格式命令描述
hsethset key field value存儲一個哈希表key的鍵值
hmsethmset key field1 value1 field2 value2在一個哈希表key中存儲多個鍵值對
hgethget key field查看某個field是否存在
hmgethmget key field1 field2 ...獲取一個字段值
hsetnxhsetnx key field value存儲一個不存在的哈希表key的鍵值
hexistshexists key filed判斷filed是否存在
hgetallhgetall key獲取多個字段值
hdelhdel key field1 field2...刪除指定字段
hincrbyhincrby key field increment指定字段自增increment
hlenhlen key獲得字段數量

應用場景

  • 對象緩存

  • 購物車操作

bitmap位圖類型

bitmap是進行位操作的 通過一個bit位來表示某個元素對應的值或者狀態,其中的key就是對應元素本身。 bitmap本身會極大的節省儲存空間。

常用命令

命令名稱命令格式命令描述
setbitsetbit key offset value設置key在offset處的bit值(只能是0或者 1)。
getbitgetbit key offset獲得key在offset處的bit值
bitcountbitcount key獲得key的bit位為1的個數
bitposbitpos key value返回第一個被設置為bit值的索引值
bitopbitop and[or/xor/not] destkey key [key ...]對多個key 進行邏輯運算后存入destkey 中

應用場景

  • 1、用戶每月簽到,用戶id為key , 日期作為偏移量 1表示簽到

  • 2、統計活躍用戶, 日期為key,用戶id為偏移量 1表示活躍

  • 3、查詢用戶在線狀態, 日期為key,用戶id為偏移量 1表示在線

geo地理位置類型

geo是Redis用來處理位置信息的。在Redis3.2中正式使用。主要是利用了Z階曲線、Base32編碼和geohash算法

常用命令

命令名稱命令格式命令描述



geoaddgeoadd key 經度 緯度 成員名稱1 經度1 緯度1 成 員名稱2 經度2 緯度 2 ...添加地理坐標
geoposgeopos key 成員名稱1 成員名稱2...返回成員經緯度
geodistgeodist key 成員1 成員2 單位計算成員間距離
georadiusbymembergeoradiusbymember key 成員 值單位 count 數 asc[desc]根據成員查找附近的成員
geohashgeohash key 成員名稱1 成員名稱2...返回標準的 geohash串

應用場景

1、記錄地理位置

2、計算距離

3、查找"附近的人"

stream數據流類型

stream是Redis5.0后新增的數據結構,用于可持久化的消息隊列。

幾乎滿足了消息隊列具備的全部內容,包括:

  • 消息ID的序列化生成

  • 消息遍歷

  • 消息的阻塞和非阻塞讀取

  • 消息的分組消費

  • 未完成消息的處理

  • 消息隊列監控

每個Stream都有唯一的名稱,它就是Redis的key,首次使用 xadd 指令追加消息時自動創建

應用場景

消息隊列的使用

“Redis中有哪些應用場景”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

株洲市| 东辽县| 宜兰市| 时尚| 吴堡县| 疏勒县| 壤塘县| 永州市| 滁州市| 库尔勒市| 靖西县| 黑龙江省| 新田县| 邵阳市| 宣汉县| 庄浪县| 新营市| 磴口县| 泰和县| 新密市| 德庆县| 泸州市| 青川县| 田阳县| 将乐县| 梅河口市| 扎赉特旗| 齐齐哈尔市| 林甸县| 克什克腾旗| 达拉特旗| 新闻| 左权县| 康定县| 辽阳市| 南郑县| 宁海县| 武鸣县| 玛沁县| 桐乡市| 凤凰县|