通過命令和運用場景,帶你瞭解Redis中的五大基礎型別

2022-02-11 22:00:16
本篇文章通過命令和運用場景,帶大家瞭解一下Redis中的五大基礎型別,命令和實踐比較多,希望對大家有所幫助!

redis 傳統 5 巨量資料型別的運用

redis 傳統 5 巨量資料型別的落地應用

Redis 介紹:

Redis 是一個開源(BSD許可)的,記憶體中的資料結構儲存系統,它可以用作資料庫、快取和訊息中介軟體。 它支援多種型別的資料結構,如 字串(strings), 雜湊(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)] 與範圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢。 Redis 內建了 複製(replication),LUA指令碼(Lua scripting), LRU驅動事件(LRU eviction),事務(transactions) 和不同級別的 磁碟持久化(persistence), 並通過 Redis哨兵(Sentinel) 和自動 分割區(Cluster)提供高可用性(high availability)。【相關推薦:Redis視訊教學

redis 命令查詢:http://www.redis.cn/commands.html

備註:redis 命令不區分大小寫,而 key 是區分大小寫的

查詢命令幫助:

help @型別名詞

範例:

1.png

string 字串型別

最常用

set key vuue

getkey

同時設定/獲取多個鍵值

MSET key value [key value ...]

MGET key [key ,,,]

數值增減

遞增數位 incr key

增加指定的整數 incrby key increment

遞減數值 decr key

減少指定的整數 decrby key decrement

獲取字元長度

STRLEN key

分散式鎖

setnx key value

set key value [EX seconds] [PX milliseconds] [NX|XX]

2.png

  • EX: key 在多少秒後過期
  • PX: key自多少毫秒後過期
  • NX: 當key 不存在的時候,才建立 key. 效果等同於 setnx
  • XX: 當 key 存在的時候,覆蓋 key

3.png

運用場景

  • 商品編號、訂單號採用 INCR 命令生成
  • 是否喜歡文章點贊

閱讀數:只要點選了 rest 地址,直接使用 incr key 命令增加一個數位 1,完成記錄數位。

4.png

命令實踐

5.png

hash 雜湊型別

和 Java 資料結構對映

Map<Stirng, Map<Object, Object>>

一次設定一個欄位值

HSET key field value

一次獲取一個欄位值

HGET key field

一次設定多個欄位值

HMSET key field value [fild value ...]

一次獲取多個欄位值

HMGET key field [field ...]

獲取所有欄位值

hgetall key

獲取某個 key 內的全部數量

hlen

刪除一個 key

hdel

命令演示

6.png

應用場景

購物車的早期,當前中小廠可以使用

新增商品 --> hset shopcar:uid1024 334488 1

新增商品 --> hset shopcar:uid2014 334477 1

增加商品數量 --> hincrby shopcar:uid1024 334477 1

商品總數 --> hlen shopcar:uid1024

全部選擇 --> hgetall shopcar:uid1024

7.png

list 列表型別

向列表左邊新增元素

lpush key value [value ...]

向列表右邊新增元素

rpush key value [value ...]

檢視列表

lrange key start stop

獲取列表中元素的個數

llen key

命令使用

8.png

應用場景

微信文章訂閱公眾號

1、【xx寶】和 【xx報】釋出了文章分別是 11 和 22

2、 作者關注了他們兩個,只要他們釋出了新的文章,就會推播到我的 list

lpush likearticle: uid1024 11 22

3、檢視作者自己的訂閱號的全部文章,類似分頁,下面 0-10 就是 一次顯示 10 條 lrange likearticle:uid1024 0 10

9.png

set 不重複列表型別

新增元素

sadd key member [member ...]

刪除元素

srem key member [member ...]

獲取集合的所有元素

smembers key

判斷元素是否在集合中

sismember key member

獲取集合中的元素個數

scard key

從集合中隨機彈出一個元素, 元素不刪除

