ttserver 缓存使用和过期设置
2014-07-01 10:59
337 查看
ttserver是数据库,memcached是缓存。两者都是保存<key,value>形式的数据,通过key进行任何操作。ttserver可以将数据持久化保存,memcached全部是保存在内存中,memcached会自动删除过期数据,最长不超过30天,ttserver是存储所以没有过期一说。memcached在和一些api配合时,能自动进行数据的出入序列化,读取反序列化。ttserver有主从复制的功能,操作日志等,这完全是数据库才有的东西
ttserver启动后使用非常方便,php可以直接用Memcache扩展来操作
但是ttserver默认是不支持key过期的,要想让ttserver支持,就需要通过lua脚本的方式来实现
持久化而支持过期的缓存
如果你想位你的web应用缓存类似session信息这样的数据,但是想避免因服务器当机而造成的数据丢失,Tokyo Tyrant是一个方案,也就是说,持久化而支持过期的缓存。它需要下面的前提条件:
1. 服务器必须开启table database
2. 客户端保存每条记录时要使用过期数据列
3. 数据库在过期数据列上要有索引
4. 数据库要开启自动重新组合
5. 服务器必须周期性的调用通过Lua扩展提供的用户自定义函数
首先,为过期准备下面的脚本并保存为"ttexpire.lua"。当"X"列的数值超过当前日期时将使记录过期。
function expire()
local args = {}
local cdate = string.format("%d", _time())
table.insert(args, "addcond\0x\0NUMLE\0" .. cdate)
table.insert(args, "out")
local res = _misc("search", args)
if not res then
_log("expiration was failed", 2)
end
end
启动服务器,table database方式,其中有一个"x"列是有索引的,并计划每秒钟调用一次expiration 函数。
[terminal-1]$ ttserver -ext ttexpire.lua -extpc expire 1.0 "casket.tct#idx=x:dec#dfunit=8"
在另外一个终端中存储测试记录。
[terminal-2]$ now=`date +%s`
for((i=1;i<=60;i++)); do
tcrmgr put -sep '|' localhost "$i" "x|$((now+i))"
done
确认数据正在被过期机制删除:
[terminal-2]$ tcrmgr list -pv -sep '|' localhost
ttserver启动后使用非常方便,php可以直接用Memcache扩展来操作
<?php $memcache = new Memcached(); $memcache->addServer('172.16.9.128', 2001) ; $add = $memcache->set("askie","2"); echo $add."\n"; $add = $memcache->get("askie"); echo $add."\n"; ?>
但是ttserver默认是不支持key过期的,要想让ttserver支持,就需要通过lua脚本的方式来实现
持久化而支持过期的缓存
如果你想位你的web应用缓存类似session信息这样的数据,但是想避免因服务器当机而造成的数据丢失,Tokyo Tyrant是一个方案,也就是说,持久化而支持过期的缓存。它需要下面的前提条件:
1. 服务器必须开启table database
2. 客户端保存每条记录时要使用过期数据列
3. 数据库在过期数据列上要有索引
4. 数据库要开启自动重新组合
5. 服务器必须周期性的调用通过Lua扩展提供的用户自定义函数
首先,为过期准备下面的脚本并保存为"ttexpire.lua"。当"X"列的数值超过当前日期时将使记录过期。
function expire()
local args = {}
local cdate = string.format("%d", _time())
table.insert(args, "addcond\0x\0NUMLE\0" .. cdate)
table.insert(args, "out")
local res = _misc("search", args)
if not res then
_log("expiration was failed", 2)
end
end
启动服务器,table database方式,其中有一个"x"列是有索引的,并计划每秒钟调用一次expiration 函数。
[terminal-1]$ ttserver -ext ttexpire.lua -extpc expire 1.0 "casket.tct#idx=x:dec#dfunit=8"
在另外一个终端中存储测试记录。
[terminal-2]$ now=`date +%s`
for((i=1;i<=60;i++)); do
tcrmgr put -sep '|' localhost "$i" "x|$((now+i))"
done
确认数据正在被过期机制删除:
[terminal-2]$ tcrmgr list -pv -sep '|' localhost
相关文章推荐
- IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】
- IIS使用十大原则,(IIS过期时间,IIS缓存设置)
- IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】
- IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】
- IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】
- IIS使用十大原则,(IIS过期时间,IIS缓存设置) 【转载】
- Android设置界面及Preference使用 + 实现开启自启动 清理缓存 杀进程
- 关于jQuery的cookies插件2.2.0版设置过期时间的说明 (使用过,真的OK)
- 在struts中使用ICacheKeyProvider设置图片缓存
- 使用缓存配置文件以声明方式设置页的可缓存性
- 使用header头设置缓存控制头Cache-control
- 如何设置 ASP.NET 页缓存的过期时间值
- 缓存之缓存文件依赖及编程方式设置输出缓存过期
- varnish的全局缓存过期时间设置
- 设置tomcat过期缓存
- 设置不使用缓存的过滤器
- 如何设置 ASP.NET 页缓存的过期时间值
- vsphere域控密码过期,重新设置域控密码vcenter无法使用
- 如何设置ASP.NET页缓存的过期时间值
- 让JSP页面不缓存 设置JSP页面立即过期