学习Redis,是一种怎样的体验(1) - 安装篇

465 阅读7分钟

学习Redis,是一种怎样的体验

兄弟们Redis撸起来!

Redis是什么

首先让我们看下来自官网翻译过来的Redis介绍:

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串,散列,列表,集合,有序集合与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

简单来说Redis是一个开源的高性能缓存数据库,使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库。其中value可以是 strings、hashes、lists、sets、sorted、sets等多种数据结构,可以满足很多应用场景。还提供了键过期、发布订阅、事务、流水线等附加功能。

这么说也不简单,那我们举个例子:小明每次回家的时候,都要从书包掏出一把钥匙串(这里就相当于数据存放在了数据库),然后在这把钥匙串里找到大门的钥匙,最后打开大门。这个时候小明灵机一动,配了一把备用钥匙放到了家门口地毯下(这里相当于把数据存入Redis),等他再回家开门的时就不用去书包翻找钥匙了,而是直接从门口地毯下找出钥匙(这里相当于降低访问数据库IO,使用Redis缓存数据),这样就节约了很多时间。有一天小明不小心把地毯下的备用钥匙放到了客厅里,就只好使用书包里的钥匙开门(这里相当于缓存过期了,访问数据库读取数据),进到客厅后把备用钥匙又放到门口地毯下(这里相当于如果读去Redis时没有数据,就把读取到的数据库中数据存入Redis中),以便下次使用。

这样我们就可以清楚知道Redis的作用了:能快速响应,减少应用程序执行效率、减轻数据库io的压力

Redis的特点

1. 速度快

Redis执行命令的速度非常快,根据官方提供的数据读写性能可以达到10万/秒,当然这也取决于机器的性能。Redis如此之快的速度可以大致归纳为以下三点:

  • 所有数据都是存放在内存中的,所以把数据放在内存中是Redis速度快的最主要原因(可持久化)。
  • Redis是用C语言实现的,一般来说C语言实现的程序“距离”操作系统更近,执行速度相对会更快。
  • Redis使用了单线程架构,预防了多线程之间产生的资源竞争问题。

2. 键值对的数据结构服务器

Redis中的值不仅可以是字符串,而且还可以是其它的数据结构,比如:字符串、哈希、列表、集合、有序集合等。

3. 丰富的功能

Redis还提供了许多额外的功能:

  • 提供了键过期功能,可以用来实现缓存。
  • 提供了发布订阅功能,可以用来实现消息系统。
  • 支持Lua脚本功能,可以利用Lua创造出新的Redis命令。
  • 提供了简单的事务功能,能在一定程度上保证事务特性,Redis是弱事务。
  • 提供了流水线(Pipeline)功能,这样客户端能将一批命令一次性传到Redis,减少了网络的开销

4. 简单稳定

Redis的简单主要表现在三个方面。

  • Redis的源码很少。
  • Redis使用单线程模型,这样不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变得简单。
  • Redis不需要依赖于操作系统中的类库

5. 持久化

将数据放在内存中是不安全的,机器一旦因为某些原因重启了,重要的数据就会丢失,因此Redis提供了两种持久化方式:RDB和AOF,即可以用两种策略将内存的数据保存到硬盘中,这样就保证了数据的可持久性。

6. 主从复制

Redis提供了复制功能,实现了mastersalve数据副本之间的复制,主从复制功能是分布式Redis的基础。

7. 高可用和分布式转移

Redis从2.8版本正式提供了高可用实现Redis Sentinel(哨兵模式),它能够保证Redis节点的故障发现和故障自动转移。

Redis从3.0版本正式提供了分布式实现Redis Cluster(集群模式),它是Redis真正的分布式实现,提供了高可用、读写和容量的扩展性

8. 客户端语言多

Redis提供了简单的TCP通信协议,很多编程语言可以很方便地接入到Redis,例如Java、PHP、Python等。

Redis使用场景

1. 热点数据的缓存

比如缓存高频次访问的数据,降低数据库io。另外结合expire,我们可以设置过期时间然后再进行缓存更新操作

2. 消息队列

由于Redis有list push和list pop这样的命令,所以能够很方便的执行队列操作。

3. 数据统计

如电商网站商品的浏览量、视频网站视频的播放数等

4. 社交网络

点赞、好友等相互关系的存储

如何学习Redis

说了这么多,如果想获取更多更准确的关于Redis详细信息,请参考下面几个关于Redis的网站

Redis安装

好了,闲话少说,兄弟们让我们遨游在Redis的海洋里。

目前Redis支持windowslinux两种操作系统,对于windows的安装方式本章不做讲解。对于Linux下, 简单的介绍两种安装方式,在线安装和安装包安装。下面的安装步骤都是以能启动Redis并连接使用为目的,其它额外的属性配置本我们就不做详解了,大家有兴趣可以自己研究下。

方式一、在线安装

1. 更新yum源

sudo yum install epel-release
sudo yum update

2. 安装Redis

sudo yum -y install redis

3. 启动Redis服务

sudo systemctl start redis

4. 查看Redis进程

[root@VM_0_2_centos /]# ps -ef|grep redis
redis    12010     1  0 20:50 ?        00:00:06 /usr/bin/redis-server *:6379
root     32387 19488  0 23:14 pts/0    00:00:00 grep --color=auto redis

5. 修改配置文件

另外,为了可以是redis能被远程连接,需要修改配置文件,路径为 /etc/redis.conf

vi /etc/redis.conf

# 开启远程连接,取消这一行注释:
#bind 127.0.0.1

另外,推荐给Redis设置密码,取消注释这一行:
#requirepass foobared
#foobared即当前密码,可以自行修改为
requirepass 密码

# 配置redis为后台启动
daemonize no
# 修改为
daemonize yes

6. 重启Redis服务

sudo systemctl restart redis

使用redis-cli进入redis命令行模式进行操作

[root@VM_0_2_centos bin]# /usr/bin/redis-cli

如果有密码, 使用密码登录

[root@VM_0_2_centos bin]# ./redis-cli -h 127.0.0.1 -p 6379 -a 密码
127.0.0.1:6379> get aaa
"123"
127.0.0.1:6379> get aaa

7. 其它命令

systemctl start redis.service #启动redis服务器

systemctl stop redis.service #停止redis服务器

systemctl restart redis.service #重新启动redis服务器

systemctl status redis.service #获取redis服务器的运行状态

systemctl enable redis.service #开机启动redis服务器

systemctl disable redis.service #开机禁用redis服务器

方式二、安装包安装

1. 获取redis安装包资源

有安装包就不用下载了

wget http://download.redis.io/releases/redis-4.0.8.tar.gz

2. 解压

tar xzvf redis-4.0.8.tar.gz

3. 安装

cd redis-4.0.8
make
cd src
make install PREFIX=/usr/local/redis

4. 移动配置文件到安装目录下

cd ../
mkdir /usr/local/redis/etc
mv redis.conf /usr/local/redis/etc

5. 配置Redis为后台启动

vi /usr/local/redis/etc/redis.conf //将daemonizeno 改成daemonize yes

6. 将Redis加入到开机启动

vi /etc/rc.local 
在里面添加内容:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
(意思就是开机调用这段开启redis的命令)

7. 开启Redis

/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
可以新建redisStart.sh脚本 放入上面的命令名授权
chmod 777 redisStart.sh

8 关闭Redis

/usr/local/redis/bin/redis-server -h 127.0.0.1 -p 6379 shutdown
# 慎用 kill -9 kid

最后

好了,以上就是本篇的内容,主要是对Redis的入门与安装的讲解,后续我们深入了解Redis的各项功能。