赞
踩
关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,
让NoSQL数据库对关系型数据库的不足进行弥补。
一般会将数据存储在关系型数据库中,在nosql数据库中备份存储关系型数据库的数据
相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
数据模型: 一系列键值对
优势: 快速查询
劣势: 存储的数据缺少结构化
## 列存储数据库
相关产品:Cassandra, HBase, Riak
典型应用:分布式的文件系统
数据模型:以列簇式存储,将同一列数据存在一起
优势:查找速度快,可扩展性强,更容易进行分布式扩展
劣势:功能相对局限
相关产品:CouchDB、MongoDB
典型应用:Web应用(与Key-Value类似,Value是结构化的)
数据模型: 一系列键值对
优势:数据结构要求不严格
劣势: 查询性能不高,而且缺乏统一的查询语法
## 图形(Graph)数据库
相关数据库:Neo4J、InfoGrid、Infinite Graph
典型应用:社交网络
数据模型:图结构
优势:利用图结构相关算法。
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。
## 概念
// 获取连接
Jedis jedis = new Jedis("localhost",6379);
// 操作
jedis.set("username","zhangsan");
// 关闭连接
jedis.close();
@Test/* 操作字符串String */ public void test02() { // 获取连接 Jedis jedis = new Jedis(); //空参构造,默认("localhost",6379) // 存储 jedis.set("cat","001"); // 获取 String cat = jedis.get("cat"); System.out.println(cat); // 存储有时限的数据 jedis.setex("dog",10,"002"); // 时间单位:秒 // 关闭连接 jedis.close(); }
@Test /* 操作Hash */ public void test03() { // 获取连接 Jedis jedis = new Jedis(); // 存储 jedis.hset("map","cat","111"); jedis.hset("map","dog","222"); jedis.hset("map","rat","333"); // 获取 String cat = jedis.hget("map", "cat"); System.out.println(cat); // 获取hash中的map中的所有数据 Map<String, String> map = jedis.hgetAll("map"); // 输出 Set<String> keySet = map.keySet(); for (String s : keySet) { String value = map.get(s); System.out.println(s+":"+value); } // 关闭连接 jedis.close(); }
@Test /* 操作List(允许重复) */ public void test04() { // 获取连接 Jedis jedis = new Jedis(); // 存储 jedis.lpush("list","A","B","C","D"); jedis.rpush("list","A","B","C","D"); // 打印 List<String> list = jedis.lrange("list", 0, -1); System.out.println(list); // 弹出 String element1 = jedis.lpop("list"); String element2 = jedis.lpop("list"); // 打印 System.out.println(element1); System.out.println(element2); List<String> list2 = jedis.lrange("list", 0, -1); System.out.println(list2); // 关闭连接 jedis.close(); }
@Test /* 操作Set(不允许重复) */
public void test05() {
// 获取连接
Jedis jedis = new Jedis();
// 存储
jedis.sadd("set","A","B","C","D");
// 获取
Set<String> set = jedis.smembers("set");
// 打印
System.out.println(set);
// 关闭连接
jedis.close();
}
@Test /* 操作SortedSet(不允许重复,有序) */ public void test06() { // 获取连接 Jedis jedis = new Jedis(); // 存储 jedis.zadd("sortedSet",1,"cat"); jedis.zadd("sortedSet",2,"dog"); jedis.zadd("sortedSet",3,"rat"); // 获取 Set<String> sortedSet = jedis.zrange("sortedSet", 0, -1); // 打印 System.out.println(sortedSet); // 关闭连接 jedis.close(); }
// 创建连接池配置对象
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 设置配置
jedisPoolConfig.setMaxTotal(50);
jedisPoolConfig.setMaxIdle(10);
// 创建连接池对象,并传入连接池配置对象
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
// 获取连接
Jedis resource = jedisPool.getResource();
// 使用
resource.set("name", "cat");
String s = resource.get("name");
System.out.println(s);
// 关闭,归还到连接池中
resource.close();
设置 JedisPoolUtil工具类
public class JedisPoolUtil { // 连接池对象 private static JedisPool jedisPool; static { // 读取配置文件 Properties properties = new Properties(); // 创建properties对象 InputStream resourceAsStream = JedisPoolUtil.class.getClassLoader().getResourceAsStream("jedis.properties"); try { // 加载文佳 properties.load(resourceAsStream); } catch (IOException e) { e.printStackTrace(); } // 创建连接池配置文件对象 JedisPoolConfig config = new JedisPoolConfig(); // 设置 config.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal"))); config.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle"))); // 初始化连接池对象 jedisPool = new JedisPool(config,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port"))); } public static Jedis getJedis(){ return jedisPool.getResource(); } }
设置之后的操作,简化了很多
public class JedisPoolUtil { // 连接池对象 private static JedisPool jedisPool; static { // 读取配置文件 Properties properties = new Properties(); // 创建properties对象 InputStream resourceAsStream = JedisPoolUtil.class.getClassLoader().getResourceAsStream("jedis.properties"); try { // 加载文佳 properties.load(resourceAsStream); } catch (IOException e) { e.printStackTrace(); } // 创建连接池配置文件对象 JedisPoolConfig config = new JedisPoolConfig(); // 设置 config.setMaxTotal(Integer.parseInt(properties.getProperty("maxTotal"))); config.setMaxIdle(Integer.parseInt(properties.getProperty("maxIdle"))); // 初始化连接池对象 jedisPool = new JedisPool(config,properties.getProperty("host"),Integer.parseInt(properties.getProperty("port"))); } public static Jedis getJedis(){ return jedisPool.getResource(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。