数据库类型
下面我们再来看下数据库类型的详细配置。
数据库名的命名方式被Tokyo Cabinet的抽象API指定。
如果数据库名为"*",表示内存hash数据库。
如果数据库名为"+"表示内存tree数据库。
如果数据库名为".tch",则数据库为hash数据库。
如果数据库名的后缀为".tcb",数据库将为B+ tree数据库。
如果数据库名的后缀为".tcf"。则数据库将为fixed-length数据库。
如果数据库名的后缀为".tct",则数据将为一个table数据库(有表的概念)。
数据库的调整参数通过数据库名的延伸来指定,通过"#"分开,每个参数通过一个参数名和值来指定,
用"="隔开。
内存hash数据库支持"bnum", "capnum", 和 "capsiz"
内存tree数据库支持"capnum" 和 "capsiz"
capnum指定记录的最大容量,capsiz指定最大的内存使用量(在内存数据库中),记录通过存储 的顺
序移除。
hash数据库支持"mode", "bnum", "apow", "fpow", "opts", "rcnum", 和 "xmsiz".
`rcnum'指定最大的缓存 记录数。如果它不大于零,那么缓存记录不可用。默认不可用。
xmsiz 指定外部内存的大小。如果不大于0,内存不可用。默认是67108864,即64M。
`bnum' 指定bucket存储桶的数量。如果指定的数目不大于0,将会使用默认的数值131071.推荐数量应
该在所有需要存储的记录总数的0.4-4倍
`apow' 跟一个key关联的记录数,2的N次方表示. 如果不指定,默认2^4=16.
`fpow' specifies the maximum number of elements of the free block pool by power of 2. 默认
2^10=1024.
`opts' 指定选项,位或:`HDBTLARGE' 指定数据库的大小通过使用64位数组桶能够超过2G。
`HDBTDEFLATE' 指定每个记录被Deflate encoding压缩 。
`HDBTBZIP' 指定每个记录被BZIP2 encoding压缩
`HDBTTCBS'指定每个记录被 TCBS encoding压缩 .
B+ tree数据库支持"mode", "lmemb", "nmemb", "bnum", "apow", "fpow", "opts", "lcnum", "ncnum",
和 "xmsiz".
Fixed-length 数据库 支持 "mode", "width", and "limsiz".
Table 数据库支持 "mode", "bnum", "apow", "fpow", "opts", "rcnum", "lcnum", "ncnum", "xmsiz", 和
"idx"
"idx"指定表的索引。
"mode"可以包含 "w" 写, "r" 读, "c" 创建, "t" 截断,"e" 无锁,和"f" 非阻塞锁。默认的的mod为"wc"
。
优化 性能
如果使用hash数据库我们可以指定#bnum=xxx来提高性能。xxx大于或等我我们的记录总数。
如果使用B+ tree数据库我们可以通过指定"#lcnum=xxx#bnum=yyy" 来提高性能.第一个参数指定被
缓存的最大叶子节点数,受内存容量限制,第二个参数指定桶的数量,它应该大于总记录数的1/128.
如果有大量的客户端连接,确保我们的文件描述符够用。系统默认是1024,我们可以用使用“ulimit”来
重新设定
比如下面的单机实例启动脚本(一个正在线上运行的脚本):
#!/bin/sh
ulimit -SHn 51200
ttserver -host 192.168.0.136 -port 11212 -thnum 8 -dmn -pid /data/ttserver/ttserver.pid -log
/data/ttserver/ttserver.log -le -ulog /data/ttserver/ -ulim 128m -sid 1 -rts /data/ttserver/ttserver.rts
/data/ttserver/database.tch#bnum=10000000#xmsiz=434217728#rcnum=20000
使用hash数据库,最大会缓存20000个记录,最大使用内存434217728bytes(414M),bucket存储桶的数
量10000000。
目前的库大小:
-rw-r--r-- 1 root root 28G Mar 8 12:19 bbsdatabase.tch
因为使用了64位操作系统,所以文件大小不受2G的限制。
我们再看下读取数据的速度:
当前获取memcache Threads_cdb_threads_tid3565732_displayorder_0 使用时间
0.00054812431335449
以上是程序打印 出来的通过memcache协议读取key为memcache
Threads_cdb_threads_tid3565732_displayorder_0的数据所花的时间0.00054812431335449(s),可以看
到速度还是非常快的。
启动实例
个人推荐通过修改ttservctl来实现启动。下面我们举几个简单的启动例子。
单机启动例子,下面是ttservctl文件的部分:
#! /bin/sh
#----------------------------------------------------------------
# Startup script for the server of Tokyo Tyrant
#----------------------------------------------------------------
# configuration variables
prog="ttservctl"
cmd="ttserver"
basedir="/var/ttserver" #数据库存放的路径,比如改为"/data/mydata"
port="1978" #启动的端口
pidfile="$basedir/pid"
logfile="$basedir/log"
ulogdir="$basedir/ulog"
ulimsiz="256m"
sid=1
dbname="$basedir/casket.tch#bnum=1000000" #上面讲的数据库类型配置
maxcon="65536"
retval=0
双机互为主辅模式,比如两台机器的Ip分别为192.168.1.176和192.168.1.1.177,以下为ttservctl文件的
一部分。
176的配置:
#! /bin/sh
#----------------------------------------------------------------
# Startup script for the server of Tokyo Tyrant
#----------------------------------------------------------------
# configuration variables
prog="ttservctl"
cmd="ttserver"
basedir="/data/data/data1"
port="11211"
pidfile="$basedir/pid"
logfile="$basedir/log"
ulogdir="$basedir/"
mhost="192.168.1.177" #主ip即另外机器的ip
ulimsiz="256m"
sid=6#注意要每台机器不一样
dbname="$basedir/casket.tch#bnum=100000000#xmsiz=104857600#rcnum=1000000"
rts="$basedir/ttserver.rts" #在ttservctl基础上增加
maxcon="65536"
retval=0
# locale clear
LANG=C
LC_ALL=C
export LANG LC_ALL
# start the server
start(){
printf 'Starting the server of Tokyo Tyrant\n'
ulimit -n "$maxcon"
mkdir -p "$basedir"
if [ -f "$pidfile" ] ; then
pid=`cat "$pidfile"`
printf 'Existing process: %d\n' "$pid"
retval=1
else
$cmd \
-port "$port" \
-dmn \
-pid "$pidfile" \
-log "$logfile" \
-ulog "$ulogdir" \
-ulim "$ulimsiz" \
-sid "$sid" \
-mhost "$mhost" \#在ttservctl基础上增加
-mport "$port" \#在ttservctl基础上增加
-rts "$rts" \#在ttservctl基础上增加
"$dbname"
if [ "$?" -eq 0 ] ; then
printf 'Done\n'
else
printf 'The server could not started\n'
retval=1
fi
fi
}
177的配置:
#! /bin/sh
#----------------------------------------------------------------
# Startup script for the server of Tokyo Tyrant
#----------------------------------------------------------------
# configuration variables
prog="ttservctl"
cmd="ttserver"
basedir="/data/data/data1"
port="11211"
pidfile="$basedir/pid"
logfile="$basedir/log"
ulogdir="$basedir/"
mhost="192.168.1.176" #主ip即另外机器的ip
ulimsiz="256m"
sid=7#注意要每台机器不一样
dbname="$basedir/casket.tch#bnum=100000000#xmsiz=104857600#rcnum=1000000"
rts="$basedir/ttserver.rts" #在ttservctl基础上增加
maxcon="65536"
retval=0
# locale clear
LANG=C
LC_ALL=C
export LANG LC_ALL
# start the server
start(){
printf 'Starting the server of Tokyo Tyrant\n'
ulimit -n "$maxcon"
mkdir -p "$basedir"
if [ -f "$pidfile" ] ; then
pid=`cat "$pidfile"`
printf 'Existing process: %d\n' "$pid"
retval=1
else
$cmd \
-port "$port" \
-dmn \
-pid "$pidfile" \
-log "$logfile" \
-ulog "$ulogdir" \
-ulim "$ulimsiz" \
-sid "$sid" \
-mhost "$mhost" \#在ttservctl基础上增加
-mport "$port" \#在ttservctl基础上增加
-rts "$rts" \#在ttservctl基础上增加
"$dbname"
if [ "$?" -eq 0 ] ; then
printf 'Done\n'
else
printf 'The server could not started\n'
retval=1
fi
fi
}
相关推荐
C#版Tokyo Tyrant客户端 来源:cnblogs
tokyo cabinet tyrant研究资料
NULL 博文链接:https://leadtoit.iteye.com/blog/1076241
一个小型快速数据库的安装使用及原理介绍。
#资源达人分享计划#
宫崎电阻描述: MiyazakiResistance是一个类似于ActiveRecord的库,可以使用Tokyo Tyrant。 宫崎县抵抗支持师傅/奴隶。 如果从服务器关闭,它将自动分离。 宫崎骏电阻支持双主控(主动/待机)。 如果活动服务器关闭...
暴君是一款图形化的类Roguelike幻想冒险游戏。 它具有错综复杂的随机生成的景观,城镇和地牢。 它是用Java编写的,具有高度可扩展的游戏引擎。
《暴君2》是一款基于mikera 的roguelike,游戏玩法将进化为Angband,游戏世界将进化为Arena:Elder Scrolls。 关键词:游戏、Java、OOP、随机世界生成、AI、RPG、角色扮演游戏。
1.1.标签 2.1.选择器 2.2.边距 3.1.sql拼写方法问题 3.1.在同一个页面同时使用两个ng-app问题
MemAdmin主要功能: 服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新 ...兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外) 支持服务器连接池,多服务器管理切换方便简洁
主要功能: 服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新 服务器性能监控:GET、... 兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外) 支持服务器连接池,多服务器管理切换方便简洁
如今,越来越多的 Web 应用程序开始...而日本的 mixi(http://mixi.jp)则在这方面走在了前面,不仅大规模使用 memcached 作为缓存来加速 Web 应用,而且自行开发了 Tokyo Cabinit、Tokyo Tyrant 等一系列相关的软件。
web-tyrant改造项目xNo。1
暴君释放优化器(SIM)
firefox-tu-cardlog 将 Tyrant Unleashed 卡的购买记录到中央数据库的 Firefox 插件
4 Tokyo cabinet / Tyrant 4 CT.M 4 Scalien 4 Berkley DB 4 MemcacheDB 4 Mnesia 4 LightCloud 4 HamsterDB 4 Flare 4 最终一致性Key Value存储 4 Amazon之Dynamo 4 功能特色 4 架构特色 4 BeansDB 4 简介 4 更新 4...
Kyoto Tycoon(简称KT)是Tokyo Tyrant 的作者Mikio Hirabayashi 的系列作品之一,KT 是一个数据库网络层服务,它提供一个插件机制,可以挂载几乎所有的数据库存储设备。 这里提供一个简单的应用实例: <?php ...
该项目使用 node.js 和提供服务器端调度功能,以将可用的场地空间分配给具有任意数量预定义首选项的运动队集合。 包含一个简单的 Web 应用程序用于显示结果。 要求 除了 node.js 安装之外,该程序还要求 lp_solve 可...
依存关系该项目具有一个本地依赖项:Tokyo Tyrant。 我们将其用作我们的数据存储。 您必须为要在其上运行服务器的任何系统本地构建它。 有关详细信息,请参见 。 一旦有了这些,所有Rubygem依赖项都将由Ruby Bundler...