本文将从Redis简介、Redis特性回顾、Redis安装、Redis典型应用场景四部分进行介绍Redis,读完本文,你将会对Redis的特性和功能有初步的了解。
Redis简介
Redis是什么?
Redis是一个开源的(BSD许可)、速度非常快的非关系数据库(non-relational database),它可以存储键(key)与5中不同数据类型的值(value)之间的映射(mapping)。了解Redis数据结构可以参考Redis数据结构和常用API。
谁在使用Redis?
GitHub、Twitter、Stack Overflow阿里巴巴、百度、微博…
Redis特性回顾
速度快
Redis能读的速度是110000次/s,写的速度是81000次/s 。
思考:Redis速度为什么这么快?
其实,Redis的数据存储于内存中。有计算机方面基础知识的知道,从寄存器到硬盘,速度越来越慢,空间越来越大,价格越来越便宜,正如下面这张图所示:
下面这张表更直观:
类型 | 每秒读写次数 | 随机读写延迟 | 访问带宽 |
内存 | 千万级 | 80ns | 5GB |
SSD盘 | 35000 | 0.1-0.2ms | 100-300MB |
机械盘 | 100左右 | 10ms | 100MB左右 |
因为Redis数据存储于内存中,所以速度性能优于存储于硬盘的MySQL数据库。
持久化(断电不丢失数据)
Redis所有数据保持在内存中,对数据的更新将异步保存到磁盘上。
Redis拥有两种不同形式的持久化方法,他们都可以用小而紧凑的格式将存储在内存中的数据写入硬盘:第一种持久化方法为时间点转储(point-in-time dump),转储操作既可以在“指定时间段内有指定数量的写操作执行”这一条件被满足时执行,又可以通过调用两条转储到硬盘命令中的任何一条来执行;第二种持久化方法将所有修改了的数据库的命令都写入一个只追加文件里面,用户可以根据数据的重要程度,将只追加写入设置为从不同步、每秒同步一次或者每写入一个命令就同步一次。
多种数据结构
Redis支持 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
另外还有BitMap:位图;HyperLogLog:超小内存唯一值计数;GEO:地理信息位置。
支持多种编程语言
Redis支持Java、PHP、Python、Ruby、Lua、Node Js等编程语言。
功能丰富
Redis支持发布订阅、Lua脚本、事务、pipeline(流水线)等功能。
简单
Redis不依赖外部数据库;
Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。
主从复制
执行复制的从服务器会连接上主服务器,接收主服务器发送的整个数据库的初始副本;之后主服务器执行的写命令,都会被发送给所有连接着的从服务器去执行,从而实现实时更新从服务器的数据集。因为从服务器包含的数据会不断地进行更新,所以客户端可以向任意一个从服务器发送读请求,以此来避免对主服务器进行集中式的访问。
高可用、分布式
Redis-Sentinel(v2.8)支持高可用
Redis-Cluster(v3.0)支持分布式
Redis安装
Linux安装(Centos 7为例)
下载压缩包:
$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz
解压文件:
$ tar xzf redis-5.0.3.tar.gz
进入解压目录:
$ cd redis-5.0.3
编译安装:
$ make MALLOC=libc
注意:请确保机器已经安装过gcc和gcc-c++,不然会有报错:运行Redis服务器:
$ src/redis-server
Windows安装
下载地址:https://github.com/MSOpenTech/redis/releases。
下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。
双击redis-server.exe即可启动:
如果想方便的话,可以把 redis 的路径加到系统的环境变量里,可以直接通过redis-server启动。
可执行文件说明
redis-server:Redis服务器
redis-cli:Redis命令行客户端
redis-benchmark:Redis性能测试工具
redis-check-aof:AOF文件修复工具
redis-check-dump:RDB文件检查工具
redis-sentinel:Sentinel服务器
启动方法和如何选择
直接启动:上面Centos 7的启动方式是直接启动后台启动:
1.修改redis.conf文件:修改daemonize为yes,即默认以后台程序方式运行。
常用配置:
daemonize -->是否是守护进程(no|yes) port --> Redis对外端口号 logfile -->Redis日志系统 dir -->Redis工作目录
2.然后使用redis.conf启动
cd redis-5.0.3/ ./redis-server /usr/local/redis-5.0.3/redis.conf
如何选择?生产环境选择配置启动单机多实例配置文件可以用端口区分开
Redis典型使用场景
缓存系统
计数器:转发数、点赞数、播放数等
消息队列系统
排行榜
社交网络
实时系统