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

Redis key鍵的具體使用

 更新時間:2024年02月28日 10:03:40   作者:Itmastergo  
Redis 是一種鍵值(key-value)型的緩存型數(shù)據(jù)庫,它將數(shù)據(jù)全部以鍵值對的形式存儲在內(nèi)存中,本文就來介紹一下key鍵的具體使用,感興趣的可以了解一下

Redis 是一種鍵值(key-value)型的緩存型數(shù)據(jù)庫,它將數(shù)據(jù)全部以鍵值對的形式存儲在內(nèi)存中,并且 key 與 value 一一對應。這里的 key 被形象的稱之為密鑰,Redis 提供了諸多操作這把“密鑰”的命令,從而實現(xiàn)了對存儲數(shù)據(jù)的管理。

你可以把 key 看成 value 的變量,通過檢索 key 就可以找到對應的 value 值。

為了更加全面的了解 key,我們將從以下三個維度做深入講解:

  • key 的類型
  • key 的命名規(guī)范
  • key 的過期時間

了解key的特點

1) key的類型

key 的類型對應著 value 的類型,同樣也有五種(string、list、hash、set、zset)。如果 key 指向的是一個字符串類型的值,那么 key 的類型就是字符串。我們可以通過TYPE命令來查看 key 的類型,示例如下:

# 字符串
redis> SET weather "sunny"
OK
redis> TYPE weather
string

# 列表
redis> LPUSH book_list "programming in scala"
(integer) 1
redis> TYPE book_list
list

# 集合
redis> SADD pat "dog"
(integer) 1
redis> TYPE pat
set

2) key的命名規(guī)范

key 的命名需要遵循以下規(guī)則:

  • key 取值不可以太長,否則會影響 value 的查找效率,并且浪費內(nèi)存空間。
  • key 取值也不能過短,否則會使得 key 可讀性變差。

在 key 的取值上, Redis 官方建議使用“見名知意”的字符串格式,因為這樣便于我們理解 key 的含義。比如要現(xiàn)在存放一個用戶的姓名,其信息如下:

idname
01XiaoHong

我們使用一個 key 來存儲用戶的名字,key 的設(shè)置如下所示:

127.0.0.1:6379> set user:id:01:username XiaoHong
OK

上述示例,自定義了uesr:id:01:username這個 key,通過 key 不僅可以知道用戶的 id,還可以知道這個 key 是用來存儲用戶名字的。注意,這里的:只是起到分割符的作用,并不是固定的語法格式。

注意:在符合業(yè)務場景情況下,key 要盡可能的簡單明了,您可以使用單詞的縮寫,或者自定義縮寫格式。

在 Redis 中,我們也可以將一個空字符串設(shè)置成 key,示例如下:

127.0.0.1:6379> SET "" mp.CSDN.net
OK
127.0.0.1:6379> GET ""
"mp.CSDN.net"

key 的類型并不局限于字符串,在 Redis 中 key 具有二進制安全的特性,這意味著它可以使用任何二進制序列,但是這種 key 過于復雜一般不建議采用。總之,“見名知意”就是 key 最佳的命名規(guī)范。

對于相同數(shù)據(jù)類型而言,如果您對已經(jīng)存在的 key 重新設(shè)置了新的 value,那么原來的 value 就會被覆蓋掉。因此,您可以用這種方法來修改 key 存儲的值。

3) key過期時間

Redis 允許你為 key 設(shè)置一個過期時間(使用 EXPIRE 等命令),也就是“到點自動刪除”,這在實際業(yè)務中是非常有用的,一是它可以避免使用頻率不高的 key 長期存在,從而占用內(nèi)存資源;二是控制緩存的失效時間。

Redis 會把每個設(shè)置了過期時間的 key 存放到一個獨立的字典中,并且會定時遍歷這個字典來刪除到期的 key。除了定時遍歷之外,它還會使用“惰性策略”來刪除過期的 key。所謂“惰性策略”指的是當客戶端訪問這個 key 的時候,Redis 對 key 的過期時間進行檢查,如果過期了就立即刪除。Redis 使用兩種方式相結(jié)合的方法來處理過去的 key。 

過期時間,有許多的應用場景,比如購物 App 會在特定的時間節(jié)點推出相關(guān)的活動,比如雙十一、雙十二、618購物節(jié)等,這些活動都是一年一度如期開辦,因此當下一期舉行時,上一期的活動的數(shù)據(jù)就沒有意義了,在這種情景下就可以給 key 設(shè)置一個過期時間,從而減少無用數(shù)據(jù)占用內(nèi)存資源。

Redis key命令格式

了解完 key 的相關(guān)規(guī)范,接下來看一下和 key 相關(guān)的命令,它的語法格式如下所示:

redis 127.0.0.1:6379> COMMAND KEY_NAME
  • COMMAND:表示 key 的命令;
  • KEY_NAME:表示 key 的名字。

通過示例進一步說明,DEL代表刪除命令,而  www.biancheng.net 是鍵。如果成功刪除了鍵,則將的返回整數(shù) 1,否則將返回整數(shù) 0。示例如下:

redis 127.0.0.1:6379> SET www.CSDN.net "CSDN你好"
OK
#刪除key
redis 127.0.0.1:6379> DEL  www.CSDN.net
(integer) 1
#若鍵不存在刪除失敗
redis 127.0.0.1:6379> DEL age
(integer) 0

Redis鍵命令匯總

下表對常用的 Redis 鍵命令做了簡單的總結(jié):

Redis 鍵命令

命令說明
DEL key若鍵存在的情況下,該命令用于刪除鍵。
DUMP key用于序列化給定 key ,并返回被序列化的值。
EXISTS key用于檢查鍵是否存在,若存在則返回 1,否則返回 0。
EXPIRE key設(shè)置 key 的過期時間,以秒為單位。
EXPIREAT key該命令與 EXPIRE 相似,用于為 key 設(shè)置過期時間,不同在于,它的時間參數(shù)值采用的是時間戳格式。
PEXPIRE key設(shè)置 key 的過期,以毫秒為單位。
PEXPIREAT key與 PEXPIRE 相似,用于為 key 設(shè)置過期時間,采用以毫秒為單位的時間戳格式。
KEYS pattern此命令用于查找與指定 pattern 匹配的 key。
MOVE key db將當前數(shù)據(jù)庫中的 key 移動至指定的數(shù)據(jù)庫中(默認存儲為 0 庫,可選 1-15中的任意庫)。
PERSIST key該命令用于刪除 key 的過期時間,然后 key 將一直存在,不會過期。
PTTL key用于檢查 key 還剩多長時間過期,以毫秒為單位。
TTL key用于檢查 key 還剩多長時間過期,以秒為單位。
RANDOMKEY從當前數(shù)據(jù)庫中隨機返回一個 key。
RENAME key newkey修改 key 的名稱。
RENAMENX key newkey如果新鍵名不重復,則將 key 修改為 newkey。
SCAN cursor基于游標的迭代器,用于迭代數(shù)據(jù)庫中存在的所有鍵,cursor 指的是迭代游標。
TYPE key該命令用于獲取 value 的數(shù)據(jù)類型。

常用命令演示

下面對一些較難理解的命令做實例演示:

1) DUMP序列化

該命令用于將鍵對應的值做序列化處理,實例如下:

127.0.0.1:6379> SET num 12
OK
127.0.0.1:6379> DUMP num
"\x00\xc0\x0c\t\x00\xec\xd8\xa9\x9d\b\x82\xdfd"

如果 key 不存在時,則返回 nil。

2) EXPIRE設(shè)置過期時間

該命令用于設(shè)置 key 的過期時間,當 key 過期后將不可以再使用。

127.0.0.1:6379> set www.CSDN.net Python
OK
127.0.0.1:6379> set www.CSDN.net Python EX 60
OK
127.0.0.1:6379> EXPIRE www.CSDN.net 120
(integer) 1

上面介紹了兩種設(shè)置過期時間的方法,它們都可以實現(xiàn)過期時間設(shè)置,key 過期后將自動被刪除。

3) PEXPIREAT設(shè)置過期時間

以時間戳格式設(shè)置過期時間,并以毫秒為單位。

127.0.0.1:6379> set www.CSDN.net Python
OK
127.0.0.1:6379> PEXPIREAT www.CSDN.net 12000000000
(integer) 1

設(shè)置成功返回 1,若 key 不存在或者不能為其設(shè)置過期時間,則返回 0。

4) KEYS命令查找鍵

查找指定模式的鍵。

redis 127.0.0.1:6379> SET course1 redis
OK
redis 127.0.0.1:6379> SET course2 php
OK
redis 127.0.0.1:6379> SET course3 python
OK
127.0.0.1:6379> keys course*
1) "course1"
2) "course2"
3) "course3"
#獲取所有key
127.0.0.1:6379> keys *
1) "course1"
2) "course2"
3) "course3"
4) "num"
5) "www.CSDN.net"

注意:keys * 會返回當前庫中所有的鍵。

5) SCAN cursor

SCAN 命令是一個基于游標的迭代器,每次被調(diào)用之后, 都會向用戶返回一個新的游標, 用戶在下次迭代時需要使用這個新游標作為 SCAN 命令的游標參數(shù), 否則將無法繼續(xù)跌代。如果新游標返回 0 則表示迭代結(jié)束。

SCAN 命令的語法格式如下:

SCAN cursor [MATCH pattern] [COUNT count]

參數(shù)說明:

  • cursor :指定游標,從 0 開始新的迭代。
  • pattern:指定匹配的模式。
  • count:返回多少個元素,默認值為 10 。

SCAN 令可以迭代數(shù)據(jù)庫中的所有鍵,如果想針對特定的數(shù)據(jù)類型迭代,那么命令自然也要做相應的變化。如下所示:

  • SSCAN 命令用于迭代集合鍵中的元素。
  • HSCAN 命令用于迭代哈希鍵中的鍵值對。
  • ZSCAN 命令用于迭代有序集合中的元素。