srandmember key [數位]

從集合中隨機彈出一個元素,出一個刪一個

spop key [數位]

集合運算

  • 集合的差集運算 A - B

屬於 A 但不屬於 B 的元素構造成的集合

sdiff key [key ...]

  • 集合的交集元算 A ^ B

屬於 A 同時也屬於 B 共同擁有的元素

simter key [key ...]

  • 集合的並集運算 A v B

屬於 A 或者屬於 B 的元素合併後的集合

sunion key [key ...]

運用場景

微信抽獎小程式

10.png

1、使用者 id, 立即參與, sadd key 使用者id

2、顯示已經有多少人蔘與了當前有 67231 人蔘與, scard key

3、抽獎(從 set 中任意選取 N 箇中獎人)

srandmember key 2 隨機抽獎 2 個人, 元素不會刪除

spop key 3 司機抽獎 3 個人, 元素會刪除

微信朋友圈點贊

11.png

1、新增點贊 ; sadd pub:msgid 點贊使用者id1 點贊使用者id2

2、取消點贊;srem pub:msgid 點贊使用者id

3、展示所有點過讚的使用者 smembers pub:msgid

4、點贊使用者數統計,就是常見的待點讚的紅色數數位 scard pub:msgid

5、判斷某個朋友是否對樓主點過贊, sismember pub:msgid 使用者id

微博好友關注社交關係

12.png

共同關注的人

sadd s1 1 2 3 4

sadd s2 2 3 6 8

sinter s1 s2

共同關注:我去某人的微博,馬上獲取和某人共同關注的人

我關注的人, 也關注了他(大家愛好相同)

我關注了華為餘承東, 餘承東也關注了張召動, 我和餘總有共同的愛好

sadd s1 1 2 3 4 5

sadd s2 3 4 5 6 7

sismember s1 3

sismember s2 3

QQ內推可能認識的人

sadd s1 1 2 3 4 5

sadd s2 3 4 5 6 7

// 共同好友

sinter s1 s2

// 差集

sdiff s1 s2

sdiff s2 s1

zset 有序集合

常用命令

1、 向有序集合中新增一個元素和該元素的分數

2、 新增元素

  • ZADD key score member [score member ...]

3、 按照元素分數從小到達的順序返回索引從 strat 到 stop 之間的所有元素

  • zrange key start stop [WITHSORES]

4、獲取元素的分數

  • zscore key member [member ...]

5、刪除元素

  • zrem key member [member ...]

6、 獲取指定分數範圍的元素

  • zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

7、增加某個元素的分數

  • zincrby key increment member

8、 獲取集合中元素的數量

  • zcard key

9、獲得指定分數範圍內的元素個數

  • zcount key min max

10、按照排名範圍刪除元素

  • zremrangebyrank key start stop

11、獲取元素的排名

  • 從小到大 zrank key member

  • 從大到小 zrevrank key member

應用場景

1、更具商品銷售對商品進行排序顯示

思路:定義商品銷售排行榜(sorted set 集合),key 為 goods:sellsort, 分數為商品銷售數量。

商品編號 1001 的銷量是 9 , 商品編號 1002 的銷量是 15 | zadd goods:sellsort 9 1001 15 1002
有一個顧客又買了 2 件商品 1001 , 商品編號是 1001 響亮增加 2 | zincrby goods:sellsort 2 10001
求商品銷量前 10 名 zrange goods:sellsort 0 10 withscores
13.png

2、 抖音熱搜

14.png

1、點選視訊

ZINCRBY hotavi:20220203 1 八百

ZINCRBY hotavi:20220203 15 八百 2 花木蘭

2、展示當日排行前 10 條

zrevrange hotavi:20220203 0 9 withscores

更多程式設計相關知識,請存取:!!

以上就是通過命令和運用場景,帶你瞭解Redis中的五大基礎型別的詳細內容,更多請關注TW511.COM其它相關文章!