1. Redis介绍
1.1 什么是redis
- Redis 是用C语言开发的一个开源的高性能键值对( key-value )内存数据库,它是一种 NoSQL 数据库。
- 它是【单进程单线程】的内存数据库,所以说不存在线程安全问题。
- 它可以支持并发 10W QPS,所以说性能非常优秀。之所以单进程单线程性能还这么好,是因为底层采用了【IO 多路复用(NIO思想)】
- 相比Memcache这种专业缓存技术,它有更优秀的读写性能,及丰富的数据类型。
- 它提供了五种数据类型来存储【值】:字符串类型(string)、散列类型(hash)、列表类型(list)、集合 类型(set)、有序集合类型(sortedset也称为zset)
1.2 Redis官网
- 官网地址:http://redis.io/
- 中文官网地址:http://www.redis.cn/
- 下载地址:http://download.redis.io/releases/
1.3 什么是NoSQL
- NoSQL ,即 Not-Only SQL (不仅仅是 SQL ),泛指非关系型的数据库。
- 什么是关系型数据库?数据结构是一种有行有列的数据库 。
- NoSQL 数据库是为了解决高并发、高可用、高可扩展、大数据存储问题而产生的数据库解决方案。
- NoSQL 可以作为关系型数据库的良好补充,但是不能替代关系型数据库。
MySQL(关系型数据库) ---> NoSQL ---> NewSQL(TiDB)
1.4 NoSQL数据库分类
- 键值(Key-value)存储数据库
相关产品 | Tokyo Cabinet/Tyrant 、 Redis 、 Voldemort 、 Berkeley DB |
典型应用 | 内容缓存,主要用于处理大量数据的高访问负载。 |
数据模型 | 一系列键值对 |
优势 | 快速查询 |
劣势 | 存储的数据缺少结构化 |
- 列存储数据库
相关产品 | Cassandra , HBase , Riak |
典型应用 | 分布式的文件系统 |
数据模型 | 以列簇式存储,将同一列数据存在一起 |
优势 | 查找速度快,可扩展性强,更容易进行分布式扩展 |
劣势 | 功能相对局限 |
- 文档型存储数据库
相关产品 | CouchDB 、 MongoDB |
典型应用 | Web 应用(与 Key-Value 类似, Value 是结构化的) |
数据模型 | 一系列键值对 |
优势 | 数据结构要求不要个 |
劣势 |
- 图形(Graph)数据库
相关产品 | Neo4J 、 InfoGrid 、 Infinite Graph |
典型应用 | 社交网络 |
数据模型 | 图结构 |
优势 | 图结构的相关算法 |
劣势 | 需要对整个图做计算才能得出结果,不容易做分布式的集群方案 |
1.5 Redis的应用场景
- 内存数据库(登录信息、购物车信息、用户浏览记录等)
- 缓存服务器(商品数据、广告数据等等)(最多使用)
- 解决分布式集群架构中的 session 分离问题( session 共享)
- 任务队列(秒杀、抢购、12306等等)
- 分布式锁的实现
- 支持发布订阅的消息模式
- 应用排行榜(有序集合)
- 网站访问统计
- 数据过期处理(可以精确到毫秒)
2. Redis单机版安装
Redis 没有官方的 Windows 版本,所以建议在 Linux 系统上安装运行,在此使用CentOS 7 作为安装环境。
2.1 安装c语言需要的GCC环境
yum install -y gcc-c++
# 若系统中没有wget命令,需要安装
yum install -y wget
2.2 下载并解压Redis源码压缩包
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
tar -zxf redis-5.0.4.tar.gz
2.3 编译 Redis 源码,进入 redis-5.0.4 目录,执行编译命令
cd redis-5.0.4
make
2.4 安装 Redis ,需要通过 PREFIX 指定安装路径
#PREFIX的路径可以自己定义
make install PREFIX=/usr/local/soft/redis
3. Redis服务启动
前端启动
- 启动命令:redis-server,直接运行redis的安装目录下的bin/redis-server以前端模式启动
./redis-server
- 关闭命令:Ctrl + C
- 启动缺点:客户端关闭则redis-server程序结束
- 启动图例:
后端启动(守护进程启动)
- 拷贝redis-5.0.4/bin/redis.conf配置文件到Redis安装目录的bin下
cp /redis-5.0.4/bin/redis.conf /usr/local/soft/redis/bin
- 修改redis.conf文件,修改为支持守护进程启动
vim redis.conf
# 将daemonize 由no改为yes
daemonize yes
# 默认绑定的是回环地址,默认不能被其他机器访问
# bind 127.0.0.1
# 是否开启保护模式,由yes该为no
protected-mode no
- 启动服务
./redis-server redis.conf
- 关闭服务
# 第一种方式
./redis-cli shutdown
# 第二种
# 查出redis的进程号
ps -ef|grep redis
# 或者用这种方式查进程号, 6379为当前redis的端口号
lsof -i:6379
# 查出进程号后,kill掉
kill -9 pid
4. Redis客户端
Redis命令行客户端
- 命令格式
./redis-cli -h 127.0.0.1 -p 6379
- 参数说明
-h:redis服务器的ip地址
-p:redis实例的端口号
- 默认方式
# 如果不指定具体的ip和端口号,
# 默认是127.0.0.01 , 6379
./redis-cli