一,什么是NoSQL

NoSQL                

NoSQL = Not Only SQL (不仅仅是SQL)

关系型数据库:表格,行,列

泛指非关系型数据库,随着web 2.0 互联网的诞生!传统的关系型数据库很难对付 web 2.0 时代 !

尤其是超大规模的高并发的社区!暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下必须要掌握的一个技术!

很多的数据类型 用户的个人信息,社交网络,地理位置。这些数据类型的存储不需要一个固定的格式!不需要多月的操作就可以横向扩展的!Map<String,Object> 使用键值对来控制!


NoSQL 特点

解耦!

1,方便扩展(数据之间没有关系,很好扩展!)

2,大数据最高性能(Redis 一秒写8万次,读取11万,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高!)

3,数据类型是多样型的!(不需要事先设计数据库!随取随用!如果是数据量十分大的表,很多人就无法设计了!)

4,传统 RDBMS 和 NoSQL

传统的 RDBMS 数据库

- 结构化组织

- SQL

- 数据和关系都存在单独的表中

- 操作操作,数据定义语言

- 严格的一致性

- 基础的事务

- .......

NoSQL

- 不仅仅是数据

- 没有固定的查询语言

- 键值对存储,列存储,文档存储,图形数据库(社交关系)

- 最终一致性

- CAP定理和BASE (异地多活)初级架构师!

- 高性能,高可用,高可扩

- .........

了解:3V+3高 ???  分布式文件系统 FastDFS

二,NoSQL的四大分类

1,键值对存储  2,列存储  3,文档存储   4,图形数据库

KV键值对:

  •  新浪:Redis
  •  美团:Redis + Tair
  •  阿里,百度:Redis + memecache

文档型数据库(bson格式 和json一样):

  • MongoDB(一般必须要掌握)
  •   。MongoDB 是一个基于分布式文件存储的数据库,C++ 编写,主要用来处理大量的文档!
  •   。MongoDB 是一个介于 关系型数据库和非关系型数据中中间的产品!MongoDB 是非关系型数据库中功能最丰富,最像关系型数据库的!
  • ConthDB

列存储数据库:

  • HBase
  • 分布式文件系统

 图关系数据库:

        

  • 他不是存图形,放的是关系,比如:朋友圈社交网络,广告推荐!
  • Neo4j , lnfoGrid;

了解非关系数据库

三,Redis 入门 

       概念 

Redis 是什么?

Redis (Remote Dictionary Server),即远程字典服务!

是一个开 源的使用 ANSI C语言编写,支持网络,可基于内存亦可持久化的日志型,Key-Value数据库,并提供多种语言的API。

Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

免费和开源!是当下最热门的 NoSQL 技术之一!也被人们称之为结构化数据库!

Redis 能干嘛?

1,内存存储,持久化,内存中是断电即失,所以说持久化很重要(rdb,aof)

2,效率高,可以用于高速缓存

3,发布订阅系统

4,地图信息分析

5,计时器,计数器(浏览量!)


特性:                       

1,多样的数据类型  2,持久化   3,集群   4,事务 。。。。。

注意:Wdinow 在Github上下载(停更很久了!)

==Redis推荐都是在Linux服务器上搭建的,我们是基于Linux学习!==

测试链接

Window 操作

记住一句话,Window 下使用确实简单,但是Redis 推荐我们使用Linux去开发使用!

基础的使用

Redis 默认有16个数据库

Redis 是单线程的!

明白Redis 是很快的,官方表示,Redis是基于内存操作,CPU不是Redis 性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所有就使用单线程了!

Redis 为什么单线程还这么快?

核心:redis 是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU 上下文会切换:耗时的操作!!!),对于内存系统来说,如果没用上下文切换就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!

Redis  五大数据类型:

Redis -key

keys *           #查看所有的key

set  name  liu   # set key

EXISTS  name  #判断当前的key是否存在

move name 1     #移除当前key

EXPIRE name  10  #设置key的过期时间,单位是秒

ttl   name   #查看过期时间

type    name   #查看当前key的一个类型

String (字符串)

set  key1  v1        #设置值

