ttServer缓存的简单使用
ttserver是一款 DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 Berkeley DB 等 DBM 的几倍。利用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统。key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。
- import java.util.Properties;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.core.io.ClassPathResource;
- import tokyotyrant.MRDB;
- import tokyotyrant.networking.NodeAddress;
- import tokyotyrant.transcoder.StringTranscoder;
- /**
- * 和ttServer服务端连接的工具类
- * 使用jar包:tokyotyrant-0.11.jar
- * @author 7q
- */
- public class TokyoTyrantDB {
- private static TokyoTyrantDB db = new TokyoTyrantDB();
- //默认值
- private String IP = "127.0.0.1";
- private String PORT = "8888";
- MRDB rdb = null;
- private Log logger = LogFactory.getLog(TokyoTyrantDB.class);
- /**
- * 创建对象的时候,加载配置文件,创建和ttServer服务器的连接
- */
- private TokyoTyrantDB() {
- try {
- /*
- * 读取配置文件(配置文件放在src下,或者放在src下的META-INF文件夹下,没有这个文件夹可以创建一个)
- * ip=192.168.0.100
- * port=99
- */
- ClassPathResource resource = new ClassPathResource("tt.properties");
- Properties properties = new Properties();
- properties.load(resource.getInputStream());
- if (properties.getProperty("ip") != null) {
- IP = properties.getProperty("ip");
- }
- //System.out.println(IP);
- if (properties.getProperty("port") != null) {
- PORT = properties.getProperty("port");
- }
- //System.out.println(PORT);
- rdb = new MRDB();
- //创建连接
- rdb.open(NodeAddress.addresses("tcp://" + IP + ":" + PORT));
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- }
- }
- public static TokyoTyrantDB getInstance() {
- return db;
- }
- /**
- * 保存数据到ttServer
- * @param key
- * @param value
- * @return 保存成功,返回true,保存失败,返回false
- */
- public boolean save(String key, String value) {
- try {
- if (rdb.put(key, value).get()) {
- return true;
- } else {
- return false;
- }
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- //如果保存数据出异常,重试再连接一次
- try {
- if (rdb == null) {
- rdb = new MRDB();
- rdb.open(NodeAddress.addresses("tcp://" + IP + ":" + PORT));
- }
- } catch (Exception ex) {
- logger.error(ex.getMessage(), ex);
- }
- return false;
- }
- }
- /**
- * 通过key获取value
- * @param key
- * @return 通过key获取value
- */
- public String getValueByKey(String key) {
- try {
- Object object = rdb.get(key, new StringTranscoder()).get();
- if (object != null) {
- return object.toString();
- }
- return null;
- } catch (Exception e) {
- logger.error(e.getMessage(), e);
- try {
- if (rdb == null) {
- rdb = new MRDB();
- rdb.open(NodeAddress.addresses("tcp://" + IP + ":" + PORT));
- }
- } catch (Exception ex) {
- logger.error(ex.getMessage(), ex);
- }
- return null;
- }
- }
- }
使用方式:
- public static void main(String[] args) {
- TokyoTyrantDB.getInstance().save(key, value);
- TokyoTyrantDB.getInstance().getValueByKey(key);
- }
ttServer缓存的简单使用的更多相关文章
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- 使用Spring缓存的简单Demo
使用Spring缓存的简单Demo 1. 首先创建Maven工程,在Pom中配置 <dependency> <groupId>org.springframework</g ...
- 关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- java项目中ehcache缓存最简单用法
java项目中ehcache缓存最简单用法: 1.下载ehcache-core-2.4.3.jar复制到项目的lib目录下 2.新建ehcache.xml文件,放置在项目src目录下的resour ...
- android APP是否需要缓存?+简单架构
问题的由来 昨天,当我写完我的第一篇博客之后,我便百无聊赖的玩起了手机!当我打开Google自带的一些app的时候,发现他们直接叫我连接网络,并没有缓存上次从网络获取的数据.这就让我感到很奇怪!于是我 ...
- Mybatis缓存(1)--------系统缓存及简单配置介绍
前言 Mybatis的缓存主要有两种: 系统缓存,也就是我们一级缓存与二级缓存: 自定义的缓存,比如Redis.Enhance等,需要额外的单独配置与实现,具体日后主要学习介绍. 在这里主要记录系统缓 ...
- Android 多用户多缓存的简单处理方案
需求:1.在缓存中记录用户登录信息.例如:用户名,密码 2.记录用户操作数据.例如:是否记住用户名密码.设置7天内自动登录等 简单设计:1)使用sqlite设计一张用户数据表,有用户名.密码.操作数据 ...
- C#中缓存的简单方法及使用Sql设置缓存依赖项
概述 使用Cache高速缓存可以提高数据的读取速度,减少服务器与客户端之间的数据交互.因为Cache一经创建就会占用服务器上的资源,所以Cache并不是越多越好,一般用于数据较固定,使用较频繁的地方. ...
- 【Java/Android性能优 6】Android 图片SD卡缓存 使用简单 支持预取 支持多种缓存算法 支持不同网络类型 支持序列化
本文转自:http://www.trinea.cn/android/android-imagesdcardcache/ 本文主要介绍一个支持图片自动预取.支持多种缓存算法.支持数据保存和恢复的图片Sd ...
随机推荐
- super和final关键字
一.super关键字 super关键字的使用 JAVA类中使用super来引用父类的属性或者方法,用this来引用当前对象,主要用法: 1.子类的构造函数默认第一行会默认调用父类的无参数构造函数 2. ...
- 【志银】php5.6-Apache2.4-mysql5.6环境配置(win7_64位)
----------------------------------------------------- ★软件工具:(下载时注意下载相应版本,不同版本安装细节可能会有差异!!) 1>http ...
- 数据结构与算法之顺序表C语言实现
顺序表等相关概念请自行查阅资料,这里主要是实现. 注: 1.顺序表C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简单函数,可自行添加功能: 4.可用C+ ...
- Python课程设计 搭建博客
安装包Github地址 Python综合设计 233博客 注意还有个email文件是需要填入自己信息的,比如最高权限账号和要发送邮件的账号密码 请安装Python2.7环境,本服务器所用环境为 设置环 ...
- 使用百度Echarts制作力导向图
最近项目需求制作一个力导向图来展示企业的画像等关系信息,故想到了百度Echarts的关系图,在这使用Echarts3.0版本来实现.先上效果图,再看代吗 哎,本来想整个工程扔出来,发现好像没地方上传附 ...
- [poj] 1269 [zoj] 1280 Interesting Lines || 求两直线交点
POJ原题 ZOJ原题 多组数据.每次给出四个点,前两个点确定一条直线,后两个点确定一条直线,若平行则输出"NONE",重合输出"LINE",相交输出" ...
- 用IE滤镜实现的一些特效
CSS3是当下非常火的一个话题,很多浏览器都已经开始支持这一特性,然后IE这个拥有庞大用户群体的平台,却无法提供这样的支持,即便是IE9发布,也无法改变这一事实,然而,幸运的是,IE并非在这方面毫无作 ...
- Python之Excel编程
excel编程:excel中是unicode编码方式 需要使用xrld,xlwt和openpyxl这三个模块,需先通过pip install下载 xlrd 读取模块:xls,xlsx ...
- 洛谷 P1343 地震逃生
P1343地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带,每 ...
- SpringBoot程序启动时执行初始化代码
因项目集成了Redis缓存部分数据,需要在程序启动时将数据加载到Redis中,即初始化数据到Redis. 在SpringBoot项目下,即在容器初始化完毕后执行我们自己的初始化代码. 第一步:创建实现 ...