redis作为页面缓存设置缓存大小

为了加快网页响应速度,网站采取了使用redis作为页面缓存

1.用到的gem

1
2
gem 'redis'
gem 'redis-objects'

2.为了实现挂载到某个实例下,在需要挂载的model添加类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Personality < ActiveRecord::Base
class PersonalHtml
include ::Redis::Objects
hash_key :index, :expiration => 1.day
def initialize(obj)
@id = obj.code
end
def id
@id
end
end
end

3.添加实例方法,以供调用

1
2
3
def my_html
instance_variable_fetch :my_html, PersonalHtml.new(self)
end

4.储存页面,以及展示页面

1
render text: personality.my_html.index["1"].presence || (personality.my_html.index["1"] = render_to_string('index'))

5.redis的服务器配置,因为设置的页面缓存,所以说在用户并发量大,或者过期时间设置不合理的时候,内存可能会爆,所以要更改一下redis的默认配置。

1
2
maxmemory 2g
maxmemory-policy allkeys-lru

官方文档对此的注释为

1
2
3
4
5
6
7
8
9
10
配置文件
maxmemory 限制最大可用内存大小(单位字节)
maxmemory-policy 超过限制时的删除策略,一直删除直到小于指定内存
volatile-lru 使用LRU算法删除一个键,只对设置了生存时间的
allkeys-lru 使用LRU算法删除一个键
volatile-random 随机,只对设置了生存时间的
allkeys-random
volatile-ttl 删除生存时间最近的
noeviction 不删除键,返回错误

可以根据自己的需要来配置。