最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis基本數(shù)據(jù)類(lèi)型示例詳解

 更新時(shí)間:2025年09月06日 08:57:28   作者:xclic  
本文給大家介紹了Redis基本數(shù)據(jù)類(lèi)型示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

Redis 的所有數(shù)據(jù)都是以 key-value(鍵值對(duì))的形式存儲(chǔ)的,我們所說(shuō)的數(shù)據(jù)類(lèi)型指的是 value 的數(shù)據(jù)類(lèi)型。key 永遠(yuǎn)都是一個(gè)字符串(String)。

0、通用命令

keys:查看當(dāng)前庫(kù)所有key (匹配:keys *1)
exists key:判斷某個(gè)key是否存在
type key:查看你的key是什么類(lèi)型
del key:刪除指定的key數(shù)據(jù)
expire key 10:10秒鐘:為給定的key設(shè)置過(guò)期時(shí)間
ttl key:查看還有多少秒過(guò)期,-1表示永不過(guò)期,-2表示已過(guò)期
select:命令切換數(shù)據(jù)庫(kù)
dbsize:查看當(dāng)前數(shù)據(jù)庫(kù)的key的數(shù)量
flushdb:清空當(dāng)前庫(kù)
flushall:清空全部庫(kù)

1、String(字符串)

String是Redis最基礎(chǔ)的數(shù)據(jù)類(lèi)型,可存儲(chǔ)字符串、數(shù)字和二進(jìn)制數(shù)據(jù)(如圖片),單個(gè)值最大512MB。對(duì)于整數(shù)和浮點(diǎn)數(shù)類(lèi)型,可以直接執(zhí)行原子性的自增/自減操作。

數(shù)據(jù)結(jié)構(gòu):簡(jiǎn)單動(dòng)態(tài)字符串(Simple Dynamic String,縮寫(xiě)SDS)。是可以修改的字符串,內(nèi)部結(jié)構(gòu)實(shí)現(xiàn)上類(lèi)似于Java的ArrayList,采用預(yù)分配冗余空間的方式來(lái)減少內(nèi)存的頻繁分配

常用命令示例

# 基礎(chǔ)操作
127.0.0.1:6379> SET user:name "Alice"   # 設(shè)置鍵值對(duì)
OK
127.0.0.1:6379> GET user:name           # 獲取值
"Alice"
127.0.0.1:6379> DEL user:name           # 刪除鍵
(integer) 1
127.0.0.1:6379> GET user:name
(nil)
# 數(shù)字操作(原子性)
127.0.0.1:6379> SET article:100:views 0
OK
127.0.0.1:6379> INCR article:100:views  # 自增1
(integer) 1
127.0.0.1:6379> INCRBY article:100:views 10 # 增加10
(integer) 11
127.0.0.1:6379> DECR article:100:views      # 自減1
(integer) 10
# 批量操作(節(jié)省網(wǎng)絡(luò)開(kāi)銷(xiāo))
127.0.0.1:6379> MSET user:1:name "Bob" user:1:email "bob@example.com"
OK
127.0.0.1:6379> MGET user:1:name user:1:email
1) "Bob"
2) "bob@example.com"
# 設(shè)置過(guò)期時(shí)間(常用于緩存)
127.0.0.1:6379> SET session:xyz123 "user_data" EX 3600 # 3600秒后自動(dòng)過(guò)期
OK
# 不存在時(shí)設(shè)置(分布式鎖常用)
127.0.0.1:6379> SETNX lock:order 1  # 成功返回 1,失敗返回 0

應(yīng)用場(chǎng)景

  • 緩存:存儲(chǔ)數(shù)據(jù)庫(kù)查詢結(jié)果
  • 計(jì)數(shù)器:網(wǎng)站訪問(wèn)量、點(diǎn)贊數(shù)
  • 會(huì)話存儲(chǔ):用戶登錄令牌
  • 分布式鎖:使用 SETNX 實(shí)現(xiàn)

2、Hash(哈希)

Hash 是一個(gè)鍵值對(duì)集合,適合存儲(chǔ)對(duì)象。每個(gè) Hash 可以存儲(chǔ) 2³² - 1 個(gè)字段-值對(duì)。

數(shù)據(jù)結(jié)構(gòu):ziplist(壓縮列表),hashtable(哈希表)。當(dāng)field-value長(zhǎng)度較短且個(gè)數(shù)較少時(shí),使用ziplist,否則使用hashtable。

常用命令示例

