01redis安装及入门(含阿里云服务器出现的问题)

1. 回顾

哈哈6379 446 99

2. 正文:—redis非关系数据库

1. NOSQL的概念
2. NOSQL和RDBMS的区别。
3. 常见的NOSQL数据库类型
4. 什么是redis
5. 为什么使用redis
6. 如何安装redis
7. redis支持的数据类型以及对应类型下的命令。

3.NOSQL的概念

NOSQL(Not only sql):不仅是sql语句, 它是对所有非关系型数据库(各种各样相互关联的表)的一种统称。 除去关系型数据库之外的都是非关系数据库(没有表了)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-88pKBKII-1618233721737)(assets/1618223758239.png)]

4. NOSQL和RDBMS的区别

RDBMS
- 高度组织化结构化数据。 一条数据有各个字段:user---userid username age sex .....
- 结构化查询语言(SQL) sql语句
- 数据和关系都存储在单独的表中。
- 数据操纵语言DML,数据定义语言DDL
- 严格的一致性. 事务
- 基于事务
 NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 键 - 值对存储。(字符串  对象  队列  集合)
- 最终一致性,而非ACID【原子,一致,隔离,持久】属性
- 非结构化和不可预知的数据  字符串  对象  队列  集合
- 高性能,高可用性和可伸缩性。 适合搭建集群。  mysql搭建集群。非常复杂。主从模式(对比nginx)

声明式语言包括数据库查询语言(SQL,XQuery),正则表达式,逻辑编程,函数式编程和组态管理系统。 声明式编程通过函数、推论规则或项重写(term-rewriting)规则,来描述变量之间的关系。它的语言运行器(编译器或解释器)采用了一个固定的算法,以从这些关系产生结果。 声明式编程语言通常用作解决人工智能和约束满足问题。

NOSQL是替换RDBMS的吗? 不是。只能作为RDBMS一个补充

5. 常见的NOSQL数据库类型

Redis就属于非关系数据库。
Mongodb属于非关系数据库。----接近mysql数据库

MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

特点

它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R1CjtVrG-1618233721740)(assets/3b292df5e0fe99252f675a9a34a85edf8cb17194.jpg)]
mongodb集群参考

*模式自由。

*支持动态查询

*支持完全索引,包含内部对象。

*支持查询。

*支持复制和故障恢复。

*使用高效的二进制数据存储,包括大型对象(如视频等)。

*自动处理碎片,以支持云计算层次的扩展性。

*支持 GolangRUBYPYTHONJAVAC++PHPC#等多种语言。

*文件存储格式为BSON(一种JSON的扩展)。

*可通过网络访问。

使用原理

所谓“面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collection)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。Nytro MegaRAID技术中的闪存高速缓存算法,能够快速识别数据库内大数据集中的热数据,提供一致的性能改进。

模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。

存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized Document Format)

MongoDB已经在多个站点部署,其主要场景如下:

1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。

不适用的场景如下:

1)要求高度事务性的系统。

2)传统的商业智能应用。

3)复杂的跨文档(表)级联查询。

6. 什么是redis。

Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
Redis是一个开源的使用ANSI C语言编写可基于内存亦可基于磁盘,Key-Value数据库。类似于map

7. 为什么使用redis(优点)

1.Redis读取的速度是110000次/s,写的速度是81000次/s(MySQL读写速度很低,千次都需维持)
2.原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。(该次操作不成功会进行回滚,类似化学反应,我们只能看到初始状态或者变化后的状态,不成佛便成仁)
3.支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
4.持久化--磁盘,主从复制(集群)
5.官方不支持window系统,但是又第三方版本。 linux系统。
多种数据结构链接:

https://zhuanlan.zhihu.com/p/102120122

8.如何安装redis.

准备工作

1.安装redis需要的环境。yum install -y gcc-c++
2.上官网下载redis源码安装包。 
redis-5.0.8.tar.gz

安装步骤

1. 解压redis到/usr/local
2. 进入redis目录并执行编译命令 make
3. 执行安装命令 make install

开启redis服务。

