什么是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实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件 |