redis-rack-cache
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Redis stores for Rack::Cache
# Redis stores for Rack::Cache

[![Build Status](https://travis-ci.org/redis-store/redis-rack-cache.svg?branch=master)](https://travis-ci.org/redis-store/redis-rack-cache)
[![Gem Version](https://badge.fury.io/rb/redis-rack-cache.svg)](http://badge.fury.io/rb/redis-rack-cache) [![Build Status](https://secure.travis-ci.org/redis-store/redis-rack-cache.svg?branch=master)](http://travis-ci.org/jodosha/redis-rack-cache?branch=master) [![Code Climate](https://codeclimate.com/github/jodosha/redis-store.svg)](https://codeclimate.com/github/redis-store/redis-rack-cache)

__`redis-rack-cache`__ provides a Redis backed store for __Rack::Cache__, an HTTP cache. See the main [redis-store readme](https://github.com/redis-store/redis-store) for general guidelines.

**NOTE:** This gem is necessary in addition to
[redis-rails](https://github.com/redis-store/redis-rails) if you use
Redis to store the Rails cache. `redis-rails` does not pull in this gem
by default since not all applications use `Rack::Cache` as their HTTP
cache.

## Installation

```ruby
# Gemfile
gem 'redis-rack-cache'
```

## Usage

In a Rails app, you can configure your `Rack::Cache` stores like this:

```ruby
# config/environments/production.rb
Rails.application.configure do
  config.action_dispatch.rack_cache = {
    metastore: "#{Rails.credentials.redis_url}/1/rack_cache_metastore",
    entitystore: "#{Rails.credentials.redis_url}/1/rack_cache_entitystore"
    # NOTE: `:meta_store` and `:entity_store` are also supported.
  }
end
```

For more complicated setups, like when using custom options, the
following syntax can also be used:

```ruby
# config/environments/production.rb
Rails.application.configure do
  config.action_dispatch.rack_cache = {
    meta_store: ::Rack::Cache::MetaStore::Redis.new("#{Rails.credentials.redis_url}/1/rack_cache_metastore", default_ttl: 10.days.to_i),
    entity_store: ::Rack::Cache::EntityStore::Redis.new("#{Rails.credentials.redis_url}/1/rack_cache_entitystore", default_ttl: 120.days.to_i)
    # NOTE: `:metastore` and `:entitystore` are also supported.
  }
end
```

For standalone usage (in non-Rails apps):

```ruby
# config.ru
require 'rack'
require 'rack/cache'
require 'redis-rack-cache'

use Rack::Cache,
  metastore: 'redis://localhost:6379/0/metastore',
  entitystore: 'redis://localhost:6380/0/entitystore'
```

### Compression

`Redis::Rack::Cache` supports data compression for entities over 1K when
transmitting back and forth over the wire to your Redis server.
Compressing data can improve bandwidth usage as well as RAM/storage
consumption, and is recommended if you operate a large-scale Rails
application.

To enable this feature, pass the `:compress` option when configuring
`Rack::Cache`:

```ruby
Rails.application.configure do
  config.action_dispatch.rack_cache = {
    metastore: "#{Rails.credentials.redis_url}/1",
    entitystore: "#{Rails.credentials.redis_url}/2",
    compress: true
  }
end
```

If compression is turned on, but no driver has been selected,
`Redis::Rack::Cache` will use Ruby's internal **ZLib** integrations and
compress entities with GZip. You can specify `:deflate` if you want to
use the deflate algorithm, `:gzip` if you want to be specific about it,
or a custom object that responds to `.deflate(data)` and
`.inflate(data)` to compress/decompress data, respectively. For example,
you can use Google's [Snappy](http://google.github.io/snappy/) for
[ludicrous-speed](https://www.youtube.com/watch?v=ygE01sOhzz0)
compression and decompression like this:

```ruby
Rails.application.configure do
  config.action_dispatch.rack_cache = {
    metastore: "#{Rails.credentials.redis_url}/1",
    entitystore: "#{Rails.credentials.redis_url}/2",
    compress: Snappy
  }
end
```

**NOTE:** Since metadata would have to be marshalled before compression
in order to rehydrate it back into an object, only data stored in the
EntityStore is compressed for now. We'd love your feedback though,
let us know if there's a good use case for MetaStore compression!

## Development

First, get the project set up on your local machine:

```bash
git clone https://github.com/redis-store/redis-rack-cache.git
cd redis-rack-cache
bundle install
```

You can run the following command to run the test suite:

```bash
bundle exec rake test
```

If you are on **Snow Leopard** you have to run `env ARCHFLAGS="-arch x86_64" bundle exec rake`

## Copyright

2009 - 2013 Luca Guidi - [http://lucaguidi.com](http://lucaguidi.com), released under the MIT license

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。