redis-server redis.conf  //在你的解压文件夹下执行该代码启动redis
CTRL+C/Z 就可以退出服务
当然解压文件夹下有对应的配置文件,名字是redis.conf,更改其内容如bind等,关闭kill redis的进程重启服务,那么相关配置就会起作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NqhRNJLQ-1618233721748)(assets\1618211063060.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PkwZf7Sb-1618233721749)(assets/1618228259447.png)]

使用redis客户端连接redis服务器

redis-cli  -h redis服务器的ip   -p redis服务器的端口号
redis-cli -h 127.0.0.1 -p 6379 shutdown 关闭redis服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D08u4xa2-1618233721749)(assets\1618211228219.png)]

对于云服务器,

**可视化程序要想远程连接需要更改配置;**更改配置文件选择bind 0.0.0.0或者bind * -::*都可以,之后再在可视化界面登录云服务器的公网IP,端口号仍是配置文件中的打开redis服务即可连接

9. redis配置文件简单看看(在解压文件夹中redis.conf)

# 表示启动redis服务器时 后台启动并运行。
daemonize yes
# 默认的端口号。
port 6379
# 默认运行绑定的端口号~~~~~~~~~~~~~~~~~~~~~~~HTTP协议~~~~~~~~~~~~~~~~~
# bind 127.0.0.1   本地IP
# 0.0.0.0 表示广播模式 意思是所有人都可以连接。127.0.0.1 
bind 0.0.0.0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gcq7oTJT-1618233721750)(assets/1618228538230.png)]

10. redis图形化界面的客户端

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W1BONkQy-1618233721750)(assets\1618214582006.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sruf2AUe-1618233721751)(assets\1618214931047.png)]

11. redis的常用命令。

11.1 对key操作的命令

set xx yy:键值xx不能重复,多次使用会覆盖原有的内容
keys *: 查询所有的key;
del key....:删除指定的key
<expire/ex key  seconds><set K1 v1 expire/ex  seconds>: 为指定的key设置过期时间单位为秒
ttl key: 查询指定key的存活时间

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-57wQbhRA-1618233721751)(assets/1618229678752.png)]

**注意:**云服务器当服务停止或重启后会将redis中的数据删除;解决方案如下:

在Linux系统设置参数“vm.overcommit_memory”即可解决,步骤如下:

1.编辑 sysctl.conf 配置文件:

vi /etc/sysctl.conf

2.另起一行增加参数 vm.overcommit_memory 配置,如下:

vm.overcommit_memory = 1

3.使配置文件生效:

sysctl -p

对于第2、3步随便在/etc/sysctl.conf文件中一个位置就可以了,之后重启redis即可解决这种问题

本地虚拟机不会出现这种情况

11.2 对数据库的操作命令

flushdb: 清空当前数据库中的数据。
select index: 选择数据库 
flushall: 清空所有数据库中的数据。

12. redis支持的数据类型

http://www.redis.net.cn/order/

http://redisdoc.com/ redis命令介绍参考网址

1. String字符串类型
2. Hash 哈希类型
3. list 队列
4. set 集合
5. sorted set 有序集合。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j7c4LBma-1618233721751)(assets/1618225816792.png)]

13. String字符串类型–value值为字符串类型

可以存放任意类型的字符串。java对象—>json字符串—>string

set key value: 把字符串的value存放到对应的key上。
get key: 根据指定的key获取对应字符串的value
mset key value key value key value....: 一次存放多个字符串的value到相应的key上
mget key key...: 根据指定的多个key获取对应的字符串的value
setnx key value: 把指定的value存放到对应的key上,如果对应的key已经存在,则不存储。
如果不存在则存储。 返回0或者1
incr key: 为指定的key的value值进行递增。应用场景:点赞 收餐  转发等
decr key: 递减

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZzNfyHUa-1618233721752)(assets/1618230778314.png)]

14. Hash 类型。–value值为hash类型。

hset key field value: 存放一个指定key的field-value的数据库
hget key field:获取指定key的field字段对应的value值。
hkeys key: 获取指定key的所有field(键名)字段名
hvals key: 获取指定key的所有value值。
hgetall key: 获取指定key的所有的field和value值。
HDEL key field: 删除指定key的field字段。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsWhqBov-1618233721752)(assets/1618231146536.png)]

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

晴空万里藏片云

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值