今日学习笔记

一、NoSQL

NoSQL = Not Only SQL(不仅仅是 SQL) ,也解释为 non-relational(非关系型数据库)。在 NoSQL 数据库中数据之间是无联系的,无关系的。数据的结构是松散的,可变的。

1. MySQL的瓶颈

  1. 无法应对每秒上万次的读写请求, 无法处理大量集中的高并发操作。关系型数据的是 IO 密集的应用。 硬盘 IO 也变为性能瓶颈
  2. 无法简单地通过增加硬件、服务节点来提高系统性能。数据整个存储在一个数据库中的。多个服务器没有很好的解决办法,来复制这些数据。
  3. 关系型数据库大多是收费的,对硬件的要求较高。软件和硬件的成本花费比重较大。

2. NoSQL的优势

  1. 大数据量,高性能
    NoSQL 数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。 关系型数据库(例如 MySQL)使用查询缓存。这种查询缓存在更新数据后,缓存就是失效了。在频繁的数据读写交互应用中。缓存的性能不高。NoSQL 的缓存性能要高的多。
  2. 灵活的数据模型
    NoSQL 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。 尤其在快速变化的市场环境中,用户的需求总是在不断变化的。
  3. 高可用
    NoSQL 在不太影响性能的情况,就可以方便的实现高可用的架构。NoSQL 能很好的解决关系型数据库扩展性差的问题。 弥补了关系数据(比如 MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。MySQL 和 NoSQL 都有各自的特点和使用的应用场景,两者结合使用。让关系数据库关注在关系上, NoSQL 关注在存储上。
  4. 低成本
    这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的 License 成本

3. NoSQL 的劣势

  1. 不支持标准的 SQL,没有公认的 NoSQL 标准
  2. 没有关系型数据库的约束,大多数也没有索引的概念
  3. 没有事务,不能依靠事务实现 ACID
  4. 没有丰富的数据类型(数值,日期,字符,二进制,大文本等)

更详细的介绍请戳这里(https://www.cnblogs.com/xrq730/p/11039384.html

二、Redis安装

Remote Dictionary Server(Redis)是一个开源的使用 C 语言编写、支持网络、可基于内存亦可持久化的 Key-Value 数据库。Key 字符类型, 其值(value)可以是字符串(String),哈希(Map),列表(list),集合(sets) 和有序集合(sorted sets)等类型, 每种数据类型有自己的专属命令。 所以它通常也被称为数据结构服务器。

1. 解压

  1. 上传 redis-4.0.13.tar.gz 到 linux 系统。使用 Xftp 工具
  2. 解压 redis-4.0.13.tar.gz 到/usr/local 目录

2. 编译Redis源文件

Redis 是使用 c 语言编写的。 使用源文件安装方式,需要编译 c 源文件, 会使用 gcc 编译器。gcc 是 GNU compiler collection 的缩写,它是 Linux 下一个编译器集合(相当于 javac ), 是c 或 c++程序的编译器。

  1. 使用yum进行安装gcc 。
    执行命令:
    yum -y install gcc
    
    • 1
  2. 编译 redis 源文件
    在解压后的 Redis 目录下执行(cd /usr/local/redis-4.0.13) make 命令:
    make
    
    • 1
    如果 make 命令执行过程中出现错误:error: jemalloc/jemalloc.h: No such file or directory
    解决方式执行下面的命令:
    make MALLOC=libc
    
    • 1
  3. 编译成功的标志
    在这里插入图片描述
  4. 查看make的编译结果
    查看Redis的src目录:
    在这里插入图片描述

3. 启动和关闭Redis服务

  1. 后台启动Redis:
    在src目录下执行:./redis-server redis.conf配置文件路径 &
    ./redis-server ../redis.conf &
    
    • 1
    在这里插入图片描述
    此时 ctrl + c 关闭窗口后,查看redis进程,依然存在。
  2. 关闭 Redis
    使用 redis 客户端关闭,向服务器发出关闭命令
    切换到 redis-4.0.13/src/ 目录,执行:
     ./redis-cli shutdown
    
    • 1
    推荐使用这种方式, redis 先完成数据操作,然后再关闭。

4. Redis客户端

(1)命令行客户端

在 redis 安装目录/src下执行:

命令说明示例
./redis-cli -h IP地址 -p 端口号 指定 IP 和端口连接 redis ./redis-cli -h 127.0.0.1 -p 6379
./redis-cli 直接连接 redis (默认 ip127.0.0.1,端口 6379) ./redis-cli

(2)远程连接Redis

连接Linux的Reids之前需要修改Redis服务器的配置信息。 Redis服务器有安全保护措施,默认只有本机(安装Redis的那台机器)能够访问。
修改redis主目录下的redis.conf配置文件:(vim中使用 / 进行搜索)

  1. bind ip 绑定ip此行注释
  2. protected-mode yes 保护模式改为 no
    在这里插入图片描述
    注意:修改完之后要重启Redis服务,并且记得关闭防火墙

三、Redis基础命令

1. 查看Redis服务是否正常 ping

返回PONG,表示 redis 服务运行正常

2. 查看当前数据库中 key 的数目 dbsize

3. Redis的默认库

Redis 默认使用 16 个库, 从 0 到 15。 对数据库个数的修改,在 redis.conf 文件中修改databases 16
默认打开的是第0个数据库

4. 切换库命令 select

使用其他数据库, 命令是 select index

5. 删除当前库的数据 flushdb

6. 删除所有库的数据 flushall

7. 退出当前 redis 连接 exit/quit

8. 关闭redis服务 shutdown

四、Redis的Key操作

1. 查看匹配的key keys

语法: keys pattern
作用:查找当前库中所有符合模式 pattern 的 key. pattern 可以使用通配符。
通配符:

  • *:表示 0 - 多个字符,例如: keys * 查询所有的 key。
  • ?:表示单个字符,例如: wo?d , 匹配 word , wood

2. 判断 key 是否存在 exists

语法: exists key [key…]
作用:判断 key 是否存在
返回值:整数,存在 key 返回 1,其他返回 0。使用多个 key,返回存在的 key 的数量。

3. 设置 key 的生存时间 expire

语法: expire key seconds
作用:设置 key 的生存时间, 超过时间, key 自动删除。单位是秒。
返回值:设置成功返回数字 1,其他情况是 0 。

4. 查看key的剩余生存时间 ttl

语法: ttl key
作用:以秒为单位,返回 key 的剩余生存时间(ttl: time to live)
返回值:

  • -1 :没有设置 key 的生存时间, key 永不过期。
  • -2: key 不存在
  • 数字: key 的剩余时间,秒为单位

5. 查看 key 所存储值的数据类型 type

语法: type key
作用:查看 key 所存储值的数据类型
返回值:字符串表示的数据类型

  • none (key 不存在)
  • string (字符串)
  • hash (哈希表)
  • list (列表)
  • set (集合)
  • zset (有序集)

6. 删除存在的key del

语法: del key [key…]
作用:删除存在的 key,不存在的 key 忽略。
返回值:数字,删除的 key 的数量。

posted @ 2021-02-07 15:22  计算机语言学习日志  阅读(58)  评论(0)    收藏  举报