全网最详细的Redis介绍

   日期:2020-07-17     浏览:81    评论:0    
核心提示:非关系型数据库Redis一、NOSQL数据库介绍首先跟大家说一下NoSQL数据库,和许多关系型数据库(如:SqlServer、DB2、MySQL等)不同,非关系型数据库不是说不是SQL,恰恰相反,它的解释是not only SQL,它的存储不需要像关系型数据库那样存储在特定结构的表,它的存储更加灵活,存储方式可以是JSON文档、哈希表或者其他方式等,有四大分类:①:键值(key-value)存储数据库相关产品:Redis、Tokyo Cabinet/Tyrant、Voldemort、Berkeley

非关系型数据库Redis

一、NOSQL数据库介绍

首先跟大家说一下NoSQL数据库,和许多关系型数据库(如:SqlServer、DB2、MySQL等)不同,非关系型数据库不是说不是SQL,恰恰相反,它的解释是not only SQL,它的存储不需要像关系型数据库那样存储在特定结构的表,它的存储更加灵活,存储方式可以是JSON文档、哈希表或者其他方式等,有四大分类:
①:键值(key-value)存储数据库
相关产品:Redis、Tokyo Cabinet/Tyrant、Voldemort、Berkeley DB
典型应用:内容缓存,主要用于处理大量数据的高访问负载。
数据模型:一系列键值对
优势:优秀的快速查询,稳定性强
劣势:存储的数据缺少结构化
②:列存储数据库
相关产品:HBase、Cassandra、Riak
典型应用:分布式的文件系统
数据模型:以列簇式存储、将同一列数据存在一起
优势:查找速度快、可拓展性强、更容易进行分布式扩展
劣势:功能相对局限、使用极大的内存才可以调配、且系统处理算法时将有数秒甚至更长时间的不可用、导致大量处理超时
③:文档性数据库(淘汰)
相关产品:CouchDB、MongoDB
典型应用:Web应用(与Key-Value类似,Value是结构化的)
数据模型:一系列键值对
优势:数据结构要求不严格
劣势:查询性能不高,而且缺乏统一的查询语法
④:图形(Graph)数据库
相关产品:Neo4J、InfoGrid、Infinite Graph
典型应用:社交网络【关系网】
数据模型:图结构
优势:利用图结构相关算法
劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。局限性过强!

二、非关系型数据库Redis介绍

市场上有很多非关系型数据库,但是现在用的最火的就是redis,关系型数据库是二进制不安全的,redis是数据二进制安全的,Value值的大小可以达到512M。笔者把自己所学的东西和大家分享如下:

1、redis使用环境

①关系型数据库的缓存存在
②可以做任务队列
③大量数据运算
④排行榜

2、redis版本介绍

redis有linux和windows两个版本,经笔者测试,linux使用要比windows方便的多,所以建议大家在使用的过程中尽量使用linux版本。

3、redis启动【以下是linux命令,windows命令相对简单】

①redis前端启动【集群启动不方便,和windows内核的进程有关】
./redis-server
redis-cli -h ip地址 -p 端口
②redis后端启动【集群启动特别方便,启动服务后可接着执行其他的命令】
daemonize no–>yes【守护进程修改】
./redis-server ./redis.conf
ps -ef|grep -i redis【查看redis相关的进程】

4、redis关闭

①kill -9 pid【断电,非正常关闭,一般不用,否则造成数据丢失】
②正常关闭【正常关闭,数据保存】
./redis-cli shutdown

5、redis支持的数据类型

①String
使用环境:主要用于保存json格式的字符串等
②Hash
使用环境:购物车等
③LinkedList
使用环境:做大数据集合的增删,做任务队列等
④Set
使用环境:redis操作中,涉及到两个大数据集合的并集、交集、差集运算等
⑤SortSet【添加时排序,默认从小到大】
使用环境:有序,不重复,带权值,专门用来做排行榜等

6、扩展知识1-消息订阅与发布【用于新闻系统,弹出的小窗口】

subscribe channel:订阅频道样例
psubscribe channel:批量订阅频道
publish channel content:在指定的频道中发布消息
psubscribe my1
psubscribe my

7、扩展知识2-多数据库

MySQL-数据库可以自己用语句自定义创建
create database xxxx;
redis-也是有数据库的,redis默认有16个数据库。0……15
在redis上所做的所有数据操作,都是默认在0号数据库上操作
数据库和数据库之间,不能共享键值对
切换数据库:
select 数据库名【0……15】
把某个键值对进行数据库移植
move newkey 1
清空当前数据库数据:flushdb
清空redis中所有数据库数据:flushall

8、扩展知识3-redis批量操作-事务

MySQL-事务:目的为了保证数据完整性,安全。
Redis-事务:目的为了进行redis语句的批量化执行
multi:开启事务用于标记事务的开始,其后执行的命令都将被存入命令队列--------begin transaction
exec:提交事务--------commit
discard:事务回滚------rollback

9、扩展知识4-redis持久化

