亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

0、通用命令

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

1、String(字符串)

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

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

常用命令示例

# 基礎(chǔ)操作
127.0.0.1:6379> SET user:name "Alice"   # 設(shè)置鍵值對
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ò)開銷)
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è)置過期時間(常用于緩存)
127.0.0.1:6379> SET session:xyz123 "user_data" EX 3600 # 3600秒后自動過期
OK
# 不存在時設(shè)置(分布式鎖常用)
127.0.0.1:6379> SETNX lock:order 1  # 成功返回 1,失敗返回 0

應(yīng)用場景

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

2、Hash(哈希)

Hash 是一個鍵值對集合,適合存儲對象。每個 Hash 可以存儲 2³² - 1 個字段-值對。

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

常用命令示例

# 存儲一個用戶對象
127.0.0.1:6379> HSET user:1000 name "Alice" age 30 email "alice@example.org" # 設(shè)置多個field
(integer) 3
127.0.0.1:6379> HGET user:1000 name # 獲取一個field的值
"Alice"
127.0.0.1:6379> HGETALL user:1000   # 獲取整個哈希
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)計字段數(shù)量
127.0.0.1:6379> HLEN user:1001  # 2
# 單獨操作某個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)用場景

  • 對象存儲:用戶信息、商品信息
  • 購物車:用戶ID為鍵,商品ID為字段,數(shù)量為值
  • 配置存儲:系統(tǒng)配置項

3、List(列表)

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

它的底層實際是個雙向鏈表,對兩端的操作性能很高,通過索引下標(biāo)的操作中間的節(jié)點性能會較差。

常用命令示例

# 像一個隊列(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"
# 像一個棧(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)建時間順序列表
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個元素
1) "news_id_555"
2) "news_id_556"
3) "news_id_557"
127.0.0.1:6379> LRANGE news:latest 0 -1 # 獲取所有元素,-1表示最后一個
1) "news_id_555"
2) "news_id_556"
3) "news_id_557"

典型場景

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

4、Set(集合)

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

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

常用命令示例

# 添加成員并自動去重
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 # 獲取集合所有成員(無序)
1) "database"
2) "redis"
3) "tech"
# 集合運算
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ī)元素(抽獎)
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個用戶,不刪除
1) "user3"
2) "user1"
127.0.0.1:6379> SPOP lottery:users 1 # 隨機(jī)抽取1個用戶,并從集合中刪除(防止重復(fù)中獎)
1) "user2"

典型場景

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

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

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

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

  • hash:hash的作用就是關(guān)聯(lián)元素value和權(quán)重score,保障元素value的唯一性,可以通過元素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選項會返回分?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

典型場景

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

6、總結(jié)

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

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

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

相關(guān)文章

  • SpringMVC集成redis配置的多種實現(xiàn)方法

    SpringMVC集成redis配置的多種實現(xiàn)方法

    這篇文章主要介紹了SpringMVC集成redis配置的多種實現(xiàn)方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 關(guān)于redigo中PubSub的一點小坑分析

    關(guān)于redigo中PubSub的一點小坑分析

    這篇文章主要給大家介紹了關(guān)于redigo中PubSub的一點小坑的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • ?Redis 串行生成順序編碼的方法實現(xiàn)

    ?Redis 串行生成順序編碼的方法實現(xiàn)

    本文主要介紹了?Redis 串行生成順序編碼的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Redis高并發(fā)問題的解決方法

    Redis高并發(fā)問題的解決方法

    這篇文章主要介紹了Redis高并發(fā)問題的解決辦法,具有很好的參考價值,感興趣的小伙伴們可以參考一下,具體如下:
    2018-05-05
  • Redis字符串對象實用筆記

    Redis字符串對象實用筆記

    這篇文章主要給大家介紹了關(guān)于Redis字符串對象的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Redis的五種基本類型和業(yè)務(wù)場景和使用方式

    Redis的五種基本類型和業(yè)務(wù)場景和使用方式

    Redis是一種高性能的鍵值存儲數(shù)據(jù)庫,支持多種數(shù)據(jù)結(jié)構(gòu)如字符串、列表、集合、哈希表和有序集合等,它提供豐富的API和持久化功能,適用于緩存、消息隊列、排行榜等多種場景,Redis能夠?qū)崿F(xiàn)高速讀寫操作,尤其適合需要快速響應(yīng)的應(yīng)用
    2024-10-10
  • Windows下Redis安裝配置教程

    Windows下Redis安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了Windows下Redis安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Redis Sorted Set 跳表的實現(xiàn)示例

    Redis Sorted Set 跳表的實現(xiàn)示例

    本文詳細(xì)解析了Redis中SortedSet跳表的實現(xiàn)原理,闡述了跳表的基本概念、結(jié)構(gòu)及其在SortedSet中的應(yīng)用,同時也指出了跳表在實際使用中的優(yōu)勢和局限,可以更好地運用Redis的SortedSet,優(yōu)化高并發(fā)環(huán)境中的數(shù)據(jù)查詢與操作,感興趣的可以了解一下
    2024-10-10
  • Redis?持久化原理分析和使用建議詳解

    Redis?持久化原理分析和使用建議詳解

    本文主要介紹了Redis提供的三大持久化機(jī)制,即AOF日志、RDB快照以及混合持久化機(jī)制,結(jié)合圖文實例給大家講解的非常詳細(xì),感興趣的朋友一起看看吧
    2025-02-02
  • Redis 對比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解

    Redis 對比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解

    Redis 是一個開源、支持網(wǎng)絡(luò)、基于內(nèi)存、鍵值對的 Key-Value 數(shù)據(jù)庫,本篇文章主要介紹了Redis 對比 Memcached 并在 CentOS 下進(jìn)行安裝配置詳解,有興趣的可以了解一下。
    2016-11-11

最新評論