本篇內(nèi)容主要講解“怎么學(xué)習(xí)redis的數(shù)據(jù)結(jié)構(gòu)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(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è)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為吉安等各大城市提供網(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(注意要使用后臺啟動,所以修改redis.conf里的daemonize改為y es) 5、ps ‐ef | grep redis 6、src/redis‐cli
字符串常用操作
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)用場景
這個是微信公眾號的文章閱讀量數(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常用操作
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使用場景
這個是京東購物車的截圖,可以看到很多功能都用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常用操作
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)用場景
這是我們經(jīng)常使用的新浪微博,我們看在微博文章中如何使用redis的list數(shù)據(jù)結(jié)構(gòu)。新浪微博是使用redis的大戶,據(jù)在新浪工作的朋友說,新浪使用redis的總?cè)萘砍^500T,可想而知幾乎70%的功能都在redis中操作。
"小米手機"發(fā)微博,消息id為1001,使用的redis命令是:
LPUSH msg:{小強-id} 1001
"號外長沙"發(fā)微博,消息id為1002,使用的redis命令是:
LPUSH msg:{小強-id} 1002
小強查看最新10條的新浪微博消息:
LRANGE msg:{小強-id} 0 10
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運算操作
SINTER key [key ...] //交集運算 SINTERSTORE destination key [key ..] //將交集結(jié)果存入新集合destination中 SUNION key [key ..] //并集運算 SUNIONSTORE destination key [key ...] //將并集結(jié)果存入新集合destination中 SDIFF key [key ...] //差集運算 SDIFFSTORE destination key [key ...] //將差集結(jié)果存入新集合destination中
Set使用場景
使用這個抽獎界面作為set的使用場景的例子,相信大家對這個界面都很熟悉,微信小程序的“抽獎”功能,這個是使用redis的set數(shù)據(jù)結(jié)構(gòu)的典型場景。 當(dāng)用戶點擊“參與抽獎”,也就是把將用戶ID加入集合中:
SADD key {userID}
查看參與抽獎的所有用戶:
SMEMBERS key
抽取count名中獎用戶
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中元素個數(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使用場景
微博熱搜榜處處使用到了Redis的有序集合這個數(shù)據(jù)結(jié)構(gòu),我們都知道有序集合是對集合的一個擴展,增加了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)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!