博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ttserver 缓存使用和过期设置
阅读量:2429 次
发布时间:2019-05-10

本文共 1334 字,大约阅读时间需要 4 分钟。

ttserver是数据库,memcached是缓存。两者都是保存<key,value>形式的数据,通过key进行任何操作。ttserver可以将数据持久化保存,memcached全部是保存在内存中,memcached会自动删除过期数据,最长不超过30天,ttserver是存储所以没有过期一说。memcached在和一些api配合时,能自动进行数据的出入序列化,读取反序列化。ttserver有主从复制的功能,操作日志等,这完全是数据库才有的东西

ttserver启动后使用非常方便,php可以直接用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 

转载地址:http://yksmb.baihongyu.com/

你可能感兴趣的文章
软件开发行业,年轻与大龄程序员的生存现状
查看>>
王者荣耀活动精选 Blink 第二弹来袭!
查看>>
打开数“智”化之门,一字之差带来的思考
查看>>
阿里技术人的成长路径是什么?
查看>>
你值得拥有!更省钱地完成数据监听
查看>>
漫画 | TCP,一个悲伤的故事
查看>>
张一鸣无圈胜破圈?
查看>>
抓紧!抓紧!CSDN年终重榜福利来了~人手一份,快来投稿!!
查看>>
干货! AI 推断解决方案栈 Vitis AI 全流程独家解析
查看>>
真相了 | 敲代码时,程序员戴耳机究竟在听什么?
查看>>
回首互联网十年,我们能从八次烧钱大战中学到什么
查看>>
漫画:如何辨别二逼互联网公司!?
查看>>
麒麟信安面向场景化创新,赋能openEuler商业验证
查看>>
1 分钟带你认识从 "�" 到 "锟斤拷"
查看>>
3 年培养 10 万“码农”,郑州推出“码农计划”
查看>>
一个三本程序猿的大厂逆袭之路
查看>>
程序员弃码投中医?还做成了不错的生意! | 极客视频
查看>>
百度一 29 岁程序员因“篡改数据”被抓
查看>>
去年我年薪 30W,今年我一天做 3 顿饭
查看>>
入职大厂,我容易吗?
查看>>