Redis數據類型及使用場景

Redis數據類型及使用場景redis

String

get/set mget/mset

說明:設置/批量設置鍵值信息,value能夠是任何形式的字符串數據庫

用法:json

set key value緩存

get key數據結構

場景:分佈式

常規緩存使用方式優化

incr/decr

說明:將key中的數值增/減1,若是key不存在會先初始化爲0再加1,該操做是原子性的code

用法:對象

incr key隊列

get key

場景:

結合expire用作計數器和限數器

如某篇文章點擊量經過incr article:id來計數,用get article:id來獲取

setbit/getbit/bitcount

說明:設置指定偏移量上的位;獲取指定偏移量上的位;指定key中,位值爲1的數量

用法:

setbit key offset value

getbit key offset

bitcount key

場景:

活躍數統計,開關等

如日活躍人數,經過setbit dayactive:yyyyMMdd userid 1,經過bitcount dayactive:yyyyMMdd來獲取

setnx/getset

說明:當key不存在時候將key的值設爲value,存在不作操做;將key的值設爲value,並返回key的舊值

用法:

setnx a 11

getset a 22

場景:

分佈式鎖實現

Hash

hset/hget/hkeys/hgetall

說明:當key不存在時候將key的值設爲value,存在不作操做;將key的值設爲value,並返回key的舊值

用法:

hset key field value

hget key field

hkeys key

hgetall key

場景:

存儲對象信息,用於優化普通鍵值存儲

如原來存儲用戶的年齡、姓名、性別等信息須要set user:userid {\"name\":\"lily\",\"age\":18,\"sex\":1}這樣把信息轉出json後再存,
當數據量大的時候十分佔用內存;

用hash類型能夠很好解決這個問題

經過hmset user:userid name lily age 18 sex 1來存儲

經過hgetall user:userid獲取所有內容

經過hget user:userid name獲取某個屬性

List

lpush/rpop/brpop/lrange/llen

說明:list是redis比較重要的一個數據結構,支持插入列表、彈出隊列、阻塞彈出隊列、返回列表元素、獲取列表長度等操做

用法:

lpush ls 1 2 3 4 5

lrange ls 0 -1

場景:

列表、消息隊列等

如列表反向cache,經過列表存儲數據庫存儲信息,而後在從數據庫中獲取詳細信息

如生產者往隊列中插入消息lpush queue:topic:name msg,消費者經過rpop lsbrpop ls 10來消費消息

Set

sadd/srem/sdiff/sinter/smembers/sunion

說明:實現了集合相關的添加、刪除、差集、交集、並集等操做

用法:

sadd s1 1 2 3 5 6

sinter s1 s2

場景:

好友、關注、被關注、共同好友等

如關注個人人,經過sadd user:myid 10來關注我,經過smembers user:myid來獲取關注個人人

SortedSet

zadd/zrem/zcard/zrange/zrank/zrangebyscore

說明:能夠添加元素的權重和值到key中,並按權重來獲取序列

用法:

zadd ls 10 a1 6 a2 17 a3

zrange ls 0 -1

場景:

排行榜、有序隊列

如排名前10的玩家,經過zadd user:leaderboard score userid來設置玩家分值,經過zrevrange user:leaderboard 0 10來獲取

相關文章
相關標籤/搜索