當前位置:成語大全網 - 新華字典 - redis的基本數據結構有哪些,都有什麽應用

redis的基本數據結構有哪些,都有什麽應用

1. String——字符串

String 數據結構是簡單的 key-value 類型,value 不僅可以是 String,也可以是數字(當數字類型用 Long

可以表示的時候encoding 就是整型,其他都存儲在 sdshdr 當做字符串)。使用 Strings 類型,可以完全實現目前 Memcached

的功能,並且效率更高。還可以享受 Redis 的定時持久化(可以選擇 RDB 模式或者 AOF 模式),操作日誌及 Replication 等功能。除了提供與

Memcached 壹樣的 get、set、incr、decr 等操作外,Redis 還提供了下面壹些操作:

2. Hash——字典

在 Memcached 中,我們經常將壹些結構化的信息打包成 hashmap,在客戶端序列化後存儲為壹個字符串的值(壹般是 JSON

格式),比如用戶的昵稱、年齡、性別、積分等。這時候在需要修改其中某壹項時,通常需要將字符串(JSON)取出來,然後進行反序列化,修改某壹項的值,再序列化成字符串(JSON)存儲回去。簡單修改壹個屬性就幹這麽多事情,消耗必定是很大的,也不適用於壹些可能並發操作的場合(比如兩個並發的操作都需要修改積分)。而

Redis 的 Hash 結構可以使妳像在數據庫中 Update 壹個屬性壹樣只修改某壹項屬性值。

3. List——列表

List 說白了就是鏈表(redis 使用雙端鏈表實現的 List),相信學過數據結構知識的人都應該能理解其結構。使用 List

結構,我們可以輕松地實現最新消息排行等功能(比如新浪微博的 TimeLine )。List 的另壹個應用就是消息隊列,可以利用 List 的 *PUSH

操作,將任務存在 List 中,然後工作線程再用 POP 操作將任務取出進行執行。Redis 還提供了操作 List 中某壹段元素的

API,妳可以直接查詢,刪除 List 中某壹段的元素。

4. Set——集合

Set 就是壹個集合,集合的概念就是壹堆不重復值的組合。利用 Redis 提供的 Set

數據結構,可以存儲壹些集合性的數據。比如在微博應用中,可以將壹個用戶所有的關註人存在壹個集合中,將其所有粉絲存在壹個集合。因為 Redis

非常人性化的為集合提供了求交集、並集、差集等操作,那麽就可以非常方便的實現如***同關註、***同喜好、二度好友等功能,對上面的所有集合操作,妳還可以使用不同的命令選擇將結果返回給客戶端還是存集到壹個新的集合中。

1.***同好友、二度好友

2.利用唯壹性,可以統計訪問網站的所有獨立 IP

3.好友推薦的時候,根據 tag 求交集,大於某個

threshold 就可以推薦

5. Sorted Set——有序集合

和Sets相比,Sorted Sets是將 Set 中的元素增加了壹個權重參數 score,使得集合中的元素能夠按 score

進行有序排列,比如壹個存儲全班同學成績的 Sorted Sets,其集合 value 可以是同學的學號,而 score

就可以是其考試得分,這樣在數據插入集合的時候,就已經進行了天然的排序。另外還可以用 Sorted Sets 來做帶權重的隊列,比如普通消息的 score

為1,重要消息的 score 為2,然後工作線程可以選擇按 score 的倒序來獲取工作任務。讓重要的任務優先執行。