怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)

本篇內(nèi)容主要講解“怎么學(xué)習(xí)redis的數(shù)據(jù)結(jié)構(gòu)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)”吧!

創(chuàng)新互聯(lián)建站專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、吉安網(wǎng)站定制設(shè)計、自適應(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)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為吉安等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

Redis安裝

下載地址: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(注意要使用后臺啟動,所以修改redis.conf里的daemonize改為y
es)
5、ps ‐ef | grep redis
6、src/redis‐cli

Redis核心數(shù)據(jù)結(jié)構(gòu)以及使用場景

怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)

String結(jié)構(gòu)

  • 字符串常用操作

SET  key  value 			//存入字符串鍵值對
MSET  key  value [key value ...] 	//批量存儲字符串鍵值對
SETNX  key  value 		        //存入一個不存在的字符串鍵值對
GET  key 			        //獲取一個字符串鍵值
MGET  key  [key ...]	 	//批量獲取字符串鍵值
DEL  key  [key ...] 		//刪除一個鍵
EXPIRE  key  seconds 		//設(shè)置一個鍵的過期時間(秒)
  • 原子加減

INCR  key 			//將key中儲存的數(shù)字值加1
DECR  key 			//將key中儲存的數(shù)字值減1
INCRBY  key  increment 	//將key所儲存的值加上increment
DECRBY  key  decrement 	//將key所儲存的值減去decrement
  • String應(yīng)用場景

怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)

這個是微信公眾號的文章閱讀量數(shù)量的統(tǒng)計,可以通過redis的string數(shù)據(jù)結(jié)構(gòu)來解決。使用incr原子操作命令,redis的key是article:readcount:{文章id},當(dāng)該文章被閱讀時,調(diào)用incr命令,閱讀數(shù)量加一,通過get該redis的key,實現(xiàn)文章閱讀數(shù)量統(tǒng)計的功能。

incr article:readcount:{文章id}
get article:readcount:{文章id}

Hash結(jié)構(gòu)

  • Hash常用操作

HSET  key  field  value 			//存儲一個哈希表key的鍵值
HSETNX  key  field  value 		//存儲一個不存在的哈希表key的鍵值
HMSET  key  field  value [field value ...] 	//在一個哈希表key中存儲多個鍵值對
HGET  key  field 				//獲取哈希表key對應(yīng)的field鍵值
HMGET  key  field  [field ...] 		//批量獲取哈希表key中多個field鍵值
HDEL  key  field  [field ...] 		//刪除哈希表key中的field鍵值
HLEN  key				//返回哈希表key中field的數(shù)量
HGETALL  key				//返回哈希表key中所有的鍵值
HINCRBY  key  field  increment 		//為哈希表key中field鍵的值加上增量increment
  • Hash使用場景

怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)

這個是京東購物車的截圖,可以看到很多功能都用redis的命令可來實現(xiàn)。在redis中保存對商品id、購物車id等等id的操作,在前端保存對于該商品的描述,在操作購物車的時候,底層其實就是操作redis的命令。

添加商品:hset cart:1001 1088 1
添加數(shù)量:hincrby cart:1001 1088 1
商品總數(shù):hlen cart:1001
刪除商品:hdel cart:1001 1008
獲取購物車所有商品: hgetall cart:1001
  • Hash優(yōu)缺點 優(yōu)點:同類數(shù)據(jù)歸類整合存儲,方便數(shù)據(jù)管理,相比string操作消耗內(nèi)存與cpu更小 缺點:過期功能上不能使用在field上,只能使用在key上

List結(jié)構(gòu)

  • List常用操作

LPUSH  key  value [value ...] 		//將一個或多個值value插入到key列表的表頭(最左邊)
RPUSH  key  value [value ...]	 	//將一個或多個值value插入到key列表的表尾(最右邊)
LPOP  key			//移除并返回key列表的頭元素
RPOP  key			//移除并返回key列表的尾元素
LRANGE  key  start  stop		//返回列表key中指定區(qū)間內(nèi)的元素,區(qū)間以偏移量start和stop指定

BLPOP  key  [key ...]  timeout	//從key列表表頭彈出一個元素,若列表中沒有元素,阻塞等待,timeout秒,如果timeout=0,一直阻塞等待
BRPOP  key  [key ...]  timeout 	//從key列表表尾彈出一個元素,若列表中沒有元素,阻塞等待,timeout秒,如果timeout=0,一直阻塞等待
  • List的應(yīng)用場景

怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)

這是我們經(jīng)常使用的新浪微博,我們看在微博文章中如何使用redis的list數(shù)據(jù)結(jié)構(gòu)。新浪微博是使用redis的大戶,據(jù)在新浪工作的朋友說,新浪使用redis的總?cè)萘砍^500T,可想而知幾乎70%的功能都在redis中操作。

"小米手機(jī)"發(fā)微博,消息id為1001,使用的redis命令是:

LPUSH msg:{小強(qiáng)-id} 1001

"號外長沙"發(fā)微博,消息id為1002,使用的redis命令是:

LPUSH msg:{小強(qiáng)-id} 1002

小強(qiáng)查看最新10條的新浪微博消息:

LRANGE msg:{小強(qiáng)-id} 0 10

Set結(jié)構(gòu)

  • Set常用操作

SADD  key  member  [member ...]			//往集合key中存入元素,元素存在則忽略,若key不存在則新建
SREM  key  member  [member ...]			//從集合key中刪除元素
SMEMBERS  key					//獲取集合key中所有元素
SCARD  key					//獲取集合key的元素個數(shù)
SISMEMBER  key  member			//判斷member元素是否存在于集合key中
SRANDMEMBER  key  [count]			//從集合key中選出count個元素,元素不從key中刪除
SPOP  key  [count]				//從集合key中選出count個元素,元素從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使用場景

怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)

使用這個抽獎界面作為set的使用場景的例子,相信大家對這個界面都很熟悉,微信小程序的“抽獎”功能,這個是使用redis的set數(shù)據(jù)結(jié)構(gòu)的典型場景。 當(dāng)用戶點擊“參與抽獎”,也就是把將用戶ID加入集合中:

SADD key {userID}

查看參與抽獎的所有用戶:

SMEMBERS key

抽取count名中獎用戶

SRANDMEMBER key [count]

Zset有序集合結(jié)構(gòu)

  • 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中元素個數(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使用場景

怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)

微博熱搜榜處處使用到了Redis的有序集合這個數(shù)據(jù)結(jié)構(gòu),我們都知道有序集合是對集合的一個擴(kuò)展,增加了score字段。通過score字段,我們可以選出最大或者最小的topN,這樣就有了排行榜,如果用傳統(tǒng)的數(shù)據(jù)庫去實現(xiàn)這個功能,估計對數(shù)據(jù)性能的消耗非常大。

1)點擊新聞
ZINCRBY  hotNews:20190819  1  烏鎮(zhèn)十二時辰
2)展示當(dāng)日排行前十
ZREVRANGE  hotNews:20190819  0  10  WITHSCORES 
3)七日搜索榜單計算
ZUNIONSTORE  hotNews:20190813-20190819  7 
hotNews:20190813  hotNews:20190814... hotNews:20190819
4)展示七日排行前十
ZREVRANGE hotNews:20190813-20190819  0  10  WITHSCORES

到此,相信大家對“怎么學(xué)習(xí)Redis的數(shù)據(jù)結(jié)構(gòu)”有了更深的了解,不妨來實際操作一番吧!這里是創(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://muchs.cn/article14/iephge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、全網(wǎng)營銷推廣、定制網(wǎng)站網(wǎng)站營銷、建站公司、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)