Redis 做为缓存服务器的配置

随着redis的发展,愈来愈多的架构用它取代了memcached做为缓存服务器的角色,它有几个很突出的特色:
1. 除了Hash,还提供了Sorted Set, List等数据结构
2. 能够持久化到磁盘
3. 支持cluster (3.0)html

它的性能和memcached不相上下,再加上流行的其余组件(好比队列)也会用到redis,从架构简单出发,已经没有必要混用redis和memcached了。git

写篇短文介绍一下用redis做为缓存服务器配置时候须要注意几个点。github

Redis配置

做为缓存服务器,若是不加以限制内存的话,就颇有可能出现将整台服务器内存都耗光的状况,能够在redis的配置文件里面设置:redis

?
1
2
# 限定最多使用1.5GB内存
maxmemory 1536mb

若是内存到达了指定的上限,还要往redis里面添加更多的缓存内容,须要设置清理内容的策略:shell

?
1
2
# 设置策略为清理最少使用的key对应的数据
maxmemory-policy allkeys-lru

清理策略有多种,redis的官方文档有一篇很详细的说明: http://redis.io/topics/lru-cache缓存

Redis监控

redis提供了INFO这个命令,可以随时监控服务器的状态,只用telnet到对应服务器的端口,执行命令便可:ruby

?
1
2
telnet localhost 6379
info

在输出的信息里面有这几项和缓存的状态比较有关系:服务器

?
1
2
3
4
5
keyspace_hits:14414110
keyspace_misses:3228654
used_memory:433264648
expired_keys:1333536
evicted_keys:1547380

经过计算hits和miss,咱们能够获得缓存的命中率:14414110 / (14414110 + 3228654) = 81% ,一个缓存失效机制,和过时时间设计良好的系统,命中率能够作到95%以上,对于总体性能提高是很大的。
used_memory,expired_keys,evicted_keys这3个信息的具体含义,redis的官方也有一篇很详细的说明:http://redis.io/commands/info数据结构

有个ruby gem叫redis-stat,它利用INFO命令展示出更直观的信息报表,推荐:
https://github.com/junegunn/redis-stat架构

Redis 做为缓存服务器的配置
相关文章
相关标签/搜索