# 存儲(chǔ)一個(gè)用戶對(duì)象
127.0.0.1:6379> HSET user:1000 name "Alice" age 30 email "alice@example.org" # 設(shè)置多個(gè)field
(integer) 3
127.0.0.1:6379> HGET user:1000 name # 獲取一個(gè)field的值
"Alice"
127.0.0.1:6379> HGETALL user:1000   # 獲取整個(gè)哈希
1) "name"
2) "Alice"
3) "age"
4) "30"
5) "email"
6) "alice@example.org"
127.0.0.1:6379> HKEYS user:1000     # 獲取所有field名
1) "name"
2) "age"
3) "email"
127.0.0.1:6379> HVALS user:1000     # 獲取所有value
1) "Alice"
2) "30"
3) "alice@example.org"
# 批量獲取字段
127.0.0.1:6379> HMGET user:1001 name age # ["Alice", "30"]
# 統(tǒng)計(jì)字段數(shù)量
127.0.0.1:6379> HLEN user:1001  # 2
# 單獨(dú)操作某個(gè)field
127.0.0.1:6379> HINCRBY user:1000 age 1 # 給age字段的值增加1
(integer) 31
127.0.0.1:6379> HSET user:1000 age 32   # 直接設(shè)置age字段
(integer) 0
127.0.0.1:6379> HDEL user:1000 email    # 刪除email字段
(integer) 1

應(yīng)用場(chǎng)景

  • 對(duì)象存儲(chǔ):用戶信息、商品信息
  • 購(gòu)物車(chē):用戶ID為鍵,商品ID為字段,數(shù)量為值
  • 配置存儲(chǔ):系統(tǒng)配置項(xiàng)

3、List(列表)

List 是簡(jiǎn)單的字符串列表,按照插入順序排序。元素可以重復(fù)??梢詮念^部或尾部添加元素。

它的底層實(shí)際是個(gè)雙向鏈表,對(duì)兩端的操作性能很高,通過(guò)索引下標(biāo)的操作中間的節(jié)點(diǎn)性能會(huì)較差。

常用命令示例

# 像一個(gè)隊(duì)列(FIFO:先進(jìn)先出)
127.0.0.1:6379> LPUSH orders:queue "order1001" # 從左邊插入
(integer) 1
127.0.0.1:6379> LPUSH orders:queue "order1002"
(integer) 2
127.0.0.1:6379> RPOP orders:queue # 從右邊取出,得到最早進(jìn)入的"order1001"
"order1001"
127.0.0.1:6379> RPOP orders:queue # 取出"order1002"
"order1002"
# 像一個(gè)棧(LIFO:后進(jìn)先出)
127.0.0.1:6379> LPUSH my:stack "task1"
127.0.0.1:6379> LPUSH my:stack "task2"
127.0.0.1:6379> LPOP my:stack # 從左邊取出,得到最后進(jìn)入的"task2"
"task2"
# 獲取列表范圍
127.0.0.1:6379> RPUSH news:latest "news_id_555" # 從右邊插入,構(gòu)建時(shí)間順序列表
127.0.0.1:6379> RPUSH news:latest "news_id_556"
127.0.0.1:6379> RPUSH news:latest "news_id_557"
127.0.0.1:6379> LRANGE news:latest 0 2 # 獲取前3個(gè)元素
1) "news_id_555"
2) "news_id_556"
3) "news_id_557"
127.0.0.1:6379> LRANGE news:latest 0 -1 # 獲取所有元素,-1表示最后一個(gè)
1) "news_id_555"
2) "news_id_556"
3) "news_id_557"

典型場(chǎng)景

  • 消息隊(duì)列(LPUSH + BRPOP 實(shí)現(xiàn)生產(chǎn)者 - 消費(fèi)者模型)
  • 最新列表(如用戶最新動(dòng)態(tài)、商品評(píng)論)
  • 棧(LPUSH + LPOP)和隊(duì)列(LPUSH + RPOP)

4、Set(集合)

Set 是 String 類(lèi)型的無(wú)序集合,元素唯一不重復(fù),支持交集、并集、差集等操作

數(shù)據(jù)結(jié)構(gòu):它底層其實(shí)是一個(gè)value為nullhash表,所以添加,刪除,查找的復(fù)雜度都是O(1)。

常用命令示例

