什么是Redis

Redis是nosql(not only sql,非关系型数据库 常用nosql的有:Redis/MongoDB/Hbase Hadoop)
原官网,中文官网,他是一个开源的,构建在内存中的数据库,众所周知内存的读写速度远高于硬盘,不过也无需担心Redis是否会因为断电等客观因素造成数据丢失,因为Redis会对数据做持久化存储.。

Redis特性

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)数据类型
  • Redis支持数据的备份

为什么用Redis

当下已有技术相当成熟的MySQL,SQL Sever, Oracle ,等相当成熟的数据库的情况下,Redis却还能快速崛起,离不开其中优秀的性能,他将数据存入内存的做法让其的读写速度远远超越大多数数据库,并且nosql相较于SQL语句更加简洁易上手。
大数据时代的来临让关系型数据应付并发性高,实时性高的,并且数据格式不固定的数据越加吃力,这时候nosql的出现,有效的缓解了这一情况,让服务器在高并发的场景下能有更好的性能。
Redis应用场景:点赞/秒杀/直播平台的在线好友列表/商品排行榜/单点登录。
虽然Redis也有持久化存储的功能,但大多数情况下都还是会配合关系型数据库使用,如下图,Redis会作为一个中转站,用来存储一些变化较快的信息,然后在逐步存入数据库。
在这里插入图片描述
Reids一般通过一些脚本才能和MySQL等关系型数据库交互,比如说使用Python就可以连接Redis和MySQL。

Redis基础配置

Redis如何安装,此篇博客中包含大部分常用系统都Redis安装方法。
Redis的配置文件为redis.conf
Windows系统的redis.conf文件在你解压|安装目录下可以找到,Linux系统会根据系统不同,而所在位置有所改变,一般kali,ubuntu,debian等使用apt包管理器的配置路径为/etc/redis/redis.conf,而像contos这种使用yum包管理器的一般配置文件路径为/etc/redis.conf

redis.conf 常用配置 作用
daemonize no 守护进程,默认关闭,类似于Windows中的后台服务(只有Linux系统支持,Windows可以根据我上述安装教程中的方法将其添加进服务中进行后台运行)
pidfile /var/run/redis.pid Linux系统中的守护进程的名称,以及守护进程所在位置(5.+版本默认为:/var/run/redis/redis-server.pid)
port 6379 监听端口(据说默认为6379原因是redis喜欢的一位女歌手[MERZ]的名字在九宫格上的位置)
bind 127.0.0.1 绑定主机端口,默认为127.0.0.1
timeout 300 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能
loglevel notice 指定日志记录级别,Redis 总共支持四个级别:调试(debug)、详细(verbose)、通知(notice)、警告(warning) 。默认为 通知(notice)
logfile stdout 日志记录方式,默认为标准输出,如果配置 Redis 为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给 /dev/null
databases 16 设置数据库的数量,连接redis时默认连接数据库为0,可以使用SELECT 命令在连接上指定数据库id
save <时间> <变化>
默认为:
save 900 1
save 300 10
save 60 10000
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(做持久化的频率)。Redis 默认配置表示 900 秒(15 分钟)内有 1 个更改,300 秒(5 分钟)内有 10 个更改以及 60 秒内有 10000 个更改。
rdbcompression yes 指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大
dbfilename dump.rdb 指定本地数据库文件名,默认值为 dump.rdb
dir ./ 指定本地数据库存放目录
slaveof <主机IP> <主机端口> 主从配置项,设置当本机为从机服务时,设置主机IP地址及端口,在 Redis 启动时,它会自动从主机进行数据同步
masterauth <主机密码> 当主机服务设置了密码保护时,从机服务连接主机的密码
requirepass foobared 设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH <密码> 命令提供密码,默认关闭
maxclients 128 设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息
maxmemory <字节> 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区
appendonly no 指定是否在每次更新操作后进行日志记录,Redis 在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis 本身同步数据文件是按上面 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为 no
appendfilename appendonly.aof 指定更新日志文件名,默认为 appendonly.aof
appendfsync everysec 指定更新日志条件,共有 3 个可选值:
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用 fsync() 将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折中,默认值)
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
activerehashing yes 指定是否激活重置哈希,默认为开启
include /path/to/local.conf 指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件