1. 配置中心算法
Redis 自己就是內存 K/V 數據庫,支持 哈希、集合、列表等五種數據結構,從而配置信息的存儲、讀取速度都可以獲得知足,Redis 還提供訂閱/發佈功能從而能夠在配置發生改變時通知不一樣服務器來進行更新相關配置。數據庫
2. 分佈式鎖緩存
使用 Redis 的 SETNX 命令或者 SET 命令配合 NX 選項的方式以及過時時間等功能能夠很方便的實現一個性能優越的分佈式鎖。服務器
3. 緩存數據結構
Redis 支持多種過時淘汰機制,自己性能的優點也使 Redis 在緩存方面獲得普遍使用。併發
4. Lua 腳本app
Lua 是一種輕量小巧的腳本語言,用標準C語言編寫並開放源代碼。Redis 支持 Lua 腳本的運行,從而能夠擴展 Redis 中的命令實現不少複雜功能。分佈式
Redis 支持使用 Lua 腳原本實現一些組合命令邏輯處理,從而可使用 Redis 作爲限流、分佈式惟一 ID 相關技術的實現。性能
經過eval命令調用優化
5. Redis 支持 BitMaps
位圖(bitmap)是一種很是經常使用的結構,在索引,數據壓縮等方面有普遍應用,能同時保證存儲空間和速度最優化(而沒必要空間換時間)。
使用 Redis 的 BitMaps 作爲用戶登陸記錄統計,不只統計速度極快,並且內存佔用極低。
setbit, getbit, bitcount
6. Redis 支持 HyperLogLog 算法
Redis HyperLogLog是一種使用隨機化的算法,以少許內存提供集合中惟一元素數量的近似值。
HyperLogLog 能夠接受多個元素做爲輸入,並給出輸入元素的基數估算值:
HyperLogLog 的優勢是,即便輸入元素的數量或者體積很是很是大,計算基數所需的空間老是固定的、而且是很小的。
在 Redis 裏面,每一個 HyperLogLog 鍵只須要花費 12 KB 內存,就能夠計算接近 2^64 個不一樣元素的基數。這和計算基數時,元素越多耗費內存就越多的集合造成鮮明對比。使用 HyperLogLog 算法,咱們能夠垂手可得的實現 IP 統計等對數據允許些許偏差的統計功能。
基數:集合中不一樣元素的數量。好比 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基數就是3。
估算值:算法給出的基數並非精確的,可能會比實際稍微多一些或者稍微少一些,但會控制在合理的範圍以內。
7. Redis 支持 Geo 功能
咱們可使用基於 Redis 來實現地理位置相關管理,附近的人、兩地理位置間距離計算等功能變得極爲容易實現。
8. 簡單消息隊列
Redis 列表 + 發佈/訂閱功能能夠很方便的實現一個簡單的消息隊列,將消息存入 Redis 列表中,經過 發佈/訂閱功能通知指定成員,成員獲取到通知後能夠根據通知內容進行對應處理。
9. 全文檢索
Redis 官方團隊開發了 RediSearch 模塊,能夠實現使用 Redis 來作全文檢索的功能。
10. 分佈式惟一ID
Redis 的設計使其能夠避免併發的多種問題,使其命令都是原子執行,這些特性都天生匹配分佈式惟一ID生成器的要求。
並且經過與 Lua 腳本的結合使用更是能生成複雜的有某些規律的惟一ID。
https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650690069&idx=1&sn=38f9ce616c4a85e7492fc53533dcb0e0&chksm=bea623c689d1aad09cfa942fa2e348c1818fe4c72609eb3aaa53c92f07a82c3677b3a69d1603&scene=0&key=d6901a04ff0e16e8f5f153994c8a01bf3913272d33a49d44f1a683d6d536834b29415be850eae5e38dc86a5e32a0ac8cc30fb96c9a86e1b63b1599160b05248dc9274caeb6493fc5111c7e078e239365&ascene=0&uin=Mjc5Nzc3MDE4MA%3D%3D&devicetype=iMac+MacBookPro12%2C1+OSX+OSX+10.12.2+build(16C67)&version=12020010&nettype=WIFI&fontScale=100&pass_ticket=k%2BcN5HCFGqDMp0oRFjvSAL55Ai964R3j%2BiNG00BA2AdES0LaDwp0DMKua9l4afpI