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

Redis key鍵的具體使用

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

Redis 是一種鍵值(key-value)型的緩存型數(shù)據(jù)庫,它將數(shù)據(jù)全部以鍵值對的形式存儲在內存中,并且 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 的查找效率,并且浪費內存空間。
  • key 取值也不能過短,否則會使得 key 可讀性變差。

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

idname
01XiaoHong

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

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

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

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

在 Redis 中,我們也可以將一個空字符串設置成 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 重新設置了新的 value,那么原來的 value 就會被覆蓋掉。因此,您可以用這種方法來修改 key 存儲的值。

3) key過期時間

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

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

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

Redis key命令格式

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

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 鍵命令做了簡單的總結:

Redis 鍵命令

命令說明
DEL key若鍵存在的情況下,該命令用于刪除鍵。
DUMP key用于序列化給定 key ,并返回被序列化的值。
EXISTS key用于檢查鍵是否存在,若存在則返回 1,否則返回 0。
EXPIRE key設置 key 的過期時間,以秒為單位。
EXPIREAT key該命令與 EXPIRE 相似,用于為 key 設置過期時間,不同在于,它的時間參數(shù)值采用的是時間戳格式。
PEXPIRE key設置 key 的過期,以毫秒為單位。
PEXPIREAT key與 PEXPIRE 相似,用于為 key 設置過期時間,采用以毫秒為單位的時間戳格式。
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設置過期時間

該命令用于設置 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

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

3) PEXPIREAT設置過期時間

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

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

設置成功返回 1,若 key 不存在或者不能為其設置過期時間,則返回 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 命令是一個基于游標的迭代器,每次被調用之后, 都會向用戶返回一個新的游標, 用戶在下次迭代時需要使用這個新游標作為 SCAN 命令的游標參數(shù), 否則將無法繼續(xù)跌代。如果新游標返回 0 則表示迭代結束。

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 設置過期時間的情況下,使用該命令檢查 key 剩余的過期時間。

當鍵沒有設置過期時間,表示是永久有效時,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

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

相關文章

  • Redis如何統(tǒng)計用戶訪問量

    Redis如何統(tǒng)計用戶訪問量

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

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

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

    Redis鍵值設計的實踐

    本文主要介紹了Redis鍵值設計的實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • 使用SpringBoot集成redis的方法

    使用SpringBoot集成redis的方法

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

    python中使用redis用法詳解

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

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

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

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

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

    基于redis實現(xiàn)的點贊功能設計思路詳解

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

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

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

    Redis Template使用詳解示例教程

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

最新評論