NoSQL
泛指非关系型数据库:
high performance:对数据库高并发读写的需求
huge Storage:对海量数据的高效率存储和访问的需求
high Scalability &&high availability:对数据库的高可扩展性和高可用性的需求
Redis(一款NoSQL的数据库产品)
Redis是直接从内存中读数据,所以当数据量很大的时候,读写速度要比mysql快的多
Redis: 软件–C语言–存储数据
特点:key-value ,内存存储
NOSQL的数据库分类:
- 键值(Key-Value)存储数据库;Map
- 列存储数据库;
- 文档型数据库;
- 图形(Graph)数据库;
Redis是用C语言开发的一个开源的高性能键值对(Key-Value)数据库。
Redis支持的数据类型有:
1. 字符串类型 string(常用:json/xml) - 散列类型 hash(key–value)map
- 列表类型 list linkedlist 用户列表
- 集合类型 set
- 有序集合类型 sortedset
//读写redis的工具类
public class JedisUtil {
private static JedisPool jedisPool;
private static int maxtotal;
private static int maxwaitmillis;
private static String host;
private static int port;
//加载配置文件
static{
ResourceBundle jedisPorperties = ResourceBundle.getBundle("jedis");
maxtotal = Integer.valueOf(jedisPorperties.getString("maxtotal"));
maxwaitmillis = Integer.valueOf(jedisPorperties.getString("maxwaitmillis"));
port = Integer.valueOf(jedisPorperties.getString("port"));
host = jedisPorperties.getString("host");
}
//初始化连接池
static {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxtotal);
config.setMaxIdle(maxwaitmillis);
jedisPool = new JedisPool(config, host, port);
}
/*
获取jedis客户端操作对象
*/
public static Jedis getJedis(){
return jedisPool.getResource();
}
//释放资源
public static void close(Jedis jedis){
if(null !=jedis){
jedis.close();
}
}
}
public class PoemService {
//查询数据中所有的poem集合
public String queryAll () throws JsonProcessingException {
//先从redis中查。如果查到为空,那么再从数据库中查
//计算一下redis查的时间
long rStar = System.currentTimeMillis();
Jedis jedis = JedisUtil.getJedis();
String poemsStr = jedis.get("poems");
long rend = System.currentTimeMillis();
System.out.println("redis查找用时"+(rend-rStar));
if (null== poemsStr){
long SQLStar = System.currentTimeMillis();
PoemDao poemDao = new PoemDao();
List<Poem> poems = poemDao.queryAll();
long SQLend = System.currentTimeMillis();
System.out.println("mysql查找用时"+(SQLend-SQLStar));
//将poems转换为json格式
poemsStr = new ObjectMapper().writeValueAsString(poems);
//将poemsStr存到reids中
jedis.set("poems",poemsStr);
}
//返回poemsStr json格式
return poemsStr;
}
}