为了加快网页响应速度,网站采取了使用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 不删除键,返回错误
|
可以根据自己的需要来配置。