复习整理7:Redis数据库的基本应用
2018-07-19 19:13
375 查看
一:了解NoSQL
1:介绍:Nosql的全称是Not Only Sql,这个概念早起就有人提出,在09年的时候比较火。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,sqlserver一样,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心。而就在这个时候,Nosql得到的告诉的发展。
2:NOSQl与关系型数据库的区别:
(1)存储方式:关系型数据库是表格式的,因此存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是大块的组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。Redis就是以键值对方式存储。
(2)存储结构:关系型数据库预定义结构带来了可靠性和稳定性,但是修改这些数据比较困难。而Nosql数据库基于动态结构,使用与非结构化数据。因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。
(3)性能:关系型数据库维护了数据稳定性和一致性,而NoSQL存储面对海量数据的时候效率相比关系型数据库非常高。
(4)略
3:NoSql的四大分类
1.键值(Key-Value)存储,如Redis(优势:快速查询 劣势:存储数据缺少结构化)
2.列存储,如HBase(优势:快速查询,扩展性强 劣势:功能相对局限)
3.文档数据库,如mongoDB(优势:数据结构要求不严格 劣势:查询性能不高,确实统一查询的语法)
4.图形数据库,如InfoGrid(优势:利用图结构相关算法 劣势:需要对整个图做计算才能得到结果,不容易做分布式的集群方案)
二:Redis学习:
1:简介:NoSQL(not only sql)数据库的一种,主要以键值(Key-Value)的形式来存储数据,支持的键值数据类型有
1 字符串类型String、
2 列表类型list、
3 有序集合类型zset、
4 散列类型hash、
5 集合类型set,
应用场景有缓存、排行榜、任务队列、网站访问统计、数据过期处理、分布式集群架构中的session分离。
2:安装:
2.1Linux下,解压安装,后台启动·······操作很简单,都是和其他软件安装基本一致。
2.2其实我们大部分的开发还是在window下的,在window下开发一定要用Redis来模拟测试,在window下安装更加简单
2.2.1首先:官网下载window的安装包 https://github.com/MicrosoftArchive/redis/releases
2.2.2 将压缩包解压到你想要安装的文件夹【D:\Redis】
按住Shift+右键,在此窗口打开命令行输入指令【redis-server redis.windows.conf】启动服务,显示如图
然后再开一个命令行窗口,还是在该目录下Shift+右键,然后输入如下指令【redis-cli.exe -h 127.0.0.1 -p 6379】【注意:在此过程中服务的命令行窗口不能关】
设置键值对 【set myKey abc】
取出键值对 【get myKey】如图,成功
·
三:使用Jedis操作Redis
1 简介:Jedis是Redis官方首选的JAVA客户端开发包
Jedis源码工程地址:
https://github.com/xetorthio/jedis 2:使用:想要使用Jedis必须加载jar包或者添加maven依赖。在pom.xml中添加如下语句
首先将配置参数抽取出来写成redis.properties文件。例如:
注意::::可能会连接超时失败,其实是防火墙的问题,到时候打开防火墙口,然后重启防火墙就OK了。
四:Redis的持久化方式
为了能够高速查询,Redis将数据几乎都在内存中,但缺点显而易见,如何将Redis的数据持久化下来呢!官方提供了两种方法:
1:RDB:在指定时间间隔内生成数据集的时间点快照,但要是在指定时间间隔没到就断电了,那就JJ了啊!
2:AOF:以日志的方式记录下每一步写操作指令,并在服务器启动时,通过执行这些命令来还原数据库。但是体积比较大,速度慢。
3:一般将两种联合起来使用,其实一般在redis.conf中都已配置好,但是你想改也没人拦得住你啊!
五:其他操作
1:Redis其实共可有16个数据库,由0到15编号,默认选择0号,用seclect关键字选择
2:数据库肯定少不了事务操作
开启事务:multi
回滚:discard
提交:exec
1:介绍:Nosql的全称是Not Only Sql,这个概念早起就有人提出,在09年的时候比较火。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,sqlserver一样,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心。而就在这个时候,Nosql得到的告诉的发展。
2:NOSQl与关系型数据库的区别:
(1)存储方式:关系型数据库是表格式的,因此存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是大块的组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。Redis就是以键值对方式存储。
(2)存储结构:关系型数据库预定义结构带来了可靠性和稳定性,但是修改这些数据比较困难。而Nosql数据库基于动态结构,使用与非结构化数据。因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。
(3)性能:关系型数据库维护了数据稳定性和一致性,而NoSQL存储面对海量数据的时候效率相比关系型数据库非常高。
(4)略
3:NoSql的四大分类
1.键值(Key-Value)存储,如Redis(优势:快速查询 劣势:存储数据缺少结构化)
2.列存储,如HBase(优势:快速查询,扩展性强 劣势:功能相对局限)
3.文档数据库,如mongoDB(优势:数据结构要求不严格 劣势:查询性能不高,确实统一查询的语法)
4.图形数据库,如InfoGrid(优势:利用图结构相关算法 劣势:需要对整个图做计算才能得到结果,不容易做分布式的集群方案)
二:Redis学习:
1:简介:NoSQL(not only sql)数据库的一种,主要以键值(Key-Value)的形式来存储数据,支持的键值数据类型有
1 字符串类型String、
2 列表类型list、
3 有序集合类型zset、
4 散列类型hash、
5 集合类型set,
应用场景有缓存、排行榜、任务队列、网站访问统计、数据过期处理、分布式集群架构中的session分离。
2:安装:
2.1Linux下,解压安装,后台启动·······操作很简单,都是和其他软件安装基本一致。
2.2其实我们大部分的开发还是在window下的,在window下开发一定要用Redis来模拟测试,在window下安装更加简单
2.2.1首先:官网下载window的安装包 https://github.com/MicrosoftArchive/redis/releases
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/30/b9665b6f96616220b1472677e1119950.png)
2.2.2 将压缩包解压到你想要安装的文件夹【D:\Redis】
按住Shift+右键,在此窗口打开命令行输入指令【redis-server redis.windows.conf】启动服务,显示如图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/30/866c05bfc7d60da1af4bb26957b9691f.png)
然后再开一个命令行窗口,还是在该目录下Shift+右键,然后输入如下指令【redis-cli.exe -h 127.0.0.1 -p 6379】【注意:在此过程中服务的命令行窗口不能关】
设置键值对 【set myKey abc】
取出键值对 【get myKey】如图,成功
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/30/27ef5793d3a7d114a6639716cf726c20.png)
·
三:使用Jedis操作Redis
1 简介:Jedis是Redis官方首选的JAVA客户端开发包
Jedis源码工程地址:
https://github.com/xetorthio/jedis 2:使用:想要使用Jedis必须加载jar包或者添加maven依赖。在pom.xml中添加如下语句
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> <type>jar</type> <scope>compile</scope> </dependency>Jedis当然也支持连接池,连接池的好处我就不再缀述,我就说说怎么用:
首先将配置参数抽取出来写成redis.properties文件。例如:
#*****************jedis连接参数设置********************* #redis服务器ip redis.ip=xxx.xxx.xxx.xxx #redis服务器端口号 redis.port=6379 #redis访问密码 redis.passWord=123456 #与服务器建立连接的超时时间 redis.timeout=3000 #************************jedis池参数设置******************* #jedis的最大活跃连接数 jedis.pool.maxActive=100 #jedis最大空闲连接数 jedis.pool.maxIdle=50 #jedis池没有连接对象返回时,等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。 #如果超过等待时间,则直接抛出JedisConnectionException jedis.pool.maxWait=1500 #从池中获取连接的时候,是否进行有效检查 jedis.pool.testOnBorrow=true #归还连接的时候,是否进行有效检查 jedis.pool.testOnReturn=true书写Redis连接池工具类RedisPoolUtil,网上有其他版本的方式,其实实现的本质都是一样的
import java.util.Properties; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * Redis连接池工具类 */ public class RedisPoolUtil { private static JedisPool jedisPool = null; private static String redisConfigFile = "redis.properties"; //把redis连接对象放到本地线程中 private static ThreadLocal<Jedis> local=new ThreadLocal<Jedis>(); //不允许通过new创建该类的实例 private RedisPoolUtil() { } /** * 初始化Redis连接池 */ public static void initialPool() { try { Properties props = new Properties(); //加载连接池配置文件 props.load(RedisPoolUtil.class.getClassLoader().getResourceAsStream(redisConfigFile)); // 创建jedis池配置实例 JedisPoolConfig config = new JedisPoolConfig(); // 设置池配置项值 config.setMaxTotal(Integer.valueOf(props.getProperty("jedis.pool.maxActive"))); config.setMaxIdle(Integer.valueOf(props.getProperty("jedis.pool.maxIdle"))); config.setMaxWaitMillis(Long.valueOf(props.getProperty("jedis.pool.maxWait"))); config.setTestOnBorrow(Boolean.valueOf(props.getProperty("jedis.pool.testOnBorrow"))); config.setTestOnReturn(Boolean.valueOf(props.getProperty("jedis.pool.testOnReturn"))); // 根据配置实例化jedis池 jedisPool = new JedisPool(config, props.getProperty("redis.ip"), Integer.valueOf(props.getProperty("redis.port")), Integer.valueOf(props.getProperty("redis.timeout")), props.getProperty("redis.passWord")); System.out.println("线程池被成功初始化"); } catch (Exception e) { e.printStackTrace(); } } /** * 获得连接 * @return Jedis */ public static Jedis getConn() { //Redis对象 Jedis jedis =local.get(); if(jedis==null){ if (jedisPool == null) { initialPool(); } jedis = jedisPool.getResource(); local.set(jedis); } return jedis; } //归还连接 public static void closeConn(){ //从本地线程中获取 Jedis jedis =local.get(); if(jedis!=null){ jedis.close(); } local.set(null); } //关闭池 public static void closePool(){ if(jedisPool!=null){ jedisPool.close(); } } }最后Test方法测试使用上述方法即可。
注意::::可能会连接超时失败,其实是防火墙的问题,到时候打开防火墙口,然后重启防火墙就OK了。
四:Redis的持久化方式
为了能够高速查询,Redis将数据几乎都在内存中,但缺点显而易见,如何将Redis的数据持久化下来呢!官方提供了两种方法:
1:RDB:在指定时间间隔内生成数据集的时间点快照,但要是在指定时间间隔没到就断电了,那就JJ了啊!
2:AOF:以日志的方式记录下每一步写操作指令,并在服务器启动时,通过执行这些命令来还原数据库。但是体积比较大,速度慢。
3:一般将两种联合起来使用,其实一般在redis.conf中都已配置好,但是你想改也没人拦得住你啊!
五:其他操作
1:Redis其实共可有16个数据库,由0到15编号,默认选择0号,用seclect关键字选择
2:数据库肯定少不了事务操作
开启事务:multi
回滚:discard
提交:exec
相关文章推荐
- [置顶] VB6基本数据库应用(三):连接数据库与SQL语句的Select语句初步
- NoSQL数据库之Redis数据库管理六(Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存)
- JSP复习整理(二)基本语法
- 使用socket.io+redis来实现基本的聊天室应用场景
- B树(B-Tree)的由来、数据结构、基本操作以及数据库索引的应用
- K-V数据库-Redis的基本命令及配置文件参数详解
- 项目实战11—企业级nosql数据库应用与实战-redis的主从和集群
- redis的基本命令整理
- 06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制
- 数据库基本语句的应用
- 数据库复习--三范式、基本数据类型、完整性、存储过程
- VB6基本数据库应用(三):连接数据库与SQL语句的Select语句初步
- MongoDB基本应用操作整理
- redis自我整理复习(2)
- 06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制
- Redis应用场景-整理
- JavaScript中的基本API整理及应用
- JSP复习整理(三)基本语法续
- TimesTen 应用层数据库缓存学习:1. 基本概念
- delphi中cxgrid和数据库搭配的基本应用