redis 主要有以下幾個資料型別:
string
hash
## list
set
sorted set
##string
這是最簡單的類型,就是普通的set 和get,做簡單的KV 快取。
set college szu
這個是類似map 的一種結構,這個一般就是可以將結構化的數據,例如一個物件(前提是這個物件沒嵌套其他的物件)給快取在redis 裡,然後每次讀寫快取的時候,可以就操作hash 裡的某個欄位。
hset person name bingo hset person age 20 hset person id 1 hget person name person = { "name": "bingo", "age": 20, "id": 1 }
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
zadd board 85 zhangsan zadd board 72 lisi zadd board 96 wangwu zadd board 63 zhaoliu # 获取排名前三的用户(默认是升序,所以需要 rev 改为降序) zrevrange board 0 3 # 获取某用户的排名 zrank board zhaoliu
以上是redis一般緩存哪些數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!