一:了解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源码工程地址:

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

Redis数据库的安装与基本应用的更多相关文章

  1. Ubuntu下redis数据库的安装和配置详细过程

    Redis 安装 当前redis最新稳定版本是4.0.9 当前ubuntu虚拟机中已经安装好了redis,以下步骤可以跳过 最新稳定版本下载链接:http://download.redis.io/re ...

  2. (Windows Maven项目)Redis数据库的安装和操作实现

              Redis是一个内存数据库,他会把你写入当中的数据缓存到内存中,之后会周期性的往磁盘中写入.这篇文章中介绍的是在Windows环境下利用Maven工具编译运行Java文件实现Red ...

  3. Redis(1)- Redis数据库的安装和配置

    1.Redis安装 1.1.Linux环境安装Redis step-1:下载Redis 进入官网找到下载地址 https://redis.io/download wget https://github ...

  4. linux环境下redis数据库的安装|配置|启动

    安装 下载:打开redis官方网站,推荐下载稳定版本(stable) 解压 tar zxvf redis-3.2.5.tar.gz 复制:推荐放到usr/local目录下 sudo mv -r red ...

  5. Redis数据库的安装配置方

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/100.html?1455869650 redis 是一个高性能的key-v ...

  6. Redis 数据库的安装

    安装redis真的是简单到不行了,三条命令就可以完成. 1.下载redis: 001.http://redis.io/ 002.也可以在我的网盘下载https://yunpan.cn/crSUX6aS ...

  7. 1. windows 下redis数据库的安装

    安装 window系统的redis是微软团队根据官方的linux版本高仿的 官方原版: https://redis.io/ 中文官网:http://www.redis.cn 下载地址: https:/ ...

  8. redis数据库的安装配置

    redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的value类型相对更多,包括strin ...

  9. CentOSLinux系统中Redis数据库的安装及配置

    MongoDB 传统方式安装 关闭 SELinux 编辑配置文件:vim /etc/selinux/config 把 SELINUX=enforcing 改为 SELINUX=disabled Mon ...

随机推荐

  1. ionic3 下创建ionic1项目

    一 start命令 ionic start sdscapp --type=ionic1 ——添加平台命令 ionic cordova platform add android

  2. 登录PeopleTools 提示ora-00942表视图不存在 select xxx from sysadm.psoprdefn

    起因:本来跟DBA说了把生产的库同步到CFG环境,还跟她说了,dev tst cfg在一台机器上,结果她还是把dev给覆盖了,幸好及时发现,一部分对象被删除了(序列,视图,有可能也有表). 视图和一部 ...

  3. C# 程序员最常犯的 10 个错误http://www.oschina.net/translate/top-10-mistakes-that-c-sharp-programmers-make

    来源:http://www.oschina.net/translate/top-10-mistakes-that-c-sharp-programmers-make 关于C# C#是达成微软公共语言运行 ...

  4. Android--仿1号店继续拖动查看图文详情——一个自定义的ViewGroup

    声明:源代码不是我写的,是网上的以为大神写的(地址给忘了),我拿过来以后呢,稍微改动了一下源码,使之符合了项目需求,再次特别感谢那位大牛,非常感谢. 是一个自定义布局,继承自ViewGroup pac ...

  5. 想涨工资吗?那就学习Scala,Golang或Python吧

    [编者按]据薪水调查机构 PayScale 提供的数据显示,掌握 Scala,Golang 和 Python 语言以及诸如 Apache Spark 之类的大数据技术,能带来最大的薪水提升.本文作者为 ...

  6. python基础一数据类型之列表

    摘要: python基础一中写到列表,那么这篇主要讲列表. 1,定义列表 2,列表.元祖.字符串都属于序列,都可以用用索引和切片. 3,列表的方法 1,定义列表 list1 = ['a','b',1, ...

  7. Oracle 当数据库的表没有drop操作就可以通过如下方式恢复表数据

    --执行下列语句可查询出相关时间点 select * from sys.smon_scn_time order by time_dp desc; --执行下列语句可将某个时间点的数据恢复 insert ...

  8. 如何把高版本的sqlserver 还原到低版本的 sqlserver(转载)

    本例为sql2012 还原到sql2008. 要实现的功能是把sql2012的数据库备份到sql2008,数据库名字为Test,并且这两个数据库在不同的电脑中. 微软的软件设计方案基本上都是新版本兼容 ...

  9. sqlite 字符串拼接

    select path || '%'  from t_category where depth = 0 and type = 0 用'||'拼接字符串 比如path是/1001/的话 那结果就是/10 ...

  10. linux下取IP(正则)

    linux下取IP(正则) 常见方法: ifconfig eth0|grep "inet addr"|awk -F ":" '{print $2}'|awk ' ...