本篇內(nèi)容主要講解“怎么學(xué)習(xí)redis的數(shù)據(jù)結(jié)構(gòu)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)”吧!
創(chuàng)新互聯(lián)建站專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、吉安網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為吉安等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
下載地址:http://redis.io/download 安裝步驟: 1、yum install gcc 2、wget http://download.redis.io/releases/redis‐5.0.3.tar.gz tar xzf redis‐5.0.3.tar.gz cd redis‐5.0.3 3、make 4、src/redis‐server redis.conf(注意要使用后臺(tái)啟動(dòng),所以修改redis.conf里的daemonize改為y es) 5、ps ‐ef | grep redis 6、src/redis‐cli
字符串常用操作
SET key value //存入字符串鍵值對(duì) MSET key value [key value ...] //批量存儲(chǔ)字符串鍵值對(duì) SETNX key value //存入一個(gè)不存在的字符串鍵值對(duì) GET key //獲取一個(gè)字符串鍵值 MGET key [key ...] //批量獲取字符串鍵值 DEL key [key ...] //刪除一個(gè)鍵 EXPIRE key seconds //設(shè)置一個(gè)鍵的過(guò)期時(shí)間(秒)
原子加減
INCR key //將key中儲(chǔ)存的數(shù)字值加1 DECR key //將key中儲(chǔ)存的數(shù)字值減1 INCRBY key increment //將key所儲(chǔ)存的值加上increment DECRBY key decrement //將key所儲(chǔ)存的值減去decrement
String應(yīng)用場(chǎng)景
這個(gè)是微信公眾號(hào)的文章閱讀量數(shù)量的統(tǒng)計(jì),可以通過(guò)redis的string數(shù)據(jù)結(jié)構(gòu)來(lái)解決。使用incr原子操作命令,redis的key是article:readcount:{文章id},當(dāng)該文章被閱讀時(shí),調(diào)用incr命令,閱讀數(shù)量加一,通過(guò)get該redis的key,實(shí)現(xiàn)文章閱讀數(shù)量統(tǒng)計(jì)的功能。
incr article:readcount:{文章id} get article:readcount:{文章id}
Hash常用操作
HSET key field value //存儲(chǔ)一個(gè)哈希表key的鍵值 HSETNX key field value //存儲(chǔ)一個(gè)不存在的哈希表key的鍵值 HMSET key field value [field value ...] //在一個(gè)哈希表key中存儲(chǔ)多個(gè)鍵值對(duì) HGET key field //獲取哈希表key對(duì)應(yīng)的field鍵值 HMGET key field [field ...] //批量獲取哈希表key中多個(gè)field鍵值 HDEL key field [field ...] //刪除哈希表key中的field鍵值 HLEN key //返回哈希表key中field的數(shù)量 HGETALL key //返回哈希表key中所有的鍵值 HINCRBY key field increment //為哈希表key中field鍵的值加上增量increment
Hash使用場(chǎng)景
這個(gè)是京東購(gòu)物車的截圖,可以看到很多功能都用redis的命令可來(lái)實(shí)現(xiàn)。在redis中保存對(duì)商品id、購(gòu)物車id等等id的操作,在前端保存對(duì)于該商品的描述,在操作購(gòu)物車的時(shí)候,底層其實(shí)就是操作redis的命令。
添加商品:hset cart:1001 1088 1 添加數(shù)量:hincrby cart:1001 1088 1 商品總數(shù):hlen cart:1001 刪除商品:hdel cart:1001 1008 獲取購(gòu)物車所有商品: hgetall cart:1001
Hash優(yōu)缺點(diǎn) 優(yōu)點(diǎn):同類數(shù)據(jù)歸類整合存儲(chǔ),方便數(shù)據(jù)管理,相比string操作消耗內(nèi)存與cpu更小 缺點(diǎn):過(guò)期功能上不能使用在field上,只能使用在key上
List常用操作
LPUSH key value [value ...] //將一個(gè)或多個(gè)值value插入到key列表的表頭(最左邊) RPUSH key value [value ...] //將一個(gè)或多個(gè)值value插入到key列表的表尾(最右邊) LPOP key //移除并返回key列表的頭元素 RPOP key //移除并返回key列表的尾元素 LRANGE key start stop //返回列表key中指定區(qū)間內(nèi)的元素,區(qū)間以偏移量start和stop指定 BLPOP key [key ...] timeout //從key列表表頭彈出一個(gè)元素,若列表中沒(méi)有元素,阻塞等待,timeout秒,如果timeout=0,一直阻塞等待 BRPOP key [key ...] timeout //從key列表表尾彈出一個(gè)元素,若列表中沒(méi)有元素,阻塞等待,timeout秒,如果timeout=0,一直阻塞等待
List的應(yīng)用場(chǎng)景
這是我們經(jīng)常使用的新浪微博,我們看在微博文章中如何使用redis的list數(shù)據(jù)結(jié)構(gòu)。新浪微博是使用redis的大戶,據(jù)在新浪工作的朋友說(shuō),新浪使用redis的總?cè)萘砍^(guò)500T,可想而知幾乎70%的功能都在redis中操作。
"小米手機(jī)"發(fā)微博,消息id為1001,使用的redis命令是:
LPUSH msg:{小強(qiáng)-id} 1001
"號(hào)外長(zhǎng)沙"發(fā)微博,消息id為1002,使用的redis命令是:
LPUSH msg:{小強(qiáng)-id} 1002
小強(qiáng)查看最新10條的新浪微博消息:
LRANGE msg:{小強(qiáng)-id} 0 10
Set常用操作
SADD key member [member ...] //往集合key中存入元素,元素存在則忽略,若key不存在則新建 SREM key member [member ...] //從集合key中刪除元素 SMEMBERS key //獲取集合key中所有元素 SCARD key //獲取集合key的元素個(gè)數(shù) SISMEMBER key member //判斷member元素是否存在于集合key中 SRANDMEMBER key [count] //從集合key中選出count個(gè)元素,元素不從key中刪除 SPOP key [count] //從集合key中選出count個(gè)元素,元素從key中刪除
Set運(yùn)算操作
SINTER key [key ...] //交集運(yùn)算 SINTERSTORE destination key [key ..] //將交集結(jié)果存入新集合destination中 SUNION key [key ..] //并集運(yùn)算 SUNIONSTORE destination key [key ...] //將并集結(jié)果存入新集合destination中 SDIFF key [key ...] //差集運(yùn)算 SDIFFSTORE destination key [key ...] //將差集結(jié)果存入新集合destination中
Set使用場(chǎng)景
使用這個(gè)抽獎(jiǎng)界面作為set的使用場(chǎng)景的例子,相信大家對(duì)這個(gè)界面都很熟悉,微信小程序的“抽獎(jiǎng)”功能,這個(gè)是使用redis的set數(shù)據(jù)結(jié)構(gòu)的典型場(chǎng)景。 當(dāng)用戶點(diǎn)擊“參與抽獎(jiǎng)”,也就是把將用戶ID加入集合中:
SADD key {userID}
查看參與抽獎(jiǎng)的所有用戶:
SMEMBERS key
抽取count名中獎(jiǎng)用戶
SRANDMEMBER key [count]
ZSet常用操作
ZADD key score member [[score member]…] //往有序集合key中加入帶分值元素 ZREM key member [member …] //從有序集合key中刪除元素 ZSCORE key member //返回有序集合key中元素member的分值 ZINCRBY key increment member //為有序集合key中元素member的分值加上increment ZCARD key //返回有序集合key中元素個(gè)數(shù) ZRANGE key start stop [WITHSCORES] //正序獲取有序集合key從start下標(biāo)到stop下標(biāo)的元素 ZREVRANGE key start stop [WITHSCORES] //倒序獲取有序集合key從start下標(biāo)到stop下標(biāo)的元素
Zset使用場(chǎng)景
微博熱搜榜處處使用到了Redis的有序集合這個(gè)數(shù)據(jù)結(jié)構(gòu),我們都知道有序集合是對(duì)集合的一個(gè)擴(kuò)展,增加了score字段。通過(guò)score字段,我們可以選出最大或者最小的topN,這樣就有了排行榜,如果用傳統(tǒng)的數(shù)據(jù)庫(kù)去實(shí)現(xiàn)這個(gè)功能,估計(jì)對(duì)數(shù)據(jù)性能的消耗非常大。
1)點(diǎn)擊新聞 ZINCRBY hotNews:20190819 1 烏鎮(zhèn)十二時(shí)辰 2)展示當(dāng)日排行前十 ZREVRANGE hotNews:20190819 0 10 WITHSCORES 3)七日搜索榜單計(jì)算 ZUNIONSTORE hotNews:20190813-20190819 7 hotNews:20190813 hotNews:20190814... hotNews:20190819 4)展示七日排行前十 ZREVRANGE hotNews:20190813-20190819 0 10 WITHSCORES
到此,相信大家對(duì)“怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
分享題目:怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)
標(biāo)題網(wǎng)址:http://jinyejixie.com/article14/iephge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣、定制網(wǎng)站、網(wǎng)站營(yíng)銷、建站公司、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)