欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis key鍵的具體使用

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

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

你可以把 key 看成 value 的變量,通過(guò)檢索 key 就可以找到對(duì)應(yīng)的 value 值。

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

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

了解key的特點(diǎn)

1) key的類型

key 的類型對(duì)應(yīng)著 value 的類型,同樣也有五種(string、list、hash、set、zset)。如果 key 指向的是一個(gè)字符串類型的值,那么 key 的類型就是字符串。我們可以通過(guò)TYPE命令來(lái)查看 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 取值不可以太長(zhǎng),否則會(huì)影響 value 的查找效率,并且浪費(fèi)內(nèi)存空間。
  • key 取值也不能過(guò)短,否則會(huì)使得 key 可讀性變差。

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

idname
01XiaoHong

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

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

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

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

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

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

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

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

3) key過(guò)期時(shí)間

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

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

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

Redis key命令格式

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

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

通過(guò)示例進(jìn)一步說(shuō)明,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鍵命令匯總

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

Redis 鍵命令

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

常用命令演示

下面對(duì)一些較難理解的命令做實(shí)例演示:

1) DUMP序列化

該命令用于將鍵對(duì)應(yīng)的值做序列化處理,實(shí)例如下:

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 不存在時(shí),則返回 nil。

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

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

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è)置過(guò)期時(shí)間的方法,它們都可以實(shí)現(xiàn)過(guò)期時(shí)間設(shè)置,key 過(guò)期后將自動(dòng)被刪除。

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

以時(shí)間戳格式設(shè)置過(guò)期時(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è)置過(guò)期時(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 * 會(huì)返回當(dāng)前庫(kù)中所有的鍵。

5) SCAN cursor

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

SCAN 命令的語(yǔ)法格式如下:

SCAN cursor [MATCH pattern] [COUNT count]

參數(shù)說(shuō)明:

  • cursor :指定游標(biāo),從 0 開(kāi)始新的迭代。
  • pattern:指定匹配的模式。
  • count:返回多少個(gè)元素,默認(rèn)值為 10 。

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

  • SSCAN 命令用于迭代集合鍵中的元素。
  • HSCAN 命令用于迭代哈希鍵中的鍵值對(duì)。
  • 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è)置過(guò)期時(shí)間的情況下,使用該命令檢查 key 剩余的過(guò)期時(shí)間。

當(dāng)鍵沒(méi)有設(shè)置過(guò)期時(shí)間,表示是永久有效時(shí),TTL 命令返回 -1;當(dāng)鍵過(guò)期或者被刪除時(shí),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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Redis如何統(tǒng)計(jì)用戶訪問(wèn)量

    Redis如何統(tǒng)計(jì)用戶訪問(wèn)量

    這篇文章主要介紹了Redis如何統(tǒng)計(jì)用戶訪問(wèn)量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Redis限流的幾種實(shí)現(xiàn)

    Redis限流的幾種實(shí)現(xiàn)

    面對(duì)越來(lái)越多的高并發(fā)場(chǎng)景,限流顯示的尤為重要,限流有許多種實(shí)現(xiàn)的方式,Redis具有很強(qiáng)大的功能,本文就詳細(xì)的介紹幾種方式,感興趣的可以了解一下
    2021-12-12
  • Redis鍵值設(shè)計(jì)的實(shí)踐

    Redis鍵值設(shè)計(jì)的實(shí)踐

    本文主要介紹了Redis鍵值設(shè)計(jì)的實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 使用SpringBoot集成redis的方法

    使用SpringBoot集成redis的方法

    這篇文章主要介紹了SpringBoot集成redis的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • python中使用redis用法詳解

    python中使用redis用法詳解

    Redis擁有豐富的數(shù)據(jù)結(jié)構(gòu),擁有事務(wù)功能,保證命令的原子性。由于是內(nèi)存數(shù)據(jù)庫(kù),讀寫(xiě)非常高速,可達(dá)10w/s的評(píng)率,所以一般應(yīng)用于數(shù)據(jù)變化快、實(shí)時(shí)通訊、緩存等。這篇文章給大家講解一下Python如何使用Redis,并進(jìn)行相關(guān)的實(shí)戰(zhàn)操作。
    2022-12-12
  • Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)

    Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)

    這篇文章主要介紹了Redis中的配置文件,數(shù)據(jù)持久化,事務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-12-12
  • 淺析PHP分布式中Redis實(shí)現(xiàn)Session的方法

    淺析PHP分布式中Redis實(shí)現(xiàn)Session的方法

    這篇文章主要介紹了PHP分布式中Redis實(shí)現(xiàn)Session的方法,文中詳細(xì)介紹了兩種方法的使用方法,并給出了測(cè)試的示例代碼,有需要的朋友可以參考借鑒,下面來(lái)一起看看吧,
    2016-12-12
  • 基于redis實(shí)現(xiàn)的點(diǎn)贊功能設(shè)計(jì)思路詳解

    基于redis實(shí)現(xiàn)的點(diǎn)贊功能設(shè)計(jì)思路詳解

    點(diǎn)贊是我們現(xiàn)在經(jīng)常見(jiàn)到的一個(gè)效果,如朋友圈、微博都有點(diǎn)贊的效果,下面這篇文章主要跟大家分享了基于redis實(shí)現(xiàn)的點(diǎn)贊功能設(shè)計(jì)思路的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家實(shí)現(xiàn)點(diǎn)贊功能具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • 分布式鎖為什么要選擇Zookeeper而不是Redis?看完這篇你就明白了

    分布式鎖為什么要選擇Zookeeper而不是Redis?看完這篇你就明白了

    Zookeeper的機(jī)制可以保證分布式鎖實(shí)現(xiàn)業(yè)務(wù)代碼簡(jiǎn)單,成本低,Redis如果要解決分布式鎖的問(wèn)題,對(duì)于一些復(fù)雜的情況,很難解決,成本較高,這篇文章重點(diǎn)給大家介紹分布式鎖選擇Zookeeper 而不是Redis的理由,一起看看吧
    2021-05-05
  • Redis Template使用詳解示例教程

    Redis Template使用詳解示例教程

    RedisTemplate的底層通過(guò)RedisConnectionFactory對(duì)多種Redis驅(qū)動(dòng)進(jìn)行集成,上層通過(guò)RedisOperations提供豐富的API,并結(jié)合Spring基于泛型的bean注入,為開(kāi)發(fā)提供了極大的便利,這篇文章主要介紹了Redis Template使用詳解示例教程,需要的朋友可以參考下
    2023-11-11

最新評(píng)論