深圳網(wǎng)站維護公司企拓客軟件多少錢
文章目錄
- 引言
- 一、什么是redis
- 1. redis簡介
- 2. redis的特點
- 3. redis的應(yīng)用場景
- 二、redis在windows下安裝
- 1. 下載安裝
- 2.驗證是否安裝成功
- 3. 配置環(huán)境變量
- 三、redis-cli常用命令介紹
- 1. redis-cli
- 2. keys *
- 3. set key value
- 4. get key
- 5. exists key
- 6. del key
- 7. info
- 8. flushdb
- 9. ping
- 10. select index
- 11. move key 數(shù)據(jù)名【0-15】
- 四、redis數(shù)據(jù)類型和key的命名規(guī)范
- 1. redis數(shù)據(jù)類型
- 2. key命名規(guī)范
- 五、字符串操作
- 六、hash類型操作
- 七、列表類型操作
- 八、集合類型操作
- 九、有序集合類型操作
- 十、node中使用ioredis連接Redis
- 總結(jié)
引言
數(shù)據(jù)庫在現(xiàn)代化的應(yīng)用開發(fā)中起著至關(guān)重要的作用,它們?yōu)槲覀兇鎯蜋z索大量的數(shù)據(jù)提供了便利。然而,在不斷增長的數(shù)據(jù)海洋中,我們?nèi)绾伪3謶?yīng)用的性能并快速地存儲和檢索數(shù)據(jù)呢?答案是使用Redis
。Redis
是一種開源的,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲系統(tǒng),它可以用作數(shù)據(jù)庫、緩存和消息中間件。在本文中,我們將介紹Redis
的基本概念,以及如何在Node.js
環(huán)境中使用Redis
。我們將探索Redis
的獨特性能,并演示如何通過Node.js
輕松地將其集成到您的應(yīng)用中。 無論您是一名剛開始接觸Redis
的初學(xué)者,還是一名在尋找如何在Node.js
中使用Redis
的經(jīng)驗開發(fā)者,本文都將為您提供有價值的信息。
一、什么是redis
1. redis簡介
redis中文網(wǎng)
Redis
是一個開源(BSD
許可),內(nèi)存存儲的數(shù)據(jù)結(jié)構(gòu)服務(wù)器,可用作數(shù)據(jù)庫,高速緩存和消息隊列代理。它支持字符串、哈希表、列表、集合、有序集合,位圖,hyperloglogs等數(shù)據(jù)類型。內(nèi)置復(fù)制、Lua腳本、LRU收回、事務(wù)以及不同級別磁盤持久化功能,同時通過Redis Sentinel提供高可用,通過Redis Cluster提供自動分區(qū)。
2. redis的特點
-
速度快:
Redis
是基于內(nèi)存操作的,因此讀寫速度非???#xff0c;可以達到10萬次/秒的讀操作和8.1萬次/秒的寫操作。 -
支持多種數(shù)據(jù)結(jié)構(gòu):
Redis
支持多種數(shù)據(jù)結(jié)構(gòu),如字符串(string
)、列表(list
)、集合(set
)、有序集合(sorted set
)、哈希(hashes
)等,滿足豐富的業(yè)務(wù)需求。 -
豐富的功能:
Redis
還支持數(shù)據(jù)備份,即Master-Slave
模式的備份。另外,Redis
還支持事務(wù)、管道和分布式等功能。 -
支持持久化:可以將內(nèi)存中的數(shù)據(jù)保存在磁盤中,重啟后可以再次加載進行使用,從而達到持久化的效果。
-
高可用和分布式支持:通過
Redis Sentinel
和Redis Cluster
等實現(xiàn)服務(wù)器的高可用和分布式。 -
簡單易用:
Redis
有很多客戶端,幾乎所有的語言都有對應(yīng)的客戶端,且API使用也非常簡單。 -
開源:
Redis
是開源的,可以免費使用和修改。
3. redis的應(yīng)用場景
-
緩存系統(tǒng):
Redis
通常用作內(nèi)存數(shù)據(jù)存儲系統(tǒng)作為NoSQL
的鍵值數(shù)據(jù)庫來實現(xiàn)內(nèi)存緩存功能。在緩存應(yīng)用中,Redis
通常用于減少應(yīng)用與慢速的磁盤數(shù)據(jù)源(如關(guān)系型數(shù)據(jù)庫或傳統(tǒng)的Web API
)的交互。 -
消息隊列系統(tǒng):
Redis
的發(fā)布訂閱、阻塞隊列等特性使得它可以作為消息中間件使用。 -
實時分析:如實時統(tǒng)計、計數(shù)、排行榜等,在這類場景下,
Redis
的Set
和Sorted Set
常常能立大功。 -
分布式鎖:
Redis
可以實現(xiàn)對某些公共資源的訪問限制,從而保證系統(tǒng)并發(fā)控制的效果。 -
會話緩存(
Session Cache
):其實就是把用戶的信息、用戶權(quán)限、快捷信息等放在會話里。很多網(wǎng)站也是用的Redis
來實現(xiàn)的。 -
網(wǎng)頁訪問分析:比如記錄每個網(wǎng)頁訪問的次數(shù)、頻率等等,這樣可以為網(wǎng)站的熱點推薦提供數(shù)據(jù)支持。
-
數(shù)據(jù)過期處理:可以通過Redis的鍵值對過期策略,處理某些過期數(shù)據(jù)。
-
應(yīng)用排行榜:社交類、游戲類應(yīng)用經(jīng)常會有各種排行榜的需求,
Redis
提供的Sorted Set
可以非常方便的實現(xiàn)這個功能。 -
社區(qū)網(wǎng)站和合作工具:支持“發(fā)布/訂閱”的消息模式可以幫助我們構(gòu)建實時工作隊列。
-
物流追蹤和預(yù)定系統(tǒng):
Redis
可以通過狀態(tài)更新來追蹤物品或車輛的實時位置。
二、redis在windows下安裝
這里只記錄一下windows下的安裝流程,其他系統(tǒng)的可以去redis官網(wǎng)查看教程
1. 下載安裝
下載地址:https://github.com/tporadowski/redis/releases
下載zip壓縮包,解壓即可使用
2.驗證是否安裝成功
找到解壓的目錄,cmd
在這里輸入
redis-cli.exe -h 127.0.0.1 -p 6379
再輸入:
info server
當你看到上圖,說明redis
安裝成功,可以使用。
3. 配置環(huán)境變量
建議將redis
啟動目錄,配置環(huán)境變量,這樣就可以在全局訪問redis
了
驗證是否配置成功,win+R
輸入
redis-server.exe redis.conf
后面的那個redis.conf
可以省略,如果省略,會啟用默認的
如上圖所示redis
啟動成功,代表配置的環(huán)境變量生效。
三、redis-cli常用命令介紹
1. redis-cli
前面我們驗證redis是否安裝成功時用到了一行命令
redis-cli.exe -h 127.0.0.1 -p 6379
這個命令的作用是通過Redis
的命令行工具redis-cli
來連接本機(IP地址為127.0.0.1
)上運行的Redis
數(shù)據(jù)庫服務(wù),其中連接的端口號為6379
(這是Redis
的默認端口號)。在成功連接數(shù)據(jù)庫后,你可以在命令行中輸入Redis
命令進行相應(yīng)的數(shù)據(jù)庫操作。
具體來說:
redis-cli.exe
:這是Redis
的命令行工具。-h 127.0.0.1
:這指定了要連接的Redis
服務(wù)器的IP
地址(這里的127.0.0.1
是本機的IP
地址)。-p 6379
:這指定了要連接的Redis
服務(wù)器的端口號(Redis
的默認端口號為6379
)。\
其實可以直接輸入
redis-cli
其他的會默認執(zhí)行
2. keys *
列出所有keys:keys *
。這將返回數(shù)據(jù)庫中所有的keys。
3. set key value
設(shè)置key-value:set key value
。這會將key-value數(shù)據(jù)對存入數(shù)據(jù)庫,例如 set mykey myvalue
。
set username zhangsan
這就是在redis
中存儲了一個鍵值對,key是username, value是zhangsan
4. get key
獲取key-value:get key
。這將返回與指定key關(guān)聯(lián)的value,例如 get mykey
。
get username
獲取key
為username
的value
值,如上圖就是zhangsan
5. exists key
檢查key是否存在:exists key
。如果key存在,該命令返回1,否則返回0。
6. del key
刪除key:del key
。這會從數(shù)據(jù)庫中刪除指定的key,例如 del mykey
。
7. info
查看所有信息:info
。獲取Redis的統(tǒng)計信息
8. flushdb
清空數(shù)據(jù)庫:flushdb
。清空當前數(shù)據(jù)庫所有數(shù)據(jù)
9. ping
測試連接:ping
。測試客戶端與Redis服務(wù)器的連通性。
10. select index
選擇數(shù)據(jù)庫:select index
。Redis默認設(shè)置了16個數(shù)據(jù)庫,編號從0開始,可以使用該命令選擇你要操作的數(shù)據(jù)庫。
如上圖,我顯示切換到1數(shù)據(jù)庫,然后查看1中所有的key,顯示空的,
然后我再次切換為0,查看key,有數(shù)據(jù)
Redis
默認提供了 16 個數(shù)據(jù)庫,編號從 0 到 15。這些數(shù)據(jù)庫之間相互獨立,每個數(shù)據(jù)庫都有自己的鍵值對,即一個數(shù)據(jù)庫中的數(shù)據(jù)在另一個數(shù)據(jù)庫中是不可見的。
這些數(shù)據(jù)庫之間可以通過 SELECT
命令進行切換。如果沒有明確指定,Redis
將默認使用 0 號數(shù)據(jù)庫。試圖訪問一個不存在的數(shù)據(jù)庫不會報錯,而是創(chuàng)建這個數(shù)據(jù)庫。你可以通過 CONFIG GET databases
命令查詢 Redis
數(shù)據(jù)庫的數(shù)量。
需要注意的是,盡管Redis
提供了多個數(shù)據(jù)庫,但這種機制并沒有提供真正的數(shù)據(jù)庫隔離。例如,所有數(shù)據(jù)庫都共享同一個事件循環(huán)、后臺任務(wù)(如過期、持久化等),并且同時只能有一個數(shù)據(jù)庫被選中。
因此,這種多數(shù)據(jù)庫的設(shè)計主要適用于將相關(guān)的數(shù)據(jù)保存在一起,而不必將所有數(shù)據(jù)混在一起,這樣可以使得數(shù)據(jù)訪問更加簡單、便捷。而對于真正的多租戶場景或需要嚴格的數(shù)據(jù)庫隔離性,建議使用多個Redis
實例。
11. move key 數(shù)據(jù)名【0-15】
在Redis中,我們可以使用MOVE
命令將鍵值對從一個數(shù)據(jù)庫移動到另一個數(shù)據(jù)庫。例如,假設(shè)我們有兩個數(shù)據(jù)庫,數(shù)據(jù)庫1和數(shù)據(jù)庫2,我們在數(shù)據(jù)庫1中有名稱為key1
的鍵值對,我們想將這個鍵值對移動到數(shù)據(jù)庫2。
以下是操作步驟:
1.首先,我們需要確認當前所在的數(shù)據(jù)庫,這可以通過SELECT
命令完成。啟動redis服務(wù)并進入redis-cli,輸入以下命令:
127.0.0.1:6379> SELECT 1
這將切換到數(shù)據(jù)庫1。這里,1
是數(shù)據(jù)庫的索引號。
2.然后,我們需要確認‘key1’確實在數(shù)據(jù)庫1中。這可以通過EXISTS
命令完成。輸入以下命令:
127.0.0.1:6379> EXISTS key1
如果key1
存在,它將返回1
。如果不存在,它將返回0
。
3.然后,我們可以使用MOVE
命令,將key1
從數(shù)據(jù)庫1移動到數(shù)據(jù)庫2(索引為2)。輸入以下命令:
127.0.0.1:6379> MOVE key1 2
這將移動key1
到數(shù)據(jù)庫2。如果操作成功,它將返回1
。如果失敗,它會返回0
。
4.最后,我們可以切換到數(shù)據(jù)庫2,并確認key1
是否在這個數(shù)據(jù)庫中。輸入以下命令:
127.0.0.1:6379> SELECT 2
127.0.0.1:6379> EXISTS key1
如果key1
存在,它將返回1
,表明我們已經(jīng)成功地將鍵值對從一個數(shù)據(jù)庫移動到了另一個數(shù)據(jù)庫。
四、redis數(shù)據(jù)類型和key的命名規(guī)范
1. redis數(shù)據(jù)類型
數(shù)據(jù)類型 | 描述 |
---|---|
STRING | 字符串類型,可以包含任何數(shù)據(jù),如jpeg圖片或者序列化的對象 |
LIST | Redis List的實現(xiàn)為一個雙向鏈表,即可以支持反向查找和遍歷,更方便操作,不過帶來了部分額外的內(nèi)存開銷 |
SET | SET是string類型的無序集合,集合成員是唯一的,這就意味著集合中重復(fù)的數(shù)據(jù)會被過濾掉 |
ZSET (sorted set) | ZSET也是string類型的集合,另外每個元素都將關(guān)聯(lián)一個double類型的分數(shù)。redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。 |
HASH | Redis hash 是一個鍵值對集合, 是一個string類型的field和value的映射表,所以他適合用于存儲對象。 |
BITMAPS | 位圖數(shù)據(jù)類型,將字符串看作二進制位數(shù)組來使用,字符串的每一個 bit 位都只能存儲 0 或者 1 兩種狀態(tài)的數(shù)字 |
STREAMS | Redis 5.0 版本引入的新數(shù)據(jù)類型,主要用于處理實時的數(shù)據(jù)流。 |
2. key命名規(guī)范
在 Redis 中,Key 的命名是非常自由的,但為了保證良好的可讀性和管理性,下面是一些關(guān)于 Key 命名的建議規(guī)范:
-
命名應(yīng)簡短且富有描述性。例如,用 user🆔123 更合適,而不是 type🆔value:123。如果 Key 過長,不僅會導(dǎo)致額外的內(nèi)存開銷,還可能影響內(nèi)存的操作效率。
-
命名應(yīng)保持一致性。例如,如果你使用 user🆔123,那么將來的所有關(guān)鍵字都必須遵循這種模式,如 product🆔456,而不是在一些地方使用 var🆔789。
-
可以使用字符集合,包括一部分 ASCII 碼,其中一般字符,如字母,數(shù)字,“.”,“-”,“+”,“_”,“:” 等,用于保證 Key 的可讀性和易于理解。
-
不要使用特殊保留字符。Redis 的一些模式匹配功能使用 “[]”,“()”,“*”,“?” 等字符,如果在 Key 中使用這些字符,可能會導(dǎo)致無法找到 Key。
-
避免 Key 沖突。盡量確保每個 Key 的名稱是唯一的,特別是在數(shù)據(jù)量較大的情況下。
-
不推薦在 Key 名稱中使用空格,這可能在使用某些命令時引入錯誤。
-
如果 Key 的數(shù)量很大,那么 Key 的命名規(guī)則應(yīng)盡可能地反映出數(shù)據(jù)的結(jié)構(gòu),以便進行批量操作。例如,“object-type:id” 這種命名方式(如 “user:1000”)可以讓你輕松地找到某個類型的所有對象。
總的來說,Redis 中 Key 的命名應(yīng)盡可能做到語義化,方便理解和管理,同時也需要考慮內(nèi)存和性能的影響。
五、字符串操作
Redis中的字符串類型是最基本的數(shù)據(jù)類型,其對應(yīng)的操作有以下幾種:
-
增加:
命令為set key value
,例如:set name “jackson”。這條命令會將鍵值對{name, “jackson”}存儲到redis中,如果鍵name已經(jīng)存在,那么會將它對應(yīng)的舊值替換為"jackson"。 -
修改:
修改可以通過set命令來進行,例如:set name "michael"
。如果鍵name已經(jīng)存在,那么這條命令會替換掉它的舊值,如果沒有存在,那么就等同于增加一個新的鍵值對。 -
查詢:
查詢操作有兩種,第一種是直接通過鍵查詢,命令為get key
,例如:get name,會返回"name"對應(yīng)的值。
第二種是通過多個鍵查詢,命令為mget keys
,例如:mget name age,會返回"name"和"age"這兩個鍵對應(yīng)的值。 -
刪除:
刪除的命令為del key
,例如:del name,這條命令會刪除鍵為"name"的鍵值對。如果鍵不存在,那么這條命令不會生效。 -
追加:
追加的命令為append key value
,例如:append name “jackson”,如果鍵"name"已經(jīng)存在于redis中,那么這條命令會在它對應(yīng)的值的后面追加"jackson",如果鍵不存在,那么這條命令等同于set name “jackson”。 -
長度:
獲取鍵對應(yīng)值的長度的命令為strlen key
,例如:strlen name,這條命令會返回鍵"name"對應(yīng)的值的長度。 -
子串:
獲取鍵對應(yīng)值的子串的命令為getrange key start end
,例如:getrange name 0 1,這條命令會返回鍵"name"對應(yīng)的值的第0位到第1位的子串。 -
替換:
替換鍵對應(yīng)值的子串的命令為setrange key offset value
,例如:setrange name 0 “Jack”,這條命令會將鍵"name"對應(yīng)的值的從第0位開始的子串替換為"Jack"。 -
自增/自減:
對鍵對應(yīng)的數(shù)值進行自增或自減的命令有incr key、decr key、incrby key increment、decrby key decrement
,例如:incr age、decr age、incrby age 5、decrby age 2。這些命令分別會將鍵"age"對應(yīng)的值增1、減1、增5、減2。
六、hash類型操作
Redis中的hash類型數(shù)據(jù),可以理解為是字符串類型的field和value的映射表。hash適合用于存儲對象。
增加操作:可以使用HSET命令
如,增加一個hash類型的數(shù)據(jù),命令如下:
HSET hset_key field1 value1
這個命令意思是在鍵‘hset_key’中設(shè)置一個子鍵field1,并賦值value1,如果該子鍵已存在則覆蓋其原來的值。
刪除操作:可以使用HDEL命令
如,刪除一個hash類型的數(shù)據(jù),命令如下:
HDEL hset_key field1
這個命令意思是刪除鍵‘hset_key’中的子鍵field1。
修改操作:使用HSET命令
在redis的hash類型中,如果鍵中的field已經(jīng)存在,使用HSET命令會覆蓋原來的值。所以修改操作同增加操作。
查找操作:可以使用HGET或HGETALL命令
如,獲取一個hash類型中的一個字段,命令如下:
HGET hset_key field1
這個命令意思是獲取鍵‘hset_key’中的子鍵field1的值。
如果想獲取一個hash類型的所有字段以及字段值,命令如下:
HGETALL hset_key
這個命令意思是返回鍵‘hset_key’相關(guān)的所有鍵值對。
在使用hash類型時,如果對性能要求較高,可以使用HSETNX,此命令只有在字段不存在時設(shè)置值,能避免不必要的更新操作,提高性能。
實例說明:
例如有一個用戶對象,包含id,name,age,gender等屬性,可以如此存儲:
HSET user:1000 id 1000
HSET user:1000 name "coder"
HSET user:1000 age 30
HSET user:1000 gender "male"
查看用戶屬性:
HGETALL user:1000
修改用戶的年齡:
HSET user:1000 age 31
刪除用戶的name屬性:
HDEL user:1000 name
七、列表類型操作
Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素導(dǎo)列表的頭部(左邊)或者尾部(右邊)
一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。
Redis
中列表類型(list)的數(shù)據(jù)操作主要包括插入(lpush、rpush
)、刪除(lpop、rpop、lrem
)、修改(lset
)、查詢(lindex、lrange
等)等操作。
增加:
lpush key value [value ...]
:將一個或多個值插入到列表頭部,列表不存在時,會創(chuàng)建一個新的空列表,并進行lpush
操作。當列表存在,key
對應(yīng)的值不是列表類型時,返回錯誤。
127.0.0.1:6379> lpush mylist "Redis"
(integer) 1
127.0.0.1:6379> lpush mylist "MongoDB"
(integer) 2
刪除:
lpop key
:移除并返回列表的第一個元素。
127.0.0.1:6379> lpop mylist
"MongoDB"
rpop key
:移除并返回列表的最后一個元素。
127.0.0.1:6379> rpop mylist
"Redis"
lrem key count value
:根據(jù)參數(shù)count的值,移除列表中與參數(shù)value相等的元素。
127.0.0.1:6379> lrem mylist 0 "Redis"
(integer) 1
查詢:
lrange key start stop
:返回列表的指定區(qū)間內(nèi)的元素,區(qū)間以偏移量start和stop指定。
127.0.0.1:6379> lrange mylist 0 4
1) "MongoDB"
2) "Redis"
3) "MYSQL"
4) "Oracle"
5) "PostgreSQL"
lindex key index
:返回列表中指定位置的元素。
127.0.0.1:6379> lindex mylist 1
"Redis"
修改:
lset key index value
:通過索引位置來設(shè)置列表中的值。
127.0.0.1:6379> lset mylist 1 "MySQL"
OK
127.0.0.1:6379> lindex mylist 1
"MySQL"
以上就是在Redis中對于列表類型數(shù)據(jù)的一些基本操作,操作主要依靠各種不同的命令來進行。這些都是Redis很實用的基礎(chǔ)命令,可以幫助我們更好地使用Redis對數(shù)據(jù)進行操作。
八、集合類型操作
Redis
的Set
是string
類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復(fù)的數(shù)據(jù)。
在Redis
中,可以使用以下命令對集合類型的數(shù)據(jù)進行增刪改查操作:
-
增加元素:
SADD
:將一個或多個元素添加到集合中。
例如:SADD fruits apple banana orange
-
刪除元素:
SREM
:從集合中刪除一個或多個指定元素。
例如:SREM fruits apple
-
修改元素:
Redis的集合類型并不支持修改元素的操作,只能通過刪除和重新添加元素來實現(xiàn)更新。 -
查詢元素:
-
SMEMBERS
:返回集合中的所有元素。
例如:SMEMBERS fruits
-
SISMEMBER
:判斷一個元素是否在集合中。
例如:SISMEMBER fruits apple
-
SCARD
:返回集合中的元素個數(shù)。
例如:SCARD fruits
-
SRANDMEMBER
:隨機返回集合中的一個元素。
例如:SRANDMEMBER fruits
-
SSCAN
:迭代集合中的元素并返回匹配的元素。
例如:SSCAN fruits 0 MATCH *n*
-
需要注意的是,以上命令中的集合類型指的是Redis
中的無序不重復(fù)元素的集合。例如,上述命令中的"fruits"
表示一個集合,可以存儲多個水果元素,且這些元素是無序的且不重復(fù)的。
舉例說明:
假設(shè)我們使用SADD
命令向fruits
集合添加元素,然后使用SMEMBERS
命令查詢集合中的元素,如下所示:
> SADD fruits apple banana orange
(integer) 3
> SMEMBERS fruits
1) "banana"
2) "orange"
3) "apple"
可以看到,通過SADD
命令將apple、banana和orange
添加到了fruits
集合中,并且通過SMEMBERS
命令返回了集合中的所有元素。
另外,也可以使用SISMEMBER
命令判斷一個元素是否在集合中,例如:
> SISMEMBER fruits apple
(integer) 1
可以看到,通過SISMEMBER
命令判斷apple
是否在fruits
集合中,返回結(jié)果為1,表示存在。
需要注意的是,以上命令只是針對集合類型的數(shù)據(jù),不能對其他類型的數(shù)據(jù)進行操作。
九、有序集合類型操作
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復(fù)的成員。
不同的是每個元素都會關(guān)聯(lián)一個double類型的分數(shù)。redis正是通過分數(shù)來為集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(shù)(score)卻可以重復(fù)。
集合是通過哈希表實現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是O(1)。 集合中最大的成員數(shù)為 232 - 1 (4294967295, 每個集合可存儲40多億個成員)。
Redis中對有序集合類型的數(shù)據(jù)常用操作有:
-
ZADD:將一個或多個成員元素及其分值加入到有序集合中。
示例命令:ZADD myset 1 member1 2 member2 3 member3
作用:將成員元素"member1"的分值設(shè)為1,"member2"的分值設(shè)為2,"member3"的分值設(shè)為3,并將它們加入到名為"myset"的有序集合中。 -
ZREM:從有序集合中移除一個或多個成員元素。
示例命令:ZREM myset member1 member2
作用:從名為"myset"的有序集合中移除成員元素"member1"和"member2"。 -
ZRANK:返回有序集合中指定成員元素的排名。
示例命令:ZRANK myset member2
作用:返回名為"myset"的有序集合中成員元素"member2"的排名,按照分值從小到大的順序排列。 -
ZRANGE:返回有序集合中指定排名范圍內(nèi)的成員元素。
示例命令:ZRANGE myset 0 2
作用:返回名為"myset"的有序集合中排名在0到2之間的成員元素,按照分值從小到大的順序排列。 -
ZSCORE:返回有序集合中指定成員元素的分值。
示例命令:ZSCORE myset member2
作用:返回名為"myset"的有序集合中成員元素"member2"的分值。 -
ZINCRBY:將有序集合中指定成員元素的分值增加指定值。
示例命令:ZINCRBY myset 2 member2
作用:將名為"myset"的有序集合中成員元素"member2"的分值增加2。 -
ZCOUNT:返回有序集合中分值處于指定范圍的成員元素數(shù)量。
示例命令:ZCOUNT myset 1 3
作用:返回名為"myset"的有序集合中分值在1到3之間的成員元素數(shù)量。 -
ZCARD:返回有序集合中的成員元素數(shù)量。
示例命令:ZCARD myset
作用:返回名為"myset"的有序集合中的成員元素數(shù)量。
綜合示例:
ZADD myset 1 member1 2 member2 3 member3
ZREM myset member1
ZRANK myset member2
ZRANGE myset 0 2
ZSCORE myset member2
ZINCRBY myset 2 member2
ZCOUNT myset 1 3
ZCARD myset
以上示例完成了以下操作:
- 創(chuàng)建了一個有序集合"myset",并添加了成員元素"member1"(分值為1)、“member2”(分值為2)和"member3"(分值為3)。
- 移除了有序集合"myset"中的成員元素"member1"。
- 返回了有序集合"myset"中成員元素"member2"的排名。
- 返回了有序集合"myset"中排名在0到2之間的成員元素。
- 返回了有序集合"myset"中成員元素"member2"的分值。
- 將有序集合"myset"中成員元素"member2"的分值增加了2。
- 返回了有序集合"myset"中分值在1到3之間的成員元素數(shù)量。
- 返回了有序集合"myset"中的成員元素數(shù)量。
十、node中使用ioredis連接Redis
在Node.js
中使用ioredis
連接Redis
的步驟如下:
- 首先,安裝
ioredis
模塊??梢允褂?code>npm在命令行中運行以下命令進行安裝:
npm install ioredis
- 在代碼中引入ioredis模塊:
const Redis = require('ioredis');
- 使用ioredis創(chuàng)建Redis客戶端對象:
const redis = new Redis({host: 'localhost', // Redis服務(wù)器的主機地址port: 6379, // Redis服務(wù)器的端口號password: 'password', //(可選)Redis服務(wù)器的密碼db: 0 //(可選)選擇指定的數(shù)據(jù)庫,默認連接到"0"號數(shù)據(jù)庫
});
- 監(jiān)聽是否鏈接成功
redis.on('error', err => {if (err) {console.log('Redis鏈接錯誤');console.log(err);redis.quit() // 鏈接失敗退出鏈接}
})redis.on('ready', () => {console.log('Redis鏈接成功');
})
- 可以通過
Redis
客戶端對象執(zhí)行一系列的Redis
命令,例如set、get、hgetall
等命令:
// 設(shè)置鍵名為"name"的值為"John"
redis.set('name', 'John');// 獲取鍵名為"name"的值
redis.get('name', (err, result) => {console.log(result); // 輸出:John
});
- 使用完Redis后,最好關(guān)閉Redis客戶端連接,以釋放資源:
redis.quit();
上述是一個基本的使用ioredis連接Redis的示例。根據(jù)具體的需求,可以使用ioredis提供的各種API進行更復(fù)雜的操作,例如哈希操作、發(fā)布/訂閱等。
總結(jié)
總結(jié)來說,Redis是一款高性能的鍵值存儲數(shù)據(jù)庫,它具備快速讀寫能力和豐富的數(shù)據(jù)結(jié)構(gòu)支持。在Node.js開發(fā)中,我們可以利用redis模塊將其與應(yīng)用程序進行集成,從而提升系統(tǒng)的性能和可靠性。
通過本文的介紹,我們了解了Redis的基本概念和特點,包括數(shù)據(jù)類型、集群架構(gòu)和持久化機制等。我們還學(xué)習(xí)了如何在Node.js應(yīng)用程序中使用redis模塊進行數(shù)據(jù)操作,包括連接Redis服務(wù)器、設(shè)置和獲取鍵值對。
通過使用Redis,我們可以輕松地實現(xiàn)數(shù)據(jù)的緩存、會話管理和消息隊列等功能。它給我們帶來了方便、高效和可靠的解決方案,對于構(gòu)建高負載的實時應(yīng)用程序非常有幫助。
總之,Redis是一款非常優(yōu)秀的數(shù)據(jù)庫,它在Node.js中的應(yīng)用也是非常廣泛的。希望本文的介紹能夠幫助讀者加深對Redis的理解,并在實際開發(fā)中能夠靈活運用。如果你對Redis和Node.js的結(jié)合還有其他疑問或者想要深入了解,歡迎留言討論。謝謝!