一Redis介绍
(一)特点及有点
- 开源的,使用C编写,基于内存且支持持久化
- 高性能的Key-Value的NoSQL数据库
- 支持数据类型丰富,字符串strings,散列hashes,列表lists,集合sets,有序集合sorted sets 等
- 支持多种编程语言(C C++ Python Java PHP ... )
(二)与其他数据库对比
- MySQL : 关系型数据库,表格,基于磁盘,慢
- MongoDB:键值对文档型数据库,值为JSON文档,基于磁盘,慢,存储数据类型单一
- Redis的诞生是为了解决什么问题?? # 解决硬盘IO带来的性能瓶颈
(三)应用场景
- 使用Redis来缓存一些经常被用到、或者需要耗费大量资源的内容,通过这些内容放到redis里面,程序可以快速读取这些内容
- 一个网站,如果某个页面经常会被访问到,或者创建页面时消耗的资源比较多,比如需要多次访问数据库、生成时间比较长等,我们可以使用redis将这个页面缓存起来,减轻网站负担,降低网站的延迟,比如说网站首页等
(四)诞生历程
1、历史
LLOOGG.com 帮助别的网站统计用户信息,各个网站发送的浏览记录都会存储到存储队列,5-10000条记录,多余5条需要收费
2、原理
FIFO机制,先进先出,满了进一条就出一条,网站越多,队列越多,推入和弹出操作越多
3、技术及问题
开始使用MySQL进行硬盘读写,速度很慢,导致无法实时显示,所以自己写了一个列表结构的内存数据库,程序性能不会受到硬盘IO的限制,加了持久化的功能
4、redis数据库戛然而生
# 为了解决负载问题,所以发明了redis
(五)Redis附加功能
1、持久化
将内存中数据保存到磁盘中,保证数据安全,方便进行数据备份和恢复
2、过期键功能
为键设置一个过期时间,让它在指定时间内自动删除
<节省内存空间>
# 音乐播放器,日播放排名,过期自动删除
3、事务功能
原子的执行多个操作
4、主从复制
5、Sentinel哨兵
二安装
(一)Ubuntu
安装
sudo apt-get install redis-server
服务端启动
sudo /etc/init.d/redis-server status | start | stop | restart
客户端连接
redis-cli -h IP地址 -p 端口
redis-cli # 默认连接本机的6379端口
127.0.0.1:6379>ping
PONG
(二)Windows
1、下载安装包
https://github.com/ServiceStack/redis-windows/blob/master/downloads/redis-64.3.0.503.zip
2、解压
3、启动服务端
双击解压后的 redis-server.exe
4、客户端连接
双击解压后的 redis-cli.exe
问题:关闭终端后服务终止
解决:将Redis服务安装到本地服务
1、重命名 redis.windows.conf 为 redis.conf,作为redis服务的配置文件
2、cmd命令行,进入到redis-server.exe所在目录
3、执行:redis-server --service-install redis.conf --loglevel verbose
4、计算机-管理-服务-Redis-启动
卸载
到 redis-server.exe 所在路径执行:
1、redis-server --service-uninstall
2、sc delete Redis
三配置文件详解
(一)配置文件所在路径
1、Ubuntu
/etc/redis/redis.conf
2、windows 下载解压后的redis文件夹中
redis.windows.conf
redis.conf
(二)设置连接密码
1、requirepass 密码
2、重启服务
sudo /etc/init.d/redis-server restart
3、客户端连接
redis-cli -h 127.0.0.1 -p 6379 -a 123456
127.0.0.1:6379>ping
(三)允许远程连接 sudo vi /ect/redis/redis.conf
1、# 注释掉IP地址绑定69行
bind 127.0.0.1
2、# 关闭保护模式(默认开始,不允许外部网络访问)88行(把yes改为no)
protected-mode no
3、# 重启redis服务
sudo /etc/init.d/redis-server restart
(四)远程连接测试
Windows连接Ubuntu的Redis服务
# cmd命令行
1、d:
2、cd Redis3.0
3、redis-cli -h x.x.x.x -a 123456
4、x.x.x.x:6379>ping