您的位置:首页 > 数据库 > Redis

Redis学习

weixin_41606064 2019-05-23 15:28 316 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。如需转载请与博主联系,并标注来源。 https://blog.csdn.net/weixin_41606064/article/details/90421841

1. Redis简介

1.1 NoSQL的定义

学习Redis之前,我们先来了解一下NoSQL,相信大家基本上都有接触过MySQL,它是一种典型的关系型数据库,在我们实际应用过程中也是很频繁的。既然存在像MySQL这种类型的关系数据库,那么也就存在非关系数据库,没错,NoSQL就是非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的一个良好的补充。在实际应用开发过程中,NoSQL是一种用来解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案。了解更多请点击这里

1.2 NoSQL数据的基本分类

  • 键值(Key-Value)存储数据库
    相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
    典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
    数据模型: 一系列键值对
    优势: 快速查询
    劣势: 存储的数据缺少结构化
  • 列存储数据库
    相关产品:Cassandra, HBase, Riak
    典型应用:分布式的文件系统
    数据模型:以列簇式存储,将同一列数据存在一起
    优势:查找速度快,可扩展性强,更容易进行分布式扩展
    劣势:功能相对局限
  • 文档型数据库
    相关产品:CouchDB、MongoDB
    典型应用:Web应用(与Key-Value类似,Value是结构化的)
    数据模型: 一系列键值对
    优势:数据结构要求不严格
    劣势: 查询性能不高,而且缺乏统一的查询语法
  • 图形(Graph)数据库
    相关数据库:Neo4J、InfoGrid、Infinite Graph
    典型应用:社交网络
    数据模型:图结构
    优势:利用图结构相关算法。
    劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

1.3 走进Redis

Redis是一种用C语言开发的一个开源的高性能的键值对数据库,它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型包括字符串类型、散列类型、列表类型、集合类型、有序集合类型。了解更多请点击这里
应用常景

  • 缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
  • 分布式集群架构中的session分离。
  • 聊天室的在线好友列表。
  • 任务队列。(秒杀、抢购、12306等等)
  • 应用排行榜。
  • 网站访问统计。
  • 数据过期处理(可以精确到毫秒)

2. Redis的下载与安装

Redis的官网网址链接:http://redis.io/
下载地址链接:https://redis.io/download

本文以在centos6.8的环境下安装Redis3.0.0进行讲解说明
在官网上下载redis-3.0.0.tar.gz安装包后,拷贝到Linux系统中,再使用# tar -zxf redis-3.0.0.tar.gz 解压到本地目录。由于Redis是由C语言开发的,在Linux系统运行需要先进行编译,编译redis源码的命令行
#cd redis-3.0.0(首先切换到redis-3.0.0源码文件夹,再进行编译)
#make
Redis的启动

  • 启动方式1(前端启动方式):
    切换到redis的文件下的bin目录下
    #cd usr/local/redis/bin(注:此路径为博主设置的路径,根据自己的实际情况调整)
    #./redis-server
  • 启动方式2(后端启动方式):
    (1)需要首先将redis源码包中的配置文件redis.conf复制到/usr/local/redis/bin下;
    (2)使用vim指令修改刚复制的redis.conf文件,将其中的daemonize由no改为yes,
    #vim redis.conf
    (3)修改完成后,启动服务
    #./redis-server redis.conf
  • 其他:使用Redis的客户端工具
    下载链接:
    链接:https://pan.baidu.com/s/1BZwPckLDAh8V8tf2f8S6dw
    提取码:m3ja
    至于安装过程基本上就是一路next了
    安装成功后的界面如下:

    这就是redis的客户端操作界面,使用方法也简单,和Navicat差不多。
    首次使用客户端工具连接centos中的redis服务时,可能出现连接超时,或者是拒绝连接,处理方法可以参考博主的另一篇博客解决使用远程连接工具连接redis时,出现连接超时的方法

3.使用java语言调用redis

3.1认知jedis

jedis是集成了redis的一些命令操作,封装了redis的java客户端。下面介绍在java中常见的使用方式。

3.2jedis的使用

  • 单实例使用的代码实现
@Test
public void test1(){
//连接到Linux的Redis的数据库
Jedis jedis = new Jedis("192.168.12.128", 6379);
//选择要操作的数据库
jedis.select(3);//操作第二个数据库
//存数据[5种类型]
jedis.set("welcome","欢迎来到智能系统优化实验室");//设置字符串
jedis.hset("user:1001","username","cc");
jedis.hset("user:1001","age","22");
jedis.hset("user:1001","gender","男");

jedis.lpush("FootballTeamNames","日本","韩国","英国");
jedis.sadd("NBA","勇士","骑士");

jedis.zadd("english:scoreboard",90,"zhangsan");
jedis.zadd("english:scoreboard",91,"lisi");
jedis.zadd("english:scoreboard",92,"wangwu");
//取数据
System.out.println(jedis.get("welcome"));
//关闭连接
jedis.close();
}
  • 通过连接池的使用方式
@Test
public void testJedisPool() {
//创建一连接池对象
JedisPool jedisPool = new JedisPool("192.168.12.128", 6379);
//从连接池中获得连接
Jedis jedis = jedisPool.getResource();
jedis.select(1);
String result = jedis.get("welcome");
System.out.println(result);
//关闭连接
jedis.close();

//关闭连接池
jedisPool.close();
}
标签: