1、Redis介绍
Redis是一个将数据存储到内存之中的内存数据库。它主要的作用就是可以快速存取。
1.1redis出现的背景
随着互联网+大数据时代的来临,传统的mysql等关系型数据库(数据存储在硬盘之中)已无法满足大型网站日益增长的访问量和数据量,这时就需要有一种能够快速存取数据的组件来缓解数据库服务I/O(input/output输入输出存取)的压力,来解决系统性能上的瓶颈,redis就应运而生。
1.2数据库的发展历史
①数据库类型:单数据库实例
在互联网+大数据时代来临之前,企业的一些内部信息管理系统,一个单个数据库实例就能满足系统的需求
②数据库类型:缓存(memcache/Redis)+单数据库实例
随着系统访问用户的增多,数据量的增大,单个数据库实例已经满足不了系统的读取需求,用这种模型减小数据库的I/O压力,缓存特点:计算机重启之后内存里面的数据都会丢失,也会有持续化缓存,目前第二步还面临着这个问题
③数据库类型:缓存+主从数据库+读写分离
缓存可以缓解系统的读取压力,但是数据量的写入压力持续增大,
④数据库类型:缓存+主从数据库集群+读写分离+分库分表
数据量再次增大,读写分离以后,主数据库的写库压力出现瓶颈、
⑤数据库类型:nosql+主从数据库集群+读写分离+分库分表
互联网+大数据时代来临,关系型数据库不能很好的存取一些并发性高,实时性高的,并且数据格式不固定的数据。
1.3Redis的发展历程
1.3.1Redis是什么
Redis是一个高性能的,开源的(免费),C语言开发的,键值对存储数据的nosql数据库。
NoSQL: not only sql,泛指非关系型数据库 Redis/MongoDB/Hbase Hadoop
关系型数据库: MySQL、oracle、SqlServer
1.3.2Redis特性
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
Redis不仅仅支持简单的key-value类型的数据,同时还提供List,set等数据类型。memcached就只支持简单的kv
Redis支持数据的备份
1.3.3Redis的历史
• 2009 年 5 月发布 Redis 初始版本;
• 2012 年发布 Redis 2.6,重构了大量的核心代码,去掉了所有和集群相关的代码;
• 2013 年 11 月发布 Redis 2.8,增加了部分主从复制功能;
• 2015 年 4 月发布 Redis 3.0,增加了集群功能;
• 2017 年 7 月发布 Redis 4.0 ,优化了复制功能和新增了混合持久化;
• 2018 年 10 月发布 Redis 5.0,增加了 Stream 数据类型;
• 2020 年 3-5 月计划发布 Redis 6.0 稳定版。
1.3.4Redis应用场景
点赞(如果放入数据库中update很快,频繁update会占用用大量数据库资源,降低数据库的性能)
秒杀
直播平台在线好友列表
商品排行榜
同步session
2、Redis的安装
2.1在ubantu上面的命令行安装
redis和redis-server区别很小只是版本上的差别
通过终端直接sudo apt-get install redis-server
查看他的版本信息redis-server --version
连接redisredis cli
卸载步骤
2.2在window上面的安装
Redis也支持win,只需要下载他的压缩包解压之后在里面打开应用程序就好,压缩包可自行下载,或者留言,默认打开是阻塞方式连接不了,这一步先将安装,后面再讲连接
2.3通过xshell在win上连接ubantu使用make源码安装
为什么要用xshell:上篇项目前导有提过,这里稍微将一下,虚拟机和本机的命令不互通,可以通过xshell将win的代码通过xshell复制到ubantu执行,用make安装指定想安装的版本
第一步: 输入wget http://download.redis.io/releases/redis-6.0.6.tar.gz
从哪个网站获得压缩包
第二步: 输入tar xzf redis-6.0.6.tar.gz
解压该压缩包
第三步: 输入cd redis-6.0.6
第四步: 输入make
安装make
安装gcc
出现错误:已经编译过一次,会有冲突
解决问题:卸载压缩后的文件重新解压
成功
3、Redis的配置文件
/etc/redis/redis.conf
当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
daemonize no 只有将这个守护进程改为yes它的打开方式才不会是堵塞
监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
port 6379
设置数据库的数目。
databases 16 从0到15 不能自己创建第17个
根据给定的时间间隔和写入次数将数据保存到磁盘 数据持久化
下面的例子的意思是:
900 秒内如果至少有 1 个 key 的值变化,则保存 保存在硬盘里面
300 秒内如果至少有 10 个 key 的值变化,则保存
60 秒内如果至少有 10000 个 key 的值变化,则保存
save 900 1
save 300 10
save 60 10000
Redis默认只允许本地连接,不允许其他机器连接
bind 127.0.0.1 想要被其他用户连接将bind改为0.0.0.0代表所有的ip都可以连接
4、Redis的启动
win和ubantu的区别就是后面是否加.exe
4.1windows的启动
第一步:启动redis服务端
第二步:连接
4.2ubantu的启动
进入redis-5.0.9输入src/redis-server直接开启,这是以阻塞的方式开启
找到它的配置文件并且通过vim去修改配置文件将守护进程的daemonize no改为daemonize yes
保存退出
验证redis是否在后台开启
连接redis服务器
4.3在win上连接ubantu的redis
在ubantu中修改配置文件输入vim redis.conf
将绑定ip修改为
修改完成后要通过配置文件开启服务端
先关闭进程在通过配置文件开启redis服务器kill -9进程号 或者sudo kill -9进程号
在win中不用开启redis服务器,通过ubantu的redis服务器连接成功
5、Redis的简单使用
启动redis服务:redis-server
启动服务:sudo service redis-server start
重启服务:sudo service resis-server restart
关闭服务:sudo service redis-server stop
上述命令适用于通过sudo apt install redis-server,不适用于通过make源码安装
dbsize:查看当前数据库的key数量
keys * :查看key的内容
flushdb:清空当前数据库的key的数量
flushall:清空所有库的key(慎用)
exists key 判断key是否存在
select insex:切换数据库
6、补充说明
6.1sudo
如果安装方式是sudo apt-get install redis那么它的启动方式可以直接service redis start
6.2make
如果是通过make源码安装的redis,启动的时候进入该文件下,不通过配置文件启动则是堵塞状态,用的默认方式开启,通过配置文件开启可以修改自己想要开启的状态
6.3验证是否开启redis
方法一:ps -aux | grep redis:检验关于redis的有哪些进程,命令本身也算一条
方法二:直接连接,如果没有开启服务端,连接不上
6.4关闭redis服务
方法一:kill -9 PID关闭进程
方法二:直接shutdown关闭服务端,exit退出客户端