非关系型数据库Redis (一)

目录

一、Redis简介

1.1 什么是NoSQL

1.2 NoSQL和关系型数据库比较

1.3 主流的NoSQL产品

1.4 什么是Redis

二、Redis下载安装

三、Redis基本操作

四、Redis数据类型

4.1  5种基础数据类型(常用)

4.2  4种特殊数据类型

五、Jedis


一、Redis简介

1.1 什么是NoSQL

NoSQL(NoSQL = Not Only SQL),是一项全新的数据库理念,泛指非关系型的数据库。传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型、web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

1.2 NoSQL和关系型数据库比较

优点:

1. 成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购 买使用,相比关系型数据库价格便宜。

2. 查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询 速度远不及nosql数据库。

3. 存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储 基础类型以及对象或者是集合等各种格式,而关系型数据库则只支持基础类型。

4. 扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。

缺点:

1. 维护的工具和资料有限,因为nosql属于新的技术,不能和关系型数据库10几年的技术同日而 语。

2. 不提供对sql的支持,如果不支持sql这样的工业标准(不遵循SQL标准),将产生一定用户的学习和使用成本。

3. 不提供关系型数据库对事务的处理。

1.3 主流的NoSQL产品

键值对存储数据库列存储数据库文档型数据库图形数据库
相关产品Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DBCassandra, HBase, RiakCouchDB、MongoDBNeo4J、InfoGrid、Infinite Graph
典型应用

内容缓存,主要用于处理大量数据的高访问负载

分布式的文件系统

Web应用(与Key-Value类似,Value是结构化的) 社交网络
数据模型一系列键值对以列簇式存储,将同一列数据存在一起一系列键值对图结构
优势快速查询查找速度快,可扩展性强,更容易进行分布式扩展数据结构要求不严格利用图结构相关算法。
劣势存储的数据缺少结构化功能相对局限查询性能不高,而且缺乏统一的查询语法需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

1.4 什么是Redis

Redis是用C语言开发的一个开源的高性能键值对数据库。

特征:

1. 数据间没有必然的关联关系

2. 内部采用单线程机制进行工作

3. 高性能,官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是 81000次/s。

4. 多数据类型支持

字符串类型string
列表类型list
散列类型hash
集合类型set
有序集合类型sorted_set

5. 持久化支持。可以进行数据灾难恢复

二、Redis下载安装

Linux 版 (适用于企业级开发)

  • Redis 高级开始使用
  • 以4.0 版本作为主版本

Windows 版本 (适合零基础学习)

  • Redis 入门使用
  • 以 3.2 版本作为主版本
  • 下载地址:https://github.com/MSOpenTech/redis/tags

 Redis核心文件

  • redis-server.exe   服务器启动命令
  • redis-cli.exe   命令行客户端
  • redis.windows.conf   redis核心配置文件
  • redis-benchmark.exe   性能测试工具
  • redis-check-aof.exe   AOF文件修复工具
  • redis-check-dump.exe   RDB文件检查工具(快照持久化文件)

启动Redis

方式1:双击redis-server.exe

方式2:指令redis-server.exe redis.windows.conf

redis端口号是6379

三、Redis基本操作

信息添加信息查询清除屏幕信息退出客户端命令行模式帮助
功能设置 key,value 数据根据 key 查询对应的 value,如果不存在,返回空(nil)清除屏幕中的信息退出客户端获取命令帮助文档,获取组中所有命令信息名称
命令set key valueget keyclearquit exit 按钮help 命令名称 help @组名

四、Redis数据类型

redis 数据存储格式

  • redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储。
  • 数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串

   key的语法:

  • 在一个项目中,key最好使用统一的命名模式
  • key区分大小写
  • key不要太长,尽量不要超过1024字节。不仅消耗内存,也会降低查找的效率
  • key不要太短,太短可读性会降低

4.1  5种基础数据类型(常用)

结构类型结构存储的值结构的读写能力应用场景
String字符串可以是字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作 缓存对象、常规计数、分布式锁、共享 session 信息等
List列表一个链表,链表上的每个节点都包含一个字符串对链表的两端进行push和pop操作,读取单个或多个元素;根据值查找或删除元素

消息队列(但是有两个问题:1.生产者需要自行实现全局唯一ID;

2.不能以消费组形式消费数据)等

Set集合包含字符串的无序集合字符串的集合,包含基础的方法有看是否存在添加、获取、删除;还包含计算交集、并集、差集等 聚合计算(并集、交集、差集)场景,比如点赞、共同关注、抽奖活动等
Hash散列包含键值对的无序散列表包含方法有添加、获取、删除单个元素:缓存对象、购物车等
Zset有序集合和散列一样,用于存储键值对字符串成员与浮点数分数之间的有序映射,元素的排列顺序由分数的大小决定;包含方法有添加、获取、删除单个元素以及根据分值范围或成员来获取元素排序场景,比如排行榜、电话和姓名排序等

4.2  4种特殊数据类型

1、geospatial地理位置(3.2 版新增)

  • GEO底层的实现原理其实就是zset。
  • 应用场景:存储地理位置信息的场景,比如滴滴叫车。

2、BitMap (2.2 版新增)

  • 应用场景:二值状态统计的场景,比如签到、判断用户登陆状态、连续签到用户总数等。

3、HyperLogLog (2.8 版新增)

  • 应用场景:海量数据基数统计的场景,比如百万级网页 UV 计数等

4、Stream (5.0 版新增)

  • 应用场景:消息队列,相比于基于 List 类型实现的消息队列,有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据

五、Jedis

我们要使用Java来操作Redis。

Jedis是Redis官方推荐的java连接开发工具。使用ava操作Redis中间件。如果你要使用 java操作redis,那么一定要对jedis十分熟悉。

1.导入对应依赖

<!--导入jedis包-->
    <dependencies>
        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>
    </dependencies>

2、编码测试: 

import redis.clients.jedis.Jedis;
public class TestPing {
    public static void main(String[] args) {
        //new Jedis 对象即可
        Jedis jedis = new Jedis("127.0.0.1",6379);
        System.out.println(jedis.ping());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值