`
aburrido
  • 浏览: 5202 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

TokyoTyrant 搭建 session 服务器

阅读更多

纯记录 

 

#安装 Tokyo Cabinet

wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.47.tar.gz
tar zxvf tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47
./configure --enable-off64
#32位系统需要 --enable-off64,以让它支持大于2GB的文件
make
make install
cd ..
#安装 lua
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
#要根据系统而定,直接make它会有提示
make linux
make install
ln -s /usr/local/bin/lua /usr/bin/lua
cd ..
#安装Tokyo Cabinet 的 lua 扩展
wget http://1978th.net/tokyocabinet/luapkg/tokyocabinet-lua-1.10.tar.gz
tar zxvf tokyocabinet-lua-1.10.tar.gz
cd tkoyocabinet-lua-1.10
./configure
make
make install
cd ..
#安装 Tokyo Tyrant
wget http://1978th.net/tokyotyrant/tokyotyrant-1.1.41.tar.gz
tar zxvf tokyotyrant-1.1.41.tar.gz
cd tokyotyrant-1.1.41
./configure --enable-lua --with-lua
make
make install
cd ../
mkdir -p /session/
#还需要一个 expire.lua 文件,这个文件用于定时将过期的 session 清理。代码如下:
cat > /session/expire.lua << "EOF" 
function expire()
local args = {}
local cdate = string.format("%d", _time())
table.insert(args, "addcond\0ts\0NUMLE\0" .. cdate)
table.insert(args, "out")
local res = _misc("search", args)
if not res then
_log("expiration was failed", 2)
end
end
EOF
ulimit -SHn 51200
ttserver -host 127.0.0.1 -port 11222 -ext /session/expire.lua -extpc expire 5.0 -thnum 8 -dmn -pid /session/session.pid -log /session/session.log -le -ulog /session/ -ulim 128m -sid 1 -rts /session/session.rts '/session/session.tct#idx=key:lex#idx=ts:dec#dfunit=8'
#安装pecl tokyo_tyrant
wget http://pecl.php.net/get/tokyo_tyrant
tar zxvf tokyo_tyrant
cd tokyo_tyrant-*
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config 
make && make install
echo '[tokyo_tyrant]
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613//tokyo_tyrant.so"' >> /usr/local/php/lib/php.ini
cd ../

<?php

/**
 * Encoding     :   UTF-8
 * Created on   :   2011-05-15 05:18:09
 */
class Session {

    private $sessionCN = 'sessionid';
    private $sessionid;
    private $tt;

    public function __construct() {
        define('SESS_EXPIRE', 3600);
        $this->sessionCN;
        $this->issessionid();
        $this->tt =  new TokyoTyrantTable('127.0.0.1', 11222);
    }

    public function get($name) {
        $sessvl = $this->tt->get($this->sessionid);
        $arr = unserialize($sessvl['vaule']);
        return $arr[$name];
    }

    public function set($name, $vaule=NULL, $sessiontimeleft=SESS_EXPIRE) {
        $sessvl = $this->tt->get($this->sessionid);
        $arr = unserialize($sessvl['vaule']);
        if ($vaule == NULL)
            unset($arr[$name]);
        else
            $arr[$name] = $vaule;
        $this->tt->put($this->sessionid, array('vaule' => serialize($arr), 'ts' => time() + $sessiontimeleft));
    }

    private function creatsessionid() {

        $this->sessionid = md5(uniqid());
        setcookie($this->sessionCN, $this->sessionid, 9999999999, NULL, NULL, NULL, TRUE);
    }

    private function issessionid() {
        if (isset($_COOKIE[$this->sessionCN]))
            $this->sessionid = $_COOKIE[$this->sessionCN];
        else
            $this->creatsessionid();
    }

}
 使用方法
<?php header("Content-type: text/html; charset=utf-8"); ?>
<?php

include 'class/Session.php';
$ss = new Session();
$ss->set('a', 's2a');
$ss->set('b', 's2b');
$ss->set('bc', 's2b');

$ss->set('bc', '');
var_dump($ss->get('bc'));
 


 

0
2
分享到:
评论

相关推荐

    tokyotyrant-1.1.40.tar.gz

    TokyoTyrant是Tokyo Cabinet的一个网络服务器接口,它允许通过网络进行数据存取,提供了高性能、轻量级的数据存储解决方案。TokyoTyrant 1.1.40是该软件的一个版本,适用于CentOS 7 x64操作系统。在安装和使用...

    tokyotyrant

    媲美memcached的缓存服务器软件包,tokyocabinet-1.4.45.tar.gz+tokyotyrant-1.1.40.tar.gz

    tokyotyrant/tokyocabinet/gpac

    TokyoTyrant 是一个轻量级的键值存储服务器,基于 Tokyo Cabinet 数据库引擎。它提供了一个简单的网络接口,使得分布式系统可以方便地存取数据。TokyoTyrant 的设计目标是高性能和低延迟,适用于缓存服务、日志记录...

    tokyoCabint及tokyoTyrant简介

    标题 "tokyoCabinet及tokyoTyrant简介" 指向了两个与数据库管理相关的开源工具,Tokyo Cabinet和Tokyo Tyrant。这两个工具由日本开发者开发,主要用于小型到中型的数据存储,尤其适合那些对数据读写速度有较高要求的...

    Tokyocabinet-Tokyotyrant文档大合集

    Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符串。这里没有数据类型和数据表的概念。 当做为Hash表数据库使用时,...

    发布一个基于TokyoTyrant的C#客户端开源项目

    通过`TcpClientIOPool.GetInstance`获取链接池实例,并使用`SetServers`方法设置服务器地址和端口。然后,可以通过`InitConnections`、`MinConnections`、`MaxConnections`等属性设置连接池参数。 2. CRUD操作: ...

    tokyocabinet安装配置总结(Ubuntu)

    Tokyotyrant是Tokyocabinet的网络服务器版本,允许远程访问Tokyocabinet数据库。按照类似上述步骤下载、解压、配置、编译和安装Tokyotyrant: ``` # 下载并解压Tokyotyrant源代码 tar xvf tokyotyrant-1.1.54....

    ttserver-lib包

    tokyocabinet-1.4.45.tar.gz tokyotyrant-1.1.41.tar.gz tokyotyrant-0.11.jar ch-tokyocabinet-java-1.24.0.jar

    Memcache完全剖析 最实用的Memcache文档

    兼容程序如TokyoTyrant等数据库系统,也可以与Memcached结合使用,进一步扩展其应用场景。 总之,Memcached通过提供简单高效的缓存机制,能够显著提升数据密集型应用的性能。了解其内部结构和使用方式对于开发者来...

    Memcached分布式缓存

    - **TokyoTyrant案例**:TokyoTyrant是一个开源的高性能key-value存储系统,它可以与memcached兼容,提供更强大的功能。 #### 总结 Memcached作为一款高性能的分布式缓存系统,在现代互联网应用中扮演着至关重要的...

    TTserver1.1.4

    从给出的信息来看,它可能是Tokyo Tyrant的一个特定版本,因为压缩包中的文件名为"tokyotyrant-1.1.41"。Tokyo Tyrant是一个轻量级、高性能的键值存储系统,常用于数据缓存和快速查找应用。 Tokyo Tyrant主要知识点...

    memcached的细节文档

    - **兼容应用程序**:如TokyoTyrant等软件与memcached的兼容使用。 ### 总结 memcached作为一个内存缓存系统,具有简单、高效的特点,特别适合Web应用中缓存数据,减少数据库的访问次数。其分布式特性使得系统更加...

    MemCached 全面剖析 memcached.pdf(中文)

    - **TokyoTyrant 案例**:TokyoTyrant 是一个兼容 MemCached 协议的高性能键值存储系统。 以上内容覆盖了 MemCached 的基本概念、安装使用、内存管理、删除机制、分布式算法以及实际应用场景等方面的知识点,为深入...

    ttserver

    在 "tokyotyrant-1.1.24" 这个压缩包中,我们预期会找到 Tokyo Tyrant 的源代码、文档、示例程序和测试用例。Tokyo Tyrant 提供了丰富的API,使得开发人员可以轻松地在各种编程语言(如C、Python、Ruby等)中与之...

Global site tag (gtag.js) - Google Analytics