Redis 构建缓存服务器

一、Redis 简介

        Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,也被称为数据结构服务器。它支持多种数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等,并提供了丰富的操作命令来处理这些数据结构。

Redis

Redis 构建缓存服务器_第1张图片

Redis 特点/优势 :

  1. 高性能:Redis是一个基于内存的数据存储系统,因此具有极快的读写速度。它能够每秒处理数十万次的读写操作,使其成为许多高性能应用程序的理想选择。
  2.  数据结构丰富:Redis支持多种数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。这使得Redis非常灵活,能够适应各种不同的应用需求。
  3. 数据持久化:Redis支持数据的持久化,可以将数据保存到磁盘上,以便在重启后恢复数据。它提供了两种持久化方式:快照(snapshotting)和日志(append-only file)。
  4. 高可用性:Redis支持主从复制(master-slave replication)和Redis Cluster,以提供高可用性和容错性。主从复制可以实现数据的热备份,而Redis Cluster可以将数据分布在多个节点上,提供更高的容量和可用性。
  5. 发布/订阅模式:Redis支持发布/订阅模式,允许多个客户端订阅特定的频道,并接收发布到该频道的消息。这对于实时通信和事件驱动的应用程序非常有用。
  6. 事务支持:Redis支持事务,可以将多个操作打包成一个原子操作,保证这些操作要么全部执行成功,要么全部失败。这确保了数据的一致性和完整性。
  7. 轻量级:Redis是一个轻量级的存储系统,具有较小的内存占用和快速的启动时间。这使得它非常适合于云环境和容器化部署。

Redis 为什么很快 

  • 内存存储:Redis将数据存储在内存中,而不是像传统的磁盘存储数据库那样将数据写入到硬盘上。由于内存的读写速度远远快于磁盘,因此Redis能够实现极快的读写性能。

  • 单线程模型:Redis采用单线程模型,每个Redis实例都由单个主线程来处理所有的客户端请求。虽然单线程看起来似乎会限制其性能,但这实际上是Redis的一大优势。单线程模型消除了多线程之间的竞争和锁等开销,使得Redis能够充分利用CPU资源,并且避免了多线程带来的复杂性。此外,Redis在内部使用了I/O多路复用技术(例如epoll或kqueue)来处理并发请求,使得单线程能够同时处理多个客户端连接。

  • 非阻塞IO:Redis使用了非阻塞IO,也就是在读写操作时不会阻塞其他操作。在读取数据时,如果内存中没有所需的数据,Redis会立即返回一个空结果,而不会等待数据从磁盘加载进来。这样即使在高并发情况下,Redis也能够快速地响应请求。

  • 高效的数据结构:Redis支持多种高效的数据结构,比如字符串、哈希、列表、集合、有序集合等。这些数据结构的设计和实现都非常高效,能够在常量时间内完成查找、插入、删除等操作,保证了Redis的高速性能。

  • 异步操作:Redis支持异步操作,比如异步持久化和异步复制。异步操作能够让Redis在进行磁盘持久化和主从复制时不会阻塞其他操作,提高了整体的性能。

  • 优化的网络协议:Redis使用RESP(Redis Serialization Protocol)作为网络协议,RESP是一种简单、高效的二进制协议。RESP协议的设计使得网络传输的数据量尽可能地减少,减少了网络传输的开销,提高了性能。

  • 原子性操作:Redis支持很多原子性操作,比如INCR、DECR、SETNX等。原子性操作能够在一条命令中完成多个操作,而且这些操作是不可中断的,保证了数据的一致性

二、Redis持久化

Redis 持久化策略有两种:

  • RDB:快照形式是直接把内存中的数据保存到一个 dump 的文件中,定时保存,保存策略。

  • AOF:把所有的对 Redis 的服务器进行修改的命令都存到一个文件里,命令的集合。Redis 默认是快照 RDB 的持久化方式。

如果非常关心你的数据,但仍然可以承受数分钟内的数据丢失,那么可以额只使用 RDB 持久。

AOF 将 Redis 执行的每一条命令追加到磁盘中,处理巨大的写入会降低Redis的性能,不知道你是否可以接受。

数据库备份和灾难恢复:定时生成 RDB 快照非常便于进行数据库备份,并且 RDB 恢复数据集的速度也要比 AOF 恢复的速度快。

当然了,Redis 支持同时开启 RDB 和 AOF,系统重启后,Redis 会优先使用 AOF 来恢复数据,这样丢失的数据会最少。

 三、Redis 安装部署

下载链接:http://download.redis.io/releases/redis-7.0.9.tar.gz

[root@redis ~]# wget http://download.redis.io/releases/redis-7.0.9.tar.gz

[root@redis ~]# tar xzf redis-7.0.9.tar.gz -C /opt

[root@redis ~]# cd /opt

[root@redis opt]# mv redis-7.0.9/ redis 

[root@redis opt]# cd redis

[root@redis redis]# yum install -y gcc make                                                     #安装编译工具

[root@redis redis]# make install

[root@redis redis]# vim redis.conf

bind 0.0.0.0
daemonize yes
logfile "/var/log/redis.log"

[root@redis redis]# redis-server redis.conf

Redis 构建缓存服务器_第2张图片

四、配置redis为systemctl启动

[root@redis redis]# cd /usr/lib/systemd/system

[root@redis system]# vim redis.service

[Unit]
Description=Redis
After=network.target

[Service]
ExecStart=/opt/redis/src/redis-server /opt/redis/redis.conf  --daemonize no
ExecStop=/opt/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown

[Install]
WantedBy=multi-user.target


• [Unit] 表示这是基础信息 
• Description 是描述
• After 是在那个服务后面启动,一般是网络服务启动后启动

• [Service] 表示这里是服务信息 
• ExecStart 是启动服务的命令
• ExecStop 是停止服务的指令

• [Install] 表示这是是安装相关信息 
• WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

 启动服务:
[root@redis system]# systemctl daemon-reload
[root@redis system]# systemctl start redis.service

登陆redis
[root@redis system]# cd /opt/redis/src/
[root@redis src]# ./redis-cli -h 192.168.246.202 -p 6379
192.168.246.202:6379> ping     ---测试redis是否可以用
PONG
192.168.246.202:6379> set name max    #设置key--name,并设置值
OK
192.168.246.202:6379> get name    #获取到key
"max"
192.168.246.202:6379>
单机版redis已经部署完成。将ip和端口发给开发就可以了。

你可能感兴趣的:(redis,数据库,缓存)