内存(兔子):高效、断电数据就会消失
硬盘(乌龟):读写速度慢于内存的,断电数据依旧存在
持久化:把数据保存在硬盘上
关系型数据库MySQL-持久化:
任何增删改语句,都是在硬盘上做的操作
断电以后,硬盘上的数据还是存在
非关系型数据库redis:
默认情况下,所有的增删改,数据都是在内存中进行操作。
断电以后,内存中的数据不存在的。
断电以后,redis的部分数据会丢失,丢失的数据是保存在内存中的数据。
redis存在持久化操作。
Redis有两种持久化策略:
RDB:是redis的默认持久化机制。
RDB相当于照快照。保存的是一种状态。
20G---->几kb
优点:①快照保存数据速度极快,还原数据速度极快
②适用于灾难备份
缺点:①RDB机制符合要求就会照快照(随时随地启动),会占用一部分系统资源(突然的),很可能内存不足直接宕机
②小内存机器不适合使用
适用于:内存比较充裕的计算机。
RDB何时进行照快照:
①服务器正常关闭时,照快照
②key满足一定条件时,照快照【redis.conf】
save 900 1
save 300 10
save 60 10000
AOF:使用日志功能保存数据操作
默认AOF机制关闭的。
每秒同步:每秒进行一次AOF保存数据。安全性低,比较节省系统资源
每修改同步:只要有key变化语句,就进行AOF保存数据。比较安全
不同步:不进行任何持久化操作。不安全
AOF操作:
只会保存导致key变化的语句
AOF配置:【appendfsync】
always #每次有数据修改发生时都会写入AOF文件
everysec #每秒钟同步一次,该策略为AOF的缺省策略
no #从不同步,高效但是数据不会被持久化
开启AOF机制:appendonly yes
优点:①持续性占用极少量的内存资源
缺点:①日志文件会特别大,不适用于灾难恢复
适用于:内存比较小的计算机。

10、单个redis的使用

1、windows版本

第一步:下载
http://download.csdn.net/download/hippo0918/9027623
第二步:解压

第三步:修改redis.windows.conf,绑定本机ip

第四步:启动
①: 打开"运行"命令框,输入cmd
②:cd到解压目录
③:启动服务器 redis-server.exe redis.windows.conf,窗口不要关

④ :启动客户端 redis-cli.exe -h ip -p port(ip:本机ip;port:默认为6379)

⑤:测试

第五步:关闭
Ctrl+C

2、linux版本

第一步:下载
https://redis.io/download
第二步:通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作

第三步:执行make 对Redis解压后文件进行编译

第四步: 编译成功后,进入src文件夹,执行make install进行Redis安装,安装完成,界面如下

第五步:为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中
第六步:执行Redis-server 命令,启动Redis 服务

第七步:后台启动redis服务
a)首先编辑conf文件,将daemonize属性改为yes(表明需要在后台运行)
vim redis.conf
b)再次启动redis服务,并指定启动服务配置文件

第八步:关闭
./redis-cli shutdown

三、Redis架构设计(这里只介绍Redis哨兵模式)及使用详情

笔者之前学习过redis架构设计,目前使用的有4种,整理了一些笔记,想了解请移步:http://note.youdao.com/noteshare?id=f4b48ea497e7147339bae43adcc9a5e8。废话不多说,这里主要和大家分享一下Windows版本的redis哨兵模式的搭建。哨兵模式可支持一主多从多哨兵,笔者以一主两从三哨兵为例,读者可根据项目需求自行配置。
这种模式是基于单个redis的使用的,所以之前的操作和单个redis的使用一样。
第一步:下载下来绑定完ip后,复制两份redis.windows.conf文件改为redis.windows6380.conf和redis.windows6381.conf。修改这两个配置文件,把port分别改为6380和6381,然后添加slave of 本机ip 6379。



第二步:新建sentinel_1.conf,sentinel_2.conf,sentinel_3.conf配置文件。
【sentinel_1.conf】

当前Sentinel服务运行的端口

port 26379
logfile “./sentinel.log”

解压目录

dir “D:\redis”
sentinel monitor mymaster 192.168.145.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000
sentinel config-epoch master 1
sentinel leader-epoch master 1
sentinel current-epoch 6
sentinel known-slave mymaster 192.168.145.1 6380
sentinel known-slave mymaster 192.168.145.1 6381
sentinel known-sentinel mymaster 192.168.145.1 26380
sentinel known-sentinel mymaster 192.168.145.1 26381
【sentinel_2.conf】

当前Sentinel服务运行的端口

port 26380
logfile “./sentinel.log”

解压目录

dir “D:\redis”
sentinel monitor mymaster 192.168.145.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000
sentinel config-epoch master 1
sentinel leader-epoch master 1
sentinel current-epoch 6
sentinel known-slave mymaster 192.168.145.1 6380
sentinel known-slave mymaster 192.168.145.1 6381
sentinel known-sentinel mymaster 192.168.145.1 26379
sentinel known-sentinel mymaster 192.168.145.1 26381
【sentinel_3.conf】

当前Sentinel服务运行的端口

port 26381
logfile “./sentinel.log”

解压目录

dir “D:\redis”
sentinel monitor mymaster 192.168.145.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 15000
sentinel config-epoch master 1
sentinel leader-epoch master 1
sentinel current-epoch 6
sentinel known-slave mymaster 192.168.145.1 6380
sentinel known-slave mymaster 192.168.145.1 6381
sentinel known-sentinel mymaster 192.168.145.1 26380
sentinel known-sentinel mymaster 192.168.145.1 26379
第三步:分别启动一主两从和三哨兵,启动后不要关闭窗口
redis-server.exe redis.windows.conf
redis-server.exe redis.windows6380.conf
redis-server.exe redis.windows6381.conf
redis-server.exe sentinel_1.conf --sentinel
redis-server.exe sentinel_2.conf --sentinel
redis-server.exe sentinel_3.conf --sentinel
第四步:测试
测试一:
在主redis上set数据,在从redis上get数据,如果可以得到,说明设置成功了主从同步。

测试二:
关闭主redis,模拟主redis宕机,测试是否实现故障自动迁移,即有一个从redis被选举为新的主redis。当显示一个从redis有新的从redis时,说明设置成功。
到这Windows版的Redis哨兵模式就搭建并测试完成了,Linux版的读者可自行搭建,原理一样,Redis还要其他的架构设计,笔者推荐Codis,读者也可自行搭建。

谢谢客官打赏!您的支持是我前进最大的动力~

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服