日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Rediskey鍵
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ù)的管理。

成都創(chuàng)新互聯(lián)公司專注于高昌企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。高昌網(wǎng)站建設(shè)公司,為高昌等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

您可以把 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è)用戶的姓名,其信息如下:

id name
01 XiaoHong

我們使用一個(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 "" c.biancheng.net
OK
127.0.0.1:6379> GET ""
"c.biancheng.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.biancheng.net "編程幫你好"
OK
#刪除key
redis 127.0.0.1:6379> DEL  www.biancheng.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.biancheng.net Python
OK
127.0.0.1:6379> set www.biancheng.net Python EX 60
OK
127.0.0.1:6379> EXPIRE www.biancheng.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.biancheng.net Python
OK
127.0.0.1:6379> PEXPIREAT www.biancheng.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.biancheng.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) "biancheng2"
    4) "www.biancheng.net"
    5) "biancheng3"
    6) "biancheng1"
    7) "course2"
    8) "topic"
    9) "course1"
   10) "age"
127.0.0.1:6379> SCAN 3
1) "0"
2) 1) "biancheng"
   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.biancheng.net hello
OK
127.0.0.1:6379> ttl www.biancheng.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

如果想了解更多命令,請(qǐng)參考:http://doc.redisfans.com/


新聞名稱:Rediskey鍵
文章轉(zhuǎn)載:http://www.5511xx.com/article/cohpggj.html