# 添加成員并自動(dòng)去重
127.0.0.1:6379> SADD article:800:tags "tech" "redis" "database" "tech"
(integer) 3 # 返回成功添加的數(shù)量,重復(fù)的"tech"被忽略
127.0.0.1:6379> SMEMBERS article:800:tags # 獲取集合所有成員(無(wú)序)
1) "database"
2) "redis"
3) "tech"
# 集合運(yùn)算
127.0.0.1:6379> SADD user:alice:follows "user:ben" "user:charlie" "user:diana"
(integer) 3
127.0.0.1:6379> SADD user:bob:follows "user:alice" "user:diana" "user:evan"
(integer) 3
127.0.0.1:6379> SINTER user:alice:follows user:bob:follows # 交集:共同關(guān)注
1) "user:diana"
127.0.0.1:6379> SUNION user:alice:follows user:bob:follows # 并集:所有關(guān)注的人
1) "user:alice"
2) "user:ben"
3) "user:charlie"
4) "user:diana"
5) "user:evan"
127.0.0.1:6379> SISMEMBER user:alice:follows "user:ben" # 檢查ben是否在alice的關(guān)注列表中
(integer) 1
# 隨機(jī)元素(抽獎(jiǎng))
127.0.0.1:6379> SADD lottery:users "user1" "user2" "user3" "user4" "user5"
(integer) 5
127.0.0.1:6379> SRANDMEMBER lottery:users 2 # 隨機(jī)抽取2個(gè)用戶,不刪除
1) "user3"
2) "user1"
127.0.0.1:6379> SPOP lottery:users 1 # 隨機(jī)抽取1個(gè)用戶,并從集合中刪除(防止重復(fù)中獎(jiǎng))
1) "user2"

典型場(chǎng)景

  • 去重存儲(chǔ)(如用戶瀏覽歷史、點(diǎn)贊記錄)
  • 好友關(guān)系(共同好友、好友推薦)
  • 標(biāo)簽系統(tǒng)(文章標(biāo)簽、商品分類(lèi))
  • 隨機(jī)推薦(抽獎(jiǎng))

5、ZSet (Sorted Set - 有序集合)

Sorted Set 類(lèi)似 Set,但每個(gè)元素都關(guān)聯(lián)一個(gè)分?jǐn)?shù)(score),元素按分?jǐn)?shù)從小到大排序。

數(shù)據(jù)結(jié)構(gòu):

  • hash:hash的作用就是關(guān)聯(lián)元素value和權(quán)重score,保障元素value的唯一性,可以通過(guò)元素value找到相應(yīng)的score值。
  • 跳躍表:跳躍表的目的在于給元素value排序,根據(jù)score的范圍獲取元素列表。
# 添加成員和分?jǐn)?shù)
127.0.0.1:6379> ZADD leaderboard 100 "player1" 85 "player2" 120 "player3"
(integer) 3

# 按分?jǐn)?shù)升序獲?。ǖ偷礁?,WITHSCORES選項(xiàng)會(huì)返回分?jǐn)?shù))
127.0.0.1:6379> ZRANGE leaderboard 0 -1 WITHSCORES
1) "player2"
2) "85"
3) "player1"
4) "100"
5) "player3"
6) "120"

# 按分?jǐn)?shù)降序獲?。ǜ叩降停@取Top 2)
127.0.0.1:6379> ZREVRANGE leaderboard 0 1 WITHSCORES
1) "player3"
2) "120"
3) "player1"
4) "100"

# 按分?jǐn)?shù)范圍查詢
127.0.0.1:6379> ZRANGEBYSCORE leaderboard 90 110 WITHSCORES # 獲取90<=score<=110的成員
1) "player1"
2) "100"

# 更新玩家分?jǐn)?shù)(原子操作)
127.0.0.1:6379> ZINCRBY leaderboard 15 "player2" # 給player2加15分
"100"
127.0.0.1:6379> ZREVRANK leaderboard "player2" # 查看player2的排名(降序排名,0是第一名)
(integer) 1

典型場(chǎng)景

  • 排行榜(用戶積分、商品銷(xiāo)量)
  • 優(yōu)先級(jí)隊(duì)列(按分?jǐn)?shù)排序任務(wù))
  • 范圍查詢(篩選分?jǐn)?shù)在特定區(qū)間的元素)

6、總結(jié)

Redis 的五種核心數(shù)據(jù)類(lèi)型各有其優(yōu)勢(shì)和應(yīng)用場(chǎng)景:

  • String:最簡(jiǎn)單靈活,適用于大多數(shù)簡(jiǎn)單場(chǎng)景
  • Hash:適合存儲(chǔ)對(duì)象,可以部分更新字段
  • List:提供順序存儲(chǔ),適合隊(duì)列和堆棧場(chǎng)景
  • Set:提供唯一性和集合運(yùn)算,適合標(biāo)簽和社交關(guān)系
  • Sorted Set:結(jié)合了Set和排序功能,適合排行榜和優(yōu)先級(jí)隊(duì)列

