是一種 key-value 的 storage,可以想成進階版的 memcached,它提供了更多種 data structure 與 operator。它不再只是一個儲存體,更能做一些邏輯運算,之前很多要在 client 端做的事情,都可以在 redis server 處理掉。
和其他 NoSQL 相比,資料儲存在 memory,存取速度超快,但也因此儲存空間會受限在 memory size,雖然支援分散式 (Master-Slave),但每個 node 都是一個映射,也就是儲存一模一樣的資料,所以什麼該放在 redis 也是需要仔細想過。它不是完全用來取代 database,而是針對經常存取、較複雜運算的部份再派它上場。
這三篇推薦看一下
這三份文件也可以看
參數設定
請參考 Redis.conf 中文配置详解.docx,下面列出幾個比較重要的參數:
限制 redis 使用 memory 的大小,當 memory 滿的時候,使用 LRU 的方式來移除舊的key
maxmemory <bytes> maxmemory-policy volatile-lru
文中建議關閉鏡像備份,用 Append Only Mode 的方式來備份,並設定自動執行 BGREWRITEAOF 指令來重整 appendonly.aof
# save <seconds> <changes> appendonly yes appendfilename appendonly.aof auto-aof-rewrite-percentage 128 zset-max-ziplist-value 64 activerehashing yes
若使用分散式架構,要指定master主機的位址
slaveof <masterip> <masterport> slave-serve-stale-data yes
指令使用
應用在哪?
個人也還在摸索當中,只覺得 redis 真的很強大,但再強大的東西也是需要遇到會用的人,也就是怎麼把當下的問題用 redis 來解決,這就攸關個人的設計能力了。
- Pub/Sub 做多人聊天室
- Social network
- Design the graph data with nosql // Speaker Deck
- redis_graph: Graph database for Python - amix.dk
- Fast, easy, realtime metrics using Redis bitmaps «
- Sorted Set: Per user notification
- String: API request limiter
- String, List: Request logging
- List: Job Queue
待整理的資料
- Redis新分支,进行服务端lua脚本支持的开发 - NoSQLFan - 关注NoSQL相关技术、新闻
- Redis: based on real story
- Using Redis SORT and GET to save on roundtrips
- Redis 常见的性能问题和解决方法 - 温柔一刀 - ITeye技术网站
沒有留言:
張貼留言