本文準備從以下幾個方面去講解redis打怪進階:
1)Redis的安裝歇式。
2)Redis的數(shù)據(jù)類型及應用場景芯咧。
Redis安裝
下載地址:http://redis.io/download
安裝步驟:
1牙捉,# 安裝gcc (因redis是c語言寫的)
yum install gcc
2,#把下載好的redis-5.0.3.tar.gz放在/user/local文件夾下敬飒,并解壓
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,#進入到解壓好的redis-5.0.3目錄下邪铲,進行編譯與安裝
make
4,#啟動并指定配置文件
src/redis-server redis.conf(注意要使用后臺啟動无拗,所以修改redis.conf里的daemonize改為yes)
5带到,#驗證啟動是否成功
ps -ef | grep redis
6,#進入redis客戶端
src/redis-cli
7,#退出客戶端
quit
8,#退出redis服務
1)pkill redis-server
2) kill 進程號
3) src/redis-cli shutdown
redis五種數(shù)據(jù)結構:String、Hash英染、List揽惹、Set、Zset
1)String
字符串常用操作
set key value //存入字符串鍵值對
mset key value [key value ...] //批量存儲字符串鍵值對
setnx key value //存入一個不存在的字符串鍵值對
get key //獲取一個字符串鍵值
mget key [key ...] //批量獲取字符串鍵值
del key [key...] //刪除一個鍵
expire key seconds //設置一個鍵的過期時間(秒)
原子加減
incr key //將key中儲存的數(shù)字值加1
decr key //將key中儲存的數(shù)字值減1
incrby key increment //將key所儲存的值加上increment
decrby key decrement //將key所儲存的值減去decrment
應用場景:
計數(shù)器:
incr article:readcount:{文章id}
get article:readcount:{文章id}
2)Hash
相當于一個大map四康,多了外面一層key搪搏。然后map中的value里面又有key和value
Hash常用操作:
Hset key field value //存儲一個哈希表key的鍵值。
Hget key field value [field value... ] //獲取哈希表key對應的field鍵值闪金。
Hash應用場景:
. 電商購物車
1)以用戶id位key
2)商品id位field
3)商品數(shù)量為value
· 購物車操作
1)添加商品 ->hset cart:10001 10088 1
添加數(shù)量 ->hincrby cart:1001 10088 1
商品總數(shù) ->hlen cart:1001
刪除商品 ->hdel cart:1001 10088
獲取購物車所有商品 ->hgetall cart:1001
優(yōu)缺點:
·優(yōu)點
1)同類數(shù)據(jù)歸類整合儲存疯溺,方便數(shù)據(jù)管理
2)相比String操作消耗內(nèi)存與cpu更小
3)相比String儲存更節(jié)約空間
·缺點
1)過期功能不能使用在field上,只能用在key上
2)Redis集群架構下不適合大規(guī)模使用毕泌。
3) List
· List常用操作
lpush key value [value ...] //將一個或多個值value插入到列表的表頭(最左邊)
rpush key value [value ...] //將一個或多個值value插入到列表的表尾(最右邊)
lpop key //移除并返回key列表的頭元素
rpop key //移除并返回key列表的尾元素
應用場景:
微博和微信公眾號消息流
4)Set
· Set常用操作
sadd key member [member ...] //往集合key中存入元素喝检,元素存在則忽略,若key不存在則新建撼泛。
srem key member [member ...] //從集合中key中刪除元素
smembers key //獲取集合中所有的元素
scard key //獲取集合key的元素個數(shù)
srandmember key [count] //從集合key中選出count個元素挠说。元素不從key中刪除
spop key [count] //從集合key中選出count個元素,元素從key中刪除愿题。
·Set運算操作
sinter key [key ...] //交集運算
sinterstore destination key [key ...] //將交集結果存入新集合destination中
sunion key [key ...] //并集運算
sunionstore destination key [key ...] //將并集結果存入新集合destination中
sdiff key [key ...] //差集運算
sdiffstore destination key [key ...] //將差集結果存入新集合destination中
應用場景
· 1 微信抽獎小程序
1)點擊參與抽獎加入集合
sadd key {userId}
2)查看參與抽獎所有用戶
smembers key
3)抽取count名中獎者
srandmember key [count] / spop key [count]
2 微信微博點贊损俭,收藏,標簽
1)點贊
sadd like:{消息id} {用戶id}
2)取消點贊
srem like:{消息id} {用戶id}
3)檢查用戶是否點過贊
sismember like:{消息id} {用戶id}
4)獲取點贊的用戶列表
smembers like:{消息id}
5)獲取點贊用戶數(shù)
scard like:{消息id}
3 集合操作
sinter set1 set2 set3 ->{c}
sunion set1 set2 set3 ->{a,b,c,d,e}
sdiff set1 set2 set3 ->{a}
4 集合操作實現(xiàn)微博微信關注模型
1)諸葛關注的人:
zhugeSet -->{yangguo,sima,luban}
2)楊過關注的人:
yangguoSet -->{zhuge,sima,luban,guojia}
3)司馬關注的人:
simaSet-->{zhuge,yangguo,guojia,luban,xunyu}
4)諸葛和楊過共同關注:
sinter zhuge lisi -->{sima,luban}
5,諸葛關注的人也關注(楊過):
sismember simaSet yangguo
sismember lubanSet yangguo
6)諸葛可能認識的人:
sdiff yangguoSet zhugeSet -->{zhuge,guojia}
5 集合操作實現(xiàn)電商商品篩選
5)Zset
應用場景
Zset集合操作實現(xiàn)排行耪
1)點擊新聞
zincrby hotNews:20191016 1 守護香港
2)展示當日排行前十
3)七日搜索榜單計算
zunionstore hotNews:20191016 7
4)展示七日排行前十
zrevrange hotNews:20191016 -20191023 0 10 withscores
后續(xù)更精彩E诵铩杆兵!