Redis是由C语言开发的Key-Value数据结构系统,它是开源的,可以用作NoSQL数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串,散列,列表,集合,有序集合 。Redis内置了复制,LUA脚本, LRU驱动事件,事务和不同级别的磁盘持久化,并通过 Redis哨兵和自动分区提供高可用性。
为什么需要NoSQL
主要应对以下问题,传统关系型数据库力不从心。
- High performance 高并发读写
- Huge Storage 海量数据的高效率存储和访问
- High Scalablility && High Availability 高可扩展性和高可用性
Redis和同类产品的比较
做为数据库
Redis可以看做一个Key-Value型非关系数据库,因为Redis会根据配置定时将内存中的数据写入到硬盘中,这样即便重启以后依然可以恢复,但是有两个缺点:
- Redis只能存储Key-Value类型,虽然Value的类型可以有多种,但是对于关联性的记录查询,没有Oracle、Mysql等关系型数据库方便。
- Redis内存数据写入硬盘有一定的时间间隔,在这个间隔内数据可能会丢失,虽然后续会介绍各种模式来保证数据丢失的可能性,但是依然会有可能,所以对数据有严格要求的不建议使用Redis做为数据库。
做为高速缓存
Ehcache
是一个Java开源项目,支持分布式集群,使用的方式就是引入一个jar包,非常方便。
Memcached
如果开启多线程模式,读取速度将有极大的提高;数据只会存储在内存中,挂掉后数据不可恢复,value的类型只能是字符串,且最大为1M。
Redis
Redis和Memcached一样都是把数据缓存到内容中的,但是Redis可以将数据持久化到磁盘上,而且速度比Memcached快很多。Redis的value值支持多种数据结构,且最大可存储1G的数据,支持主从,Sentinal,分片等多种高级特性,用于负载均衡和容灾,具有高可用性,几乎支持所有语言的客户端。
做为消息队列
Redis
只能说具备发布订阅功能,一个或多个消费者订阅一个频道。
Kafka
高级特性一应俱全,集群、负载均衡、动态扩容、数据备份等。
Redis优点
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 支持事务 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
- 丰富的特性 – Redis还支持 publish/subscribe,通知,key 过期等等特性。
Redis应用场景
- 排行榜,比如Top10
- 缓存
- 任务队列
- 分布式集群架构中的session分离
- 计数器
- 缓存
- 网站访问统计
- 数据过期处理
Centos7安装Redis
第一步:安装gcc,gcc是编译c的,因为redis是c编写的,所以我们先安装下gcc
yum install gcc-c++
第二步:wget方式下载redis压缩包,并解压,以及编译
下载到/home/data下
cd /home/data
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
解压
tar -zxvf redis-3.2.9.tar.gz
编译:
cd redis-3.2.9
make
第三步:安装redis,安装到/usr/local/redis/
make PREFIX=/usr/local/redis install
第四步:复制redis.conf到/usr/local/redis/下
cd /home/data/redis
cp redis.conf /usr/local/redis/
第五步:启动和关闭redis服务
启动redis就是执行redis里的bin里的redis-server命令,进入redis目录
cd /usr/local/redis/bin
./redis-server
启动成功后如上图所示,红框部分是Redis的版本,以及单机运行模式,Redis的端口和PID。
这种启动是前端或者前台启动,假如退出程序就终止或者退出了。所以需要改为后端运行,我们通过修改配置文件redis.conf来操作。
ctrl+c 退出当前程序,然后编辑redis.conf文件
vi /usr/local/redis/redis.conf
找到这一行
将daemonize修改为yes,然后esc退出,:!wq保存。
进入redis目录,加载配置文件运行
cd /usr/local/redis/bin
./redis-server ../redis.conf
查看redis进程
ps -ef | grep redis
停止redis
cd /usr/local/redis/bin
./redis-cli shutdown
查看redis进程
第六步,基本使用
cd /usr/local/redis/bin
./redis-cli
保存一个字符串类型的值
set name xxx
取出name值
get name
exit退出
到此为止就安装成功了。