get  key          #获取值

keys *        #获取所有的key

EXISTS  key1        #判断某一个key是否存在

APPEND key "hello"         #追加字符串,如果当前 key 不存在,就相当于setkey

STRLEN  key1         #获取字符串的长度

i++ 操作

set  views  0         # 初始化浏览量为0

incr  views          #自增 1

decr  views        #自减 1

INCRBY  views  10        #设置自增数量

字符串范围  renge

set  key 1"liu"          #设置 key1 的值

GETRANGE  key1   0  3          #截取字符串 【0,3】

GETRANGE  key1   0  -1         #获取全部的字符串

替换 、

SETRANGE   key2  1  xx         #替换指定位置开始的字符串!

setex  (set   with  expire)        #设置过期时间

setnx  (set   not    exist)        #不存在  在设置

mset    k1 k2 k3 k4        #同时设置多个值

mget   k1  k2  k3           #同时获取多个值

msetnx   k1  k2   k3        # msetnx   是一个原子性的操作,要么一起成功,要么一起失败!

String类似的使用场景:value 除了是我们的字符还可以是我们的数字!

  • 计数器
  • 统计多单位的数量 uid:1 是id
  • 粉丝数
  • 对象缓存存储!

List :(数据类型)


基本的数据类型,列表

在Redis 里面,我们可以把List玩成,栈,队列,阻塞队列!

所有的List命令都是以L开头的

LPUSH  list   xxx           #将一个值或者多个值,插入到列表头部

LRANGE  list  0  -1         # 获取list中值!也可以区分获取值

RPUSH list  righr           #将一个值或多个值,插入到列表位部 (右)

LPOP  list          # 移除list 的第一个元素

RPOP  list        #移除list的最后一个元素

Lindex   list  1         #获取下班的第一个值

Lpush   list  xxx           # 添加值

Lrem  list   1 xxx           #移除  这个 1 是移除几个 可以重复

Ltrim  mylist  12          #通过下标截取指定的长度,这个list已经被改变了 ,截断了只剩下截取的元素!

 Set  (集合)

set 中的值是不能重读的

sadd  myset "hello"        # set 集合中添加

SMEMBERS  myset        # 查看指定set的所有值

SISMEMBER   myset   hello        # 判断某一个值是不是在set集合中

scard  myset        #获取set集合中的内容元素个数!

srem  myset  hello        # 移除set 集合中的指定元素

SRANDMEMBER  myset        #随机抽选出一个元素

spop   myset        #随机删除一些 set 集合中的元素!

 Hash(哈希)

Map集合,key -<key-vlaue> 时候这个值是一个map集合!本质和String类型没有太大区别,还是一个简单的 key-vlaue!

hset  myhash  field1  liu        #set 一个具体 key -vlaue

hget  myhash   field1          #获取一个字段值

hmset  myhash  field1  hello  field2   world          #获取多个字段值

hgetall   myhash            #获取全部的数据

hdel  myhash field         # 删除hash指定 key字段!对应的vlaue值也就消失了!

hlen  myhash        #获取myhash表的字段数量

HEXISTS   myhash field1        #判断hash中指定字段是否存在!

hkeys    myhash        #只获取所有field

hvals   myhash          #只获取所有value

 Zset(有序集合)

zadd  myset  1   noe         #添加一个值

zadd  myset   2   two  3  three           #添加多个值

-----    排序如何实现 --------

zadd  salary  2500  xiaohong        #添加三个用户

ZRANGEBYSCORE  salary  -inf  +inf        #显示全部的用户  从小到大

ZRANGEBYSCORE  salary   -inf  +inf   withscores        #显示全部的用户并且附带成绩

ZRANGEBYSCORE  salary  -inf  2500  withscores   # 显示工资小于2500 员工的降序排序

zrem salary   liu        #移除有序集合中的指定元素

zcard  salary        #获取有序集合中的个数

