redis高級應用

 

redis 主要有如下幾種數據類型:redis

  • string
  • hash
  • list
  • set
  • sorted set

string緩存

這是最簡單的類型,就是普通的 set get,作簡單的 KV 緩存。數據結構

set college szujvm

hash性能

這個是相似 map 的一種結構,這個通常就是能夠將結構化的數據,好比一個對象(前提是這個對象沒嵌套其餘的對象)給緩存在 redis 裏,而後每次讀寫緩存的時候,能夠就操做 hash 裏的某個字段spa

hset person name bingoorm

hset person age 20對象

hset person id 1排序

hget person name隊列

person = {

    "name": "bingo",

    "age": 20,

    "id": 1

}

list

list 是有序列表,這個能夠玩兒出不少花樣。

好比能夠經過 list 存儲一些列表型的數據結構,相似粉絲列表、文章的評論列表之類的東西。

好比能夠經過 lrange 命令,讀取某個閉區間內的元素,能夠基於 list 實現分頁查詢,這個是很棒的一個功能,基於 redis 實現簡單的高性能分頁,能夠作相似微博那種下拉不斷分頁的東西,性能高,就一頁一頁走。

# 0開始位置,-1結束位置,結束位置爲-1時,表示列表的最後一個位置,即查看全部。

lrange mylist 0 -1

好比能夠搞個簡單的消息隊列,從 list 頭懟進去,從 list 尾巴那裏弄出來。

lpush mylist 1

lpush mylist 2

lpush mylist 3 4 5

 

# 1

rpop mylist

set

set 是無序集合,自動去重。

直接基於 set 將系統裏須要去重的數據扔進去,自動就給去重了,若是你須要對一些數據進行快速的全局去重,你固然也能夠基於 jvm 內存裏的 HashSet 進行去重,可是若是你的某個系統部署在多臺機器上呢?得基於 redis 進行全局的 set 去重。

能夠基於 set 玩兒交集、並集、差集的操做,好比交集吧,能夠把兩我的的粉絲列表整一個交集,看看倆人的共同好友是誰?對吧。

把兩個大 V 的粉絲都放在兩個 set 中,對兩個 set 作交集。

#-------操做一個set-------

# 添加元素

sadd mySet 1

 

# 查看所有元素

smembers mySet

 

# 判斷是否包含某個值

sismember mySet 3

 

# 刪除某個/些元素

srem mySet 1

srem mySet 2 4

 

# 查看元素個數

scard mySet

 

# 隨機刪除一個元素

spop mySet

 

#-------操做多個set-------

# 將一個set的元素移動到另一個set

smove yourSet mySet 2

 

# 求兩set的交集

sinter yourSet mySet

 

# 求兩set的並集

sunion yourSet mySet

 

# 求在yourSet中而不在mySet中的元素

sdiff yourSet mySet

sorted set

sorted set 是排序的 set,去重但能夠排序,寫進去的時候給一個分數,自動根據分數排序。

zadd board 85 zhangsan

zadd board 72 lisi

zadd board 96 wangwu

zadd board 63 zhaoliu

 

# 獲取排名前三的用戶(默認是升序,因此須要 rev 改成降序)

zrevrange board 0 3

 

# 獲取某用戶的排名

zrank board zhaoliu

相關文章
相關標籤/搜索