Redis系列之——介绍与单机版安装

Redis是由C语言开发的Key-Value数据结构系统,它是开源的,可以用作NoSQL数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串,散列,列表,集合,有序集合 。Redis内置了复制,LUA脚本, LRU驱动事件,事务和不同级别的磁盘持久化,并通过 Redis哨兵和自动分区提供高可用性。

全世界使用Redis最多的互联网企业就是新浪,因为新浪微博数据的特性,所以新浪大量使用Redis,新浪维护了一个规模庞大的Redis高可用集群来提供支持。

为什么需要NoSQL(Not Only Sql)

主要应对以下问题,传统关系型数据库力不从心。

  • 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优点

  1. 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s,因为Redis是把数据缓存到内存中的,当然Redis也可以周期性的把数据写到磁盘上 。 
  2. 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 
  3. 支持简单的事务 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 
  4. 丰富的特性 – Redis还支持 publish/subscribe,通知,key 过期等等特性。

Redis应用场景

  1. 排行榜,比如Top10
  2. 缓存数据
  3. 消息队列
  4. 分布式集群架构中的session分离
  5. 分布式锁的实现
  6. 计数器
  7. 网站访问统计
  8. 数据过期处理

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

提示找不到wget命令先执行下面命令安装wget

yum -y install wget

重新下载,解压

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系列之——介绍与单机版安装_第1张图片

第四步:复制redis.conf到/usr/local/redis/下

cd /home/data/redis
cp redis.conf /usr/local/redis/

Redis系列之——介绍与单机版安装_第2张图片

第五步:启动和关闭redis服务

启动redis就是执行redis里的bin里的redis-server命令,进入redis目录

cd /usr/local/redis/bin
./redis-server

Redis系列之——介绍与单机版安装_第3张图片

启动成功后如上图所示,红框部分是Redis的版本,以及单机运行模式,Redis的端口和PID。

这种启动是前台启动,假如退出程序就终止或者退出了。所以需要改为后端运行,我们通过修改配置文件redis.conf来操作。

ctrl+c 退出当前程序,然后编辑redis.conf文件

vi /usr/local/redis/redis.conf 

找到这一行

Redis系列之——介绍与单机版安装_第4张图片

将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退出

Redis系列之——介绍与单机版安装_第5张图片

到此为止就安装成功了。

第七步,配置远程访问并设置密码

vi /usr/local/redis/redis.conf 

找到bind 127.0.0.1这行前面添加#注释掉

找到protected-mode yes 把yes改成no

找到#requirepass foobared 这行去掉注释 把foobared改成自己的密码

注意:关于bind属性的误区

网上能看到很多人对于bind的解释,都是说bind指定的地址是redis允许接受请求连接的地址,比如 bind 127.0.0.1则是指限制只有本机可以连接Redis,这个理解是错误的!!!!

bind 真正的含义是是绑定本机的IP地址,(准确的是:本机的网卡对应的IP地址,每一个网卡都有一个IP地址),而不是redis允许来自其他计算机的IP地址。

如果指定了bind,则说明只允许来自指定网卡的Redis请求。如果没有指定,就说明可以接受来自任意一个网卡的Redis请求。

保存退出

重新启动redis

再次连接客户端提示(error) NOAUTH Authentication required.

表示需要密码,使用如下方式重新连接就好了 -a后面是密码

关闭redis服务

bin/redis-cli -a 123456  shutdown

或者

kill 进程

或者

pkill redis-server

 

你可能感兴趣的:(Redis)