Redis --- 学习 NoSQL 五大类型相关推荐

  1. Redis学习 - NoSQL简介、redis安装、redis基础知识、数据类型、持久化、订阅发布、主从复制、哨兵模式、缓存击穿和雪崩

    学习视频地址:https://www.bilibili.com/video/BV1S54y1R7SB 完结撒花,感谢狂神 文章目录 1. NoSQL 1.1 单机Mysql的演进 1.2 当今企业架构 ...

  2. redis学习-NoSQL简介

    1.互联网时代背景下大机遇,为什么用NoSQL 1.1单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付. 在那个时候,更多的都是静态网页,动态交互类型的网 ...

  3. redis学习-NoSQL数据库的四大分类

    KV键值对 新浪:BerkeleyDB + Redis 美团:Redis + tair 阿里.百度:memcache + Redis 文档型数据库(bson格式比较多) CouchDB MongoDB ...

  4. Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁

    1.NoSQL数据库 1.1 NoSQL数据库概述 NoSQL(NosQL = Not Only sQL ),意即"不仅仅是sQL",泛指非关系型的数据库.NoSQL不依赖业务逻辑 ...

  5. Redis 基础——五大类型与数据结构

    引言 Redis 区分于 memcahced 的一个重要不同就是它具有明确的类型概念,在Redis 的使用过程中,都离不开这些类型的学习,它不仅是 Redis 能力的基础,同时也是一些重要数据结构和算 ...

  6. Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合...

    Redis 小白指南(二)- 聊聊五大类型:字符串.散列.列表.集合和有序集合 引言 开篇<Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍>已经介绍了 Redis 的 ...

  7. Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数

    1.Redis和nosql简介,api调用 14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点: 1.  不支持SQL语法 2.  存储结构跟传统关系型数 ...

  8. jedis操作set_Jedis对redis的五大类型操作代码详解

    本篇主要阐述Jedis对redis的五大类型的操作:字符串.列表.散列.集合.有序集合. JedisUtil 这里的测试用例采用junit4进行运行,准备代码如下: private static fi ...

  9. redis学习-redis五大数据类型

    五大数据类型简介 String(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. 也就是例子中的k1 v1,k2 v2 s ...

最新文章

  1. linux怎么进入root文件,linux下安装ROOT过程
  2. Quality Certificate Check at Goods Receipt
  3. 你可能不知道的小程序
  4. Mysql INSERT INTO .. ON DUPLICATE KEY更新多行记录
  5. 自学python有用吗-普通人学Python有用吗?学完能做什么?
  6. Visual studio 利用Nuget 控制台安装已经下载好的插件
  7. 三伏天到了,记得为数据中心降降温
  8. 机器人 蓝buff 钩_lol:机器人史诗级加强,从河道钩蓝buff,对面打野要骂人
  9. 服务器Ubuntu Import Error:cannot import name main
  10. debian 9.4 安装教程 linux系统debian9.4图文详细安装步骤
  11. gradle构建java实例_Gradle构建Java应用程序
  12. ** is not in the sudoers file. This incident will be reported. 给某个用户开放sudo权限。
  13. leetcode c程序总提示主函数_Python练手:一行Python解Leetcode习题
  14. drcom 不耍流氓
  15. mysql模糊查询语句怎么不区分大小写
  16. java互联网架构,大数据学习笔记1--------Python入门个人笔记,仅记录个人觉得需要记得东西)
  17. Excel2——在同一个图中如何绘制多条曲线并标注图例
  18. 怎样测量单片机程序的运行时间?
  19. Postman接口自动化测试之— 请求参数进行MD5/SHA256摘要计算
  20. PTA 天梯赛 L1-079 天梯赛的善良 (20 分) 详解

热门文章

  1. 百度地图 - demo
  2. mobiscroll 一个很好用的前端插件
  3. sentinel与nacos持久化
  4. 笔趣阁爬虫(2020重制版),贴心的操作,谁用谁知道
  5. tikinter详细集合
  6. 【最全Mybatis学习笔记(导入mybatis相关jar包)】
  7. Gossip协议:流言蜚语,原来也可以实现一致性
  8. python 路径处理_python OSl路径处理
  9. Apache-Ignite-中文文档
  10. java factorial_Java Longs.factorial(int n)用法及代码示例