該命令的使用示例如下:

127.0.0.1:6379> SCAN 0
1) "3"
2)  1) "name"
    2) "website"
    3) "CSDN2"
    4) "www.CSDN.net"
    5) "CSDN3"
    6) "CSDN1"
    7) "course2"
    8) "topic"
    9) "course1"
   10) "age"
127.0.0.1:6379> SCAN 3
1) "0"
2) 1) "CSDN"
   2) "course3"
   3) "userid:1"
   4) "num"

6) TTL命令

在 key 設(shè)置過期時間的情況下,使用該命令檢查 key 剩余的過期時間。

當鍵沒有設(shè)置過期時間,表示是永久有效時,TTL 命令返回 -1;當鍵過期或者被刪除時,TTL 命令返回 -2。示例如下:

127.0.0.1:6379> SET www.CSDN.net hello
OK
127.0.0.1:6379> ttl www.CSDN.net
(integer) -1
127.0.0.1:6379> SET user:1 Jack EX 120
OK
127.0.0.1:6379> TTL user:1
(integer) 108
127.0.0.1:6379> DEL user:1
(integer) 1
127.0.0.1:6379> TTL user:1
(integer) -2

到此這篇關(guān)于Redis key鍵的具體使用的文章就介紹到這了,更多相關(guān)Redis key鍵內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 淺談Redis中的緩存更新策略

    淺談Redis中的緩存更新策略

    這篇文章主要介紹了淺談Redis中的緩存更新策略,CacheAsidePatter是我們比較常用的緩存更新策略,其由緩存調(diào)用者在更新數(shù)據(jù)庫時,在業(yè)務邏輯中設(shè)置緩存更新,需要的朋友可以參考下
    2023-08-08
  • 解析高可用Redis服務架構(gòu)分析與搭建方案

    解析高可用Redis服務架構(gòu)分析與搭建方案

    我們按照由簡至繁的步驟,搭建一個最小型的高可用的Redis服務。 本文通過四種方案給大家介紹包含每種方案的優(yōu)缺點及詳細解說,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-06-06
  • redis+mysql+quartz 一種紅包發(fā)送功能的實現(xiàn)

    redis+mysql+quartz 一種紅包發(fā)送功能的實現(xiàn)

    這篇文章主要介紹了redis+mysql+quartz 一種紅包發(fā)送功能的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場景

    淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場景

    這篇文章主要介紹了淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場景,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Redis分布式限流生產(chǎn)環(huán)境落地方案

    Redis分布式限流生產(chǎn)環(huán)境落地方案

    本文主要介紹了Redis分布式限流生產(chǎn)環(huán)境落地方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-02-02
  • 淺析對redis?hashtable?的sizemask理解

    淺析對redis?hashtable?的sizemask理解

    在?Redis?的哈希表實現(xiàn)中,index?=?hash?&?dict->ht[0].sizemask?是計算鍵值對應存儲位置的核心操作,本文給大家介紹redis?hashtable?的sizemask理解,感興趣的朋友一起看看吧
    2025-03-03
  • Spring boot+redis實現(xiàn)消息發(fā)布與訂閱的代碼

    Spring boot+redis實現(xiàn)消息發(fā)布與訂閱的代碼

    這篇文章主要介紹了Spring boot+redis實現(xiàn)消息發(fā)布與訂閱,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值需要的朋友可以參考下
    2020-04-04
  • Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析

    Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析

    這篇文章主要介紹了Redis數(shù)據(jù)結(jié)構(gòu)SortedSet的底層原理解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Redis實現(xiàn)附近商鋪的項目實戰(zhàn)

    Redis實現(xiàn)附近商鋪的項目實戰(zhàn)

    本文主要介紹了Redis實現(xiàn)附近商鋪的項目實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • 基于Redis實現(xiàn)API接口訪問次數(shù)限制

    基于Redis實現(xiàn)API接口訪問次數(shù)限制

    日常開發(fā)中會有一個常見的需求,需要限制接口在單位時間內(nèi)的訪問次數(shù),比如說某個免費的接口限制單個IP一分鐘內(nèi)只能訪問5次,該怎么實現(xiàn)呢,本文小編給大家介紹了如何基于Redis實現(xiàn)API接口訪問次數(shù)限制,需要的朋友可以參考下
    2024-11-11

最新評論

沧源| 绿春县| 蒲江县| 阜阳市| 连江县| 抚顺市| 永和县| 达日县| 吴桥县| 武汉市| 章丘市| 璧山县| 牟定县| 游戏| 石狮市| 农安县| 通许县| 临高县| 彭州市| 宣汉县| 蓬溪县| 海宁市| 兰坪| 山东省| 合江县| 小金县| 黄陵县| 上饶县| 库伦旗| 鹤壁市| 寿光市| 马尔康县| 峨山| 同仁县| 乌兰浩特市| 焦作市| 科技| 吉安市| 济阳县| 留坝县| 津南区|