到此這篇關(guān)于Redis基本數(shù)據(jù)類(lèi)型示例詳解的文章就介紹到這了,更多相關(guān)Redis數(shù)據(jù)類(lèi)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳細(xì)聊聊Redis的過(guò)期策略

    詳細(xì)聊聊Redis的過(guò)期策略

    redis 過(guò)期策略是定期刪除+惰性刪除,下面這篇文章主要給大家介紹了關(guān)于Redis過(guò)期策略的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • Redis開(kāi)啟鍵空間通知實(shí)現(xiàn)超時(shí)通知的步驟詳解

    Redis開(kāi)啟鍵空間通知實(shí)現(xiàn)超時(shí)通知的步驟詳解

    這篇文章主要介紹了Redis開(kāi)啟鍵空間通知實(shí)現(xiàn)超時(shí)通知的步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • redis分布式鎖之可重入鎖的實(shí)現(xiàn)代碼

    redis分布式鎖之可重入鎖的實(shí)現(xiàn)代碼

    相信大家都知道可重入鎖的作用防止在同一線程中多次獲取鎖而導(dǎo)致死鎖發(fā)生,本文通過(guò)幾個(gè)例子給大家分享redis分布式鎖之可重入鎖的實(shí)現(xiàn)代碼,對(duì)redis分布式鎖的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-05-05
  • Redis下載與安裝全過(guò)程(Windows版)

    Redis下載與安裝全過(guò)程(Windows版)

    這篇文章詳細(xì)介紹了如何在Windows系統(tǒng)上安裝和配置Redis,包括下載、安裝步驟、配置服務(wù)、啟動(dòng)和停止服務(wù)以及基本測(cè)試方法,同時(shí),還解決了一些常見(jiàn)的連接問(wèn)題,如外部服務(wù)器連接失敗
    2026-02-02
  • Redis緩存雪崩原理、防御策略與工程實(shí)踐指南

    Redis緩存雪崩原理、防御策略與工程實(shí)踐指南

    緩存雪崩 是指在某一時(shí)刻,大量緩存 Key 同時(shí)失效,導(dǎo)致所有請(qǐng)求穿透到后端數(shù)據(jù)庫(kù),瞬間壓垮數(shù)據(jù)庫(kù)服務(wù),進(jìn)而引發(fā)整個(gè)系統(tǒng)雪崩式崩潰的現(xiàn)象,本文給大家介紹Redis緩存雪崩深度解析:原理、防御策略與工程實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Redis?命令詳解與實(shí)戰(zhàn)案例

    Redis?命令詳解與實(shí)戰(zhàn)案例

    本文詳細(xì)介紹了Redis的基礎(chǔ)知識(shí)、核心數(shù)據(jù)結(jié)構(gòu)與命令、高級(jí)功能與命令、最佳實(shí)踐與性能優(yōu)化,以及實(shí)戰(zhàn)應(yīng)用場(chǎng)景,通過(guò)實(shí)戰(zhàn)案例,展示了如何使用Redis構(gòu)建高性能應(yīng)用系統(tǒng),感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • 深入了解Redis的性能

    深入了解Redis的性能

    這篇文章主要介紹了Redis的性能,作者通過(guò)Visual Studio上的C#程序?qū)ζ溥M(jìn)行了分析,需要的朋友可以參考下
    2015-06-06
  • Redis實(shí)現(xiàn)數(shù)據(jù)的交集、并集、補(bǔ)集的示例

    Redis實(shí)現(xiàn)數(shù)據(jù)的交集、并集、補(bǔ)集的示例

    本文主要介紹了Redis實(shí)現(xiàn)數(shù)據(jù)的交集、并集、補(bǔ)集的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Redis解決緩存一致性問(wèn)題

    Redis解決緩存一致性問(wèn)題

    本文主要介紹了Redis?解決緩存一致性問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • Redis中緩存和數(shù)據(jù)庫(kù)雙寫(xiě)數(shù)據(jù)不一致的原因及解決方案

    Redis中緩存和數(shù)據(jù)庫(kù)雙寫(xiě)數(shù)據(jù)不一致的原因及解決方案

    這篇文章主要介紹了Redis中緩存和數(shù)據(jù)庫(kù)雙寫(xiě)數(shù)據(jù)不一致的原因及解決方案,文中通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

大埔县| 武隆县| 手机| 凤凰县| 阳东县| 涞源县| 天水市| 南宫市| 华安县| 富蕴县| 马鞍山市| 土默特左旗| 渝北区| 五常市| 新田县| 比如县| 富顺县| 陆丰市| 平远县| 鄱阳县| 乌兰察布市| 宿迁市| 黔西| 左权县| 定州市| 阿荣旗| 龙陵县| 丹江口市| 浦城县| 太谷县| 天峨县| 曲沃县| 开封市| 石城县| 得荣县| 资兴市| 乌审旗| 东阿县| 拉萨市| 秀山| 广宁县|