srcache_nginx+redis构建缓存系统
在《memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存》一文中,我们使用到memcached来作为缓存载体。想必大家都知道memcached有存储大小的限制,不得超过1M。 本文将使用redis来作为缓存载体。nginx的srcache_nginx模块指令参数解释参见《memc_nginx+srcache_nginx+memcached构建透明的动态页面缓存》。
1. nginx模块
1
2
3
4
5
|
--
add
-
module
=
.
.
/
modules
/
ngx_devel_kit
-
0.2.18
--
add
-
module
=
.
.
/
modules
/
set
-
misc
-
nginx
-
module
-
0.22rc8
--
add
-
module
=
.
.
/
modules
/
srcache
-
nginx
-
module
-
0.22
--
add
-
module
=
.
.
/
modules
/
redis
-
nginx
-
module
-
0.3.6
--
add
-
module
=
.
.
/
modules
/
redis2
-
nginx
-
module
-
0.10
|
nginx模块安装参见ttlsa.com中相关文档。
2. redis安装配置
安装步骤参见:http://www.ttlsa.com/html/1646.html
配置参数解释参见:http://www.ttlsa.com/html/1226.html
配置实例:
# vim redis.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
daemonize
yes
pidfile
/
var
/
run
/
redis
-
6379.pid
port
6379
bind
127.0.0.1
timeout
0
tcp
-
keepalive
0
loglevel
notice
logfile
stdout
databases
16
stop
-
writes
-
on
-
bgsave
-
error
yes
rdbcompression
yes
rdbchecksum
yes
dbfilename
dump
.
rdb
slave
-
serve
-
stale
-
data
yes
slave
-
read
-
only
yes
repl
-
disable
-
tcp
-
nodelay
no
slave
-
priority
100
maxmemory
8096mb
maxmemory
-
policy
volatile
-
ttl
appendonly
no
appendfsync
everysec
no
-
appendfsync
-
on
-
rewrite
no
auto
-
aof
-
rewrite
-
percentage
100
auto
-
aof
-
rewrite
-
min
-
size
64mb
lua
-
time
-
limit
5000
slowlog
-
log
-
slower
-
than
10000
slowlog
-
max
-
len
128
hash
-
max
-
ziplist
-
entries
512
hash
-
max
-
ziplist
-
value
64
list
-
max
-
ziplist
-
entries
512
list
-
max
-
ziplist
-
value
64
set
-
max
-
intset
-
entries
512
zset
-
max
-
ziplist
-
entries
128
zset
-
max
-
ziplist
-
value
64
activerehashing
yes
client
-
output
-
buffer
-
limit
normal
0
0
0
client
-
output
-
buffer
-
limit
slave
256mb
64mb
60
client
-
output
-
buffer
-
limit
pubsub
32mb
8mb
60
hz
10
aof
-
rewrite
-
incremental
-
fsync
yes
|
由于只把redis当做缓存使用,因此没有启用持久化。
3. nginx配置
# vim nginx.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
http
{
include
mime
.
types
;
default_type
application
/
octet
-
stream
;
log_format
main
'$remote_addr - $remote_user [$time_local] "$request" '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'"$gzip_ratio" $request_time $bytes_sent $request_length'
;
log_format
srcache
_log
'$remote_addr - $remote_user [$time_local] "$request" '
'"$status" $body_bytes_sent $request_time $bytes_sent $request_length '
'[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]'
;
set_real_ip
_from
10.0.0.0
/
8
;
real_ip
_header
X
-
Forwarded
-
For
;
include
vhosts
/
test
.
ttlsa
.
com
.
conf
;
}
|
# vim vhosts/test.ttlsa.com.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
upstream
redis
{
server
127.0.0.1
:
6379
;
keepalive
512
;
}
server
{
listen
80
;
server_name
test
.
ttlsa
.
com
;
index
index
.
html
index
.
htm
index
.
php
;
root
/
data
/
test
.
ttlsa
.
com
/
webroot
;
location
~
.
*
\
.
php
{
srcache_store_private
on
;
srcache_methods
GET
;
srcache_response_cache_control
off
;
if
(
$
uri
~
/
ttlsa
.
com
/
pp
.
php
$
)
{
set
$
key
$
request_uri
;
set_escape
_uri
$
escaped
_key
$
key
;
srcache_fetch
GET
/
redis
$
key
;
srcache_default
_expire
172800
;
srcache_store
PUT
/
redis2
key
=
$
escaped_key
&
exptime
=
$
srcache_expire
;
#add_header X-Cached-From $srcache_fetch_status;
#set_md5 $md5key $key;
#add_header X-md5-key $md5key;
#add_header X-Cached-Store $srcache_store_status;
#add_header X-Key $key;
#add_header X-Query_String $query_string;
#add_header X-expire $srcache_expire;
access_log
/
data
/
httplogs
/
test
.
ttlsa
.
com
-
photo
-
access
.
log
srcache_log
;
}
include
fastcgi_params
;
fastcgi
_pass
127.0.0.1
:
9000
;
fastcgi_index
index
.
php
;
fastcgi_connect
_timeout
60
;
fastcgi_send
_timeout
180
;
fastcgi_read
_timeout
180
;
fastcgi_buffer
_size
128k
;
fastcgi
_buffers
4
256k
;
fastcgi_busy_buffers
_size
256k
;
fastcgi_temp_file_write
_size
256k
;
fastcgi_intercept_errors
on
;
fastcgi_param
SCRIPT
_FILENAME
$
document_root
$
fastcgi_script_name
;
fastcgi_split_path_info
^
(
.
+
\
.
php
)
(
.
*
)
$
;
fastcgi_param
PATH
_INFO
$
fastcgi_path_info
;
}
location
=
/
redis
{
internal
;
set
_md5
$
redis
_key
$
args
;
redis_pass
redis
;
}
location
=
/
redis2
{
internal
;
set_unescape
_uri
$
exptime
$
arg_exptime
;
set_unescape
_uri
$
key
$
arg_key
;
set
_md5
$
key
;
redis2_query
set
$
key
$
echo_request_body
;
redis2_query
expire
$
key
$
exptime
;
redis2_pass
redis
;
}
error_log
/
data
/
httplogs
/
test
.
ttlsa
.
com
-
error
.
log
;
access_log
/
data
/
httplogs
/
test
.
ttlsa
.
com
-
aceess
.
log
main
;
}
|
4. 测试
没有做缓存状态:
有做缓存状态:
5. 响应头状态
第一次请求:
再次请求:
6. 查看redis是否缓存以及过期时间
如需转载请注明出处: http://www.ttlsa.com/html/3156.html
收 藏
成长的对话版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!