node中如何使用redis的實(shí)現(xiàn)
一、Redis是什么?
Redis
是一個(gè)開源的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)器,一般可以用于數(shù)據(jù)庫、緩存、消息代理等,我們常在項(xiàng)目中用redis
解決高并發(fā)、高可用、高可擴(kuò)展、大數(shù)據(jù)存儲(chǔ)等問題;它本質(zhì)上是一個(gè)NoSql
(非關(guān)系型數(shù)據(jù)庫),我們常用的MySQL
則是關(guān)系型數(shù)據(jù)庫。它并不能替代關(guān)系型數(shù)據(jù)庫,更多的時(shí)候是對(duì)關(guān)系型數(shù)據(jù)庫的一種補(bǔ)充;
二、Redis的基本數(shù)據(jù)類型
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
- HyperLogLog
- 位圖
redis
中共有七種數(shù)據(jù)類型,我這邊會(huì)簡(jiǎn)單介紹下其中五種常見的數(shù)據(jù)類型;
2-1、字符串(String)
字符串的類型是Redis
中最基礎(chǔ)的鍵值對(duì)類型,可以保存普通文字,或者是序列化的二進(jìn)制數(shù)據(jù);字符串類型最大可以存儲(chǔ)512M
的數(shù)據(jù);
字符串操作命令
set
設(shè)置一個(gè)字符串值get
獲取字符串鍵對(duì)應(yīng)的值getrange
截取字符串的內(nèi)容strlen
獲取字符串長(zhǎng)度setex
設(shè)置過期時(shí)間mset
設(shè)置多個(gè)key-valuemget
獲取多個(gè)valueappend
在字符串結(jié)尾加入內(nèi)容incr
數(shù)字自增加1incrby
數(shù)字加上指定的整數(shù)值incrbyfloat
數(shù)字加上指定的浮點(diǎn)數(shù)decr
數(shù)字自減一decby
數(shù)字減去指定的整數(shù)值
2-2、哈希類型
常用于保存復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
hest
設(shè)置單個(gè)字段hmset
設(shè)置多個(gè)字段hget
獲取單個(gè)字段值hmget
獲取多個(gè)字段值hgetall
獲取所有字段值hkeys
獲取所有字段名hlen
獲取哈希表中字段的數(shù)量hexists
判斷哈希表中存在某個(gè)字段hvals
獲取哈希表中所有字段值hdel
刪除哈希表的字段hincrby
給某個(gè)字段加上指定的整數(shù)值hincrbyfloart
給某個(gè)字段加上指定的浮點(diǎn)數(shù)
2-3、列表類型
常用于保存序列化的數(shù)據(jù)。
rpush
末尾新增值lpush
開頭新增值llen
獲取長(zhǎng)度lindex
獲取表某個(gè)元素linsert
在列表某個(gè)位置插入值lpop
刪除最左邊的值 -rpop
刪除最右邊的值lrem
刪除某個(gè)位置的值
2-4、集合類型
如果你的需求是不允許數(shù)據(jù)重復(fù),則你需要使用redis提供的結(jié)合類型。
sadd
添加值scard
獲取集合長(zhǎng)度sismember
判斷是否含有某個(gè)元素srem
刪除某個(gè)元素srop
隨機(jī)刪除某個(gè)元素,并返回srandmember
隨機(jī)返回集合中的元素sunion
組合兩個(gè)或多個(gè)結(jié)合并返回所有元素的列表smove
將元素從一個(gè)集合移動(dòng)到另一個(gè)結(jié)合
2-5、有序集合
結(jié)合將帶有排序功能,redis
將按照分?jǐn)?shù)值進(jìn)行排序。
zcard
獲取結(jié)合長(zhǎng)度zcount
查詢某個(gè)分?jǐn)?shù)值區(qū)間內(nèi)的值數(shù)量zscore
查詢某個(gè)值的分?jǐn)?shù)值zrange
獲取集合內(nèi)容的升序zrevrange
獲取集合內(nèi)容降序zrangebyscore
獲取分?jǐn)?shù)值區(qū)間內(nèi)的集合內(nèi)容升序zrevrangebyscore
獲取分?jǐn)?shù)值區(qū)間內(nèi)的集合內(nèi)容降序zrank
獲取升序排序(從0開始)zrevrank
獲取降序排序(從0開始)zrem
刪除集合中的值(單個(gè)、多個(gè))zremrangebyrank
刪除排名區(qū)間內(nèi)的值zremrangebyscore
刪除分?jǐn)?shù)值區(qū)間內(nèi)的值
三、安裝 redis 及輔助工具 Another Redis Desktop Manager
官網(wǎng)地址:redis.io/ 下載地址:download.redis.io/releases/redis-3.0.0.tar.gz
window環(huán)境下安裝redis可以點(diǎn)擊此鏈接
可視化工具: Another Redis Desktop Manager
(goanother.com/cn/)
四、nodejs上安裝 ioredis
接下來在nodejs
后端項(xiàng)目中使用redis
的話,可以安裝ioredis
這個(gè)庫操作redis
,如果是使用typescript
的話,可以再安裝 @types/ioredis
。
npm i ioredis npm i --save-dev @types/ioredis
五、nodejs上使用 ioredis
5-1、基礎(chǔ)的redis鏈接配置
import redis from 'ioredis' const { REDIS_PORT, REDIS_HOST, REDIS_PASSWORD, REDIS_DB } = process.env as any export default new redis({ port: REDIS_PORT, // redis的端口 host: REDIS_HOST, // redis的允許地址 password: REDIS_PASSWORD, // redis的密碼 db: REDIS_DB // redis由16個(gè)db庫,可以手動(dòng)選擇第幾個(gè),由0開始 })
5-2、項(xiàng)目中使用
ioredis
將redis
命令全部更改為了函數(shù)調(diào)用的形式,我們調(diào)用redis
就像平時(shí)開發(fā)調(diào)用函數(shù)一樣即可,下面是最簡(jiǎn)單的使用案例:
import redis from '@/redis' /** * 重置存儲(chǔ) session的過期時(shí)間 * @param key * @param time 過期時(shí)間設(shè)置(min) */ export const resetTime = (key: string, time = 60) => { redis.expire(key, time * 60) recordNum(redisType.expire) }
六、結(jié)語
本文當(dāng)中簡(jiǎn)單介紹了redis
的基礎(chǔ)操作命令,在nodejs
中如何使用redis
,實(shí)際生產(chǎn)當(dāng)中的redis
操作更為復(fù)雜和多樣,還是需要我們自己多進(jìn)行摸索和實(shí)踐;本文當(dāng)中的操作只是常用的基礎(chǔ)操作,如果想知道更多的redis
操作,可以去查看redis
的官方文檔。
到此這篇關(guān)于node中如何使用redis的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)node使用redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nodejs發(fā)布靜態(tài)https服務(wù)器的方法
這篇文章主要介紹了nodejs發(fā)布靜態(tài)https服務(wù)器的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09node-sass安裝失敗解決方法總結(jié)(終有一款適合你)
node-sass是我們開發(fā)中很常見的依賴包,也是安裝時(shí)間冗長(zhǎng)和最常見到報(bào)錯(cuò)的依賴,下面這篇文章主要給大家介紹了關(guān)于node-sass安裝失敗解決方法的相關(guān)資料,需要的朋友可以參考下2022-11-11NodeJS落地WebSocket實(shí)踐前端架構(gòu)師破局技術(shù)
這篇文章主要為大家介紹了NodeJS落地WebSocket實(shí)踐前端架構(gòu)師破局技術(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Nodejs 發(fā)送Post請(qǐng)求功能(發(fā)短信驗(yàn)證碼例子)
這篇文章主要介紹了Nodejs 發(fā)送Post請(qǐng)求功能(發(fā)短信驗(yàn)證碼例子),需要的朋友可以參考下2017-02-02node管理統(tǒng)計(jì)文件大小并顯示目錄磁盤空間狀態(tài)從零實(shí)現(xiàn)
這篇文章主要為大家介紹了node管理統(tǒng)計(jì)文件大小并顯示目錄磁盤空間狀態(tài)的從零實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12前端node Session和JWT鑒權(quán)登錄示例詳解
關(guān)于前端鑒權(quán)登錄是比較常見的需求了,本文將從服務(wù)端渲染和前后端分離的不同角度下演示鑒權(quán),為大家介紹前端node Session和JWT鑒權(quán)登錄示例詳解2022-07-07sublime text配置node.js調(diào)試(圖文教程)
下面小編就為大家分享一篇sublime text配置node.js調(diào)試(圖文教程),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-11-11node.js中的fs.realpathSync方法使用說明
這篇文章主要介紹了node.js中的fs.realpathSync方法使用說明,本文介紹了fs.realpathSync的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12