• ttServer缓存的简单使用


    ttserver是一款 DBM 数据库,该数据库读写非常快,哈希模式写入100万条数据只需0.643秒,读取100万条数据只需0.773秒,是 Berkeley DB 等 DBM 的几倍。利用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统。key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。

    [java] view plain copy
    1. import java.util.Properties;  
    2.   
    3. import org.apache.commons.logging.Log;  
    4. import org.apache.commons.logging.LogFactory;  
    5. import org.springframework.core.io.ClassPathResource;  
    6.   
    7. import tokyotyrant.MRDB;  
    8. import tokyotyrant.networking.NodeAddress;  
    9. import tokyotyrant.transcoder.StringTranscoder;  
    10. /** 
    11.  * 和ttServer服务端连接的工具类 
    12.  * 使用jar包:tokyotyrant-0.11.jar 
    13.  * @author 7q 
    14.  */  
    15. public class TokyoTyrantDB {  
    16.   
    17.     private static TokyoTyrantDB db = new TokyoTyrantDB();  
    18.     //默认值  
    19.     private String IP = "127.0.0.1";  
    20.     private String PORT = "8888";  
    21.     MRDB rdb = null;  
    22.     private Log logger = LogFactory.getLog(TokyoTyrantDB.class);  
    23.       
    24.     /** 
    25.      * 创建对象的时候,加载配置文件,创建和ttServer服务器的连接 
    26.      */  
    27.     private TokyoTyrantDB() {  
    28.         try {  
    29.             /* 
    30.              * 读取配置文件(配置文件放在src下,或者放在src下的META-INF文件夹下,没有这个文件夹可以创建一个) 
    31.              * ip=192.168.0.100 
    32.              * port=99 
    33.              */  
    34.             ClassPathResource resource = new ClassPathResource("tt.properties");  
    35.             Properties properties = new Properties();  
    36.             properties.load(resource.getInputStream());  
    37.             if (properties.getProperty("ip") != null) {  
    38.                 IP = properties.getProperty("ip");  
    39.             }  
    40.             //System.out.println(IP);  
    41.             if (properties.getProperty("port") != null) {  
    42.                 PORT = properties.getProperty("port");  
    43.             }  
    44.             //System.out.println(PORT);  
    45.             rdb = new MRDB();  
    46.             //创建连接  
    47.             rdb.open(NodeAddress.addresses("tcp://" + IP + ":" + PORT));  
    48.               
    49.         } catch (Exception e) {  
    50.             logger.error(e.getMessage(), e);  
    51.         }  
    52.     }  
    53.   
    54.     public static TokyoTyrantDB getInstance() {  
    55.         return db;  
    56.     }  
    57.     /** 
    58.      * 保存数据到ttServer 
    59.      * @param key 
    60.      * @param value 
    61.      * @return  保存成功,返回true,保存失败,返回false 
    62.      */  
    63.     public boolean save(String key, String value) {  
    64.         try {  
    65.             if (rdb.put(key, value).get()) {  
    66.                 return true;  
    67.             } else {  
    68.                 return false;  
    69.             }  
    70.         } catch (Exception e) {  
    71.             logger.error(e.getMessage(), e);  
    72.             //如果保存数据出异常,重试再连接一次  
    73.             try {  
    74.                 if (rdb == null) {  
    75.                     rdb = new MRDB();  
    76.                     rdb.open(NodeAddress.addresses("tcp://" + IP + ":" + PORT));  
    77.                 }  
    78.             } catch (Exception ex) {  
    79.                 logger.error(ex.getMessage(), ex);  
    80.             }  
    81.             return false;  
    82.         }  
    83.     }  
    84.       
    85.     /** 
    86.      * 通过key获取value 
    87.      * @param key 
    88.      * @return  通过key获取value 
    89.      */  
    90.     public String getValueByKey(String key) {  
    91.         try {  
    92.             Object object = rdb.get(key, new StringTranscoder()).get();  
    93.             if (object != null) {  
    94.                 return object.toString();  
    95.             }  
    96.             return null;  
    97.         } catch (Exception e) {  
    98.             logger.error(e.getMessage(), e);  
    99.             try {  
    100.                 if (rdb == null) {  
    101.                     rdb = new MRDB();  
    102.                     rdb.open(NodeAddress.addresses("tcp://" + IP + ":" + PORT));  
    103.                 }  
    104.                   
    105.             } catch (Exception ex) {  
    106.                 logger.error(ex.getMessage(), ex);  
    107.             }  
    108.             return null;  
    109.         }  
    110.     }  
    111. }  
    使用方式:
    [java] view plain copy
    1. public static void main(String[] args) {  
    2.     TokyoTyrantDB.getInstance().save(key, value);  
    3.     TokyoTyrantDB.getInstance().getValueByKey(key);  
    4. }  


  • 相关阅读:
    CSS3学习手记(7) CSS3装换 3D转换
    CSS3学习手记(6) CSS3装换 2D转换
    CSS3学习手记(5) 渐变
    CSS3学习手记(4) 伪元素
    CSS3学习手记(3) CSS权重
    CSS3学习手记(2) 伪类选择器
    CSS3学习手记(1) 选择器
    HTML5学习手记(二)
    HTML5学习手记(一)
    浏览器远程调试VS
  • 原文地址:https://www.cnblogs.com/edgedance/p/6979648.html
Copyright © 2020-2023  润新知