您好,登錄后才能下訂單哦!
Redis VS Memcached
通過對比學習,可以加深理解組件的特性。下面兩段文字,摘自各自的官方文檔。
http://www.redis.io/
http://memcached.org/
Redis官方簡介
Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
Memcached官方簡介
Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.
Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its API is available for most popular languages.
兩者主要有以下區別(也是redis更優秀的地方)
redis可以用來做存儲(storge), 而memccached是用來做緩存(cache)
這個特點主要因為其有”持久化”的功能.
存儲的數據有”結構”,對于memcached來說,存儲的數據,只有1種類型--”字符串”,
而redis則可以存儲字符串,鏈表,哈希結構,集合,有序集合.
redis服務端支持高可用。
1.Redis安裝與啟動
比memcached安裝還簡單。
$ cd /usr/local/src $ wget http://download.redis.io/releases/redis-3.2.3.tar.gz $ tar xzf redis-3.2.3.tar.gz $ cd redis-3.2.3 #如果要執行make test測試,需要安裝tcl $ yum install tcl $ make PREFIX=/usr/local/redis install $ cp /usr/local/src/redis-3.2.3/redis.conf /usr/local/redis/
工具列表
$ ls /usr/local/redis/bin/ redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
redis-benchmark 性能測試工具
redis-check-aof 日志文件檢測工(比如斷電造成日志損壞,可以檢測并修復)
redis-check-dump 快照文件檢測工具,效果類上
redis-cli 客戶端
redis-server 服務端
redis 版hello world
$ /usr/local/redis/bin/redis-server $ /usr/local/redis/bin/redis-cli redis> set foo bar OK redis> get foo "bar"
2.配置文件(redis.conf)
由于redis比memcached功能更全,命令更多,配置參數也響應更多。簡單分類下
模塊 | 作用 | 參數 |
INCLUDES | 包含 | |
NETWORK | 網絡 | |
GENERAL | 公共 | daemonize no #默認情況下redis 不是以守護進程的模式運行。 pidfile /var/run/redis.pid port 6379 logfile stdout logfile stdout |
REPLICATION | 復制 | slaveof <masterip> <masterport> #只在slave添加該參數,用于創建一個鏡像服務; masterauth <master-password> |
SNAPSHOTTING | 快照 將內存中的數據刷寫到磁盤上 | save <seconds> <changes> 觸發刷新操作 stop-writes-on-bgsave-error yes rdbcompression yes dbfilename dump.rdb repl-timeout 60 |
SECURITY | 安全 | #requirepass foobared 配置redis訪問密碼的參數 #rename-command 重命名或禁用某些命令 |
LIMITS | 限制 | maxclients 10000 #最大并發連接數,默認為一萬,這個跟系統本身的 open-file-limit 有關 maxmemory <bytes> maxmemory-policy |
APPEND ONLY MODE | appendfilename appendonly.aof #append file 的文件名稱 appendfsync everysec #append log AOF日志文件同步的頻率刷寫磁盤的頻率 fsync() 請求操作系統馬上把數據寫到磁盤上 Redis支持三種不同的模式: no:不要立刻刷,只有在操作系統需要刷的時候再刷。比較快。 always:每次寫操作都立刻寫入到aof文件。慢,但是最安全。 everysec:每秒寫一次。折衷方案。 默認的 "everysec" 通常來說能在速度和數據安全性之間取得比較好的平衡。 no-appendfsync-on-rewrite no # 如果AOF的同步策略設置成 "always" 或者 "everysec",那么后臺的存儲進程(后臺存儲或寫入AOF日志)會產生很多磁盤I/O開銷。 某些Linux的配置下會使Redis因為 fsync() 而阻塞很久。 目前對這個情況還沒有完美修正,甚至不同線程的 fsync() 會阻塞我們的 write(2) 請求。 為了緩解這個問題,可以用下面這個選項。它可以在 BGSAVE 或 BGREWRITEAOF 處理時阻止 fsync()。 這就意味著如果有子進程在進行保存操作,那么Redis就處于"不可同步"的狀態。 這實際上是說,在最差的情況下可能會丟掉30秒鐘的日志數據。(默認Linux設定) 如果有延遲的問題那就把這個設為 "yes",否則就保持 "no",這是保存持久數據的最安全的方式。 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb #AOF文件自動重寫。 | |
LUA SCRIPTING | LUA腳本 | |
REDIS CLUSTER | 集群 |
用于開實例的集群模式 cluster-conf-file 設定了保存節點配置文件的路徑, 默認值為 nodes.conf 。 cluster-node-timeout 15000 #節點互連超時的閥值 cluster-slave-validity-factor slave節點檢測因數,開始failover的超時時限是通過factor與timeout的乘積來確定的。 cluster-require-full-coverage <yes/no> : 如果某一些key space沒有被集群中任何節點覆蓋,集群將停止接受寫入。 |
SLOW LOG | 日志 | #Redis慢查詢日志可以記錄超過指定時間的查詢。運行時間不包括各種I/O時間。 例如:連接客戶端,發送響應數據等。只計算命令運行的實際時間(這是唯一一種命令運行線程阻塞而無法同時為其他請求服務的場景 slowlog-log-slower-than 10000(單位微秒) #慢查詢日志長度,這個長度沒有限制。只要有足夠的內存就行可以通過 SLOWLOG RESET 來釋放內存(當一個新的命令被寫進日志的時候,最老的那個記錄會被刪掉。)。 slowlog-max-len 128 (ps:日志居然是在內存里面的,) 對于虛擬內存的使用, ### 警告!虛擬內存在Redis 2.4是反對的。 ### 非常不鼓勵使用虛擬內存!! 在2.6中 根本沒有其相關配置, |
LATENCY MONITOR | 監控報告 | ... |
EVENT NOTIFICATION | 通知,消息隊列 | ... |
ADVANCED CONFIG | 高級 | ... |
參考資源
http://weipengfei.blog.51cto.com/1511707/1217504
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。