Redis入门&&安装与配置

一. Redis简介

2008年,一个名为Salvatore Sanfilippo的程序员为他开发的LLOOGG项目定制了专属的数据库(因为之前他无论怎样优化MySQL,系统性能已经无法再提升了),这项工作的成果就是Redis的初始版本。后来他将Redis的代码放到了全球最大的代码托管平台Github,从那以后,Redis引发了大量开发者的好评和关注,继而有数百人参与了Redis的开发和维护,这使得Redis的功能越来越强大和性能越来越好。

Redis是 remote dictionary server 的缩写,它是一个用 ANSI C 编写的高性能的key-value存储系统,与其他的key-value存储系统相比,Redis有以下一些特点(也是优点):

  • Redis的读写性能极高,并且有丰富的特性(发布/订阅、事务、通知等)。
  • Redis支持数据的持久化(RDB和AOF两种方式),可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis支持多种数据类型,包括:string、hash、list、set,zset、bitmap、hyperloglog等。
  • Redis支持主从复制(实现读写分离)以及哨兵模式(监控master是否宕机并自动调整配置)。
  • Redis支持分布式集群,可以很容易的通过水平扩展来提升系统的整体性能。
  • Redis基于TCP提供的可靠传输服务进行通信,很多编程语言都提供了Redis客户端支持。

二. Redis的应用场景

1. 高速缓存

将不常变化但又经常被访问的热点数据放到Redis数据库中,可以大大降低关系型数据库的压力,从而提升系统的响应性能。

2. 排行榜

很多网站都有排行榜功能,利用Redis中的列表和有序集合可以非常方便的构造各种排行榜系统。

3. 商品秒杀/投票点赞

Redis提供了对计数操作的支持,网站上常见的秒杀、点赞等功能都可以利用Redis的计数器通过+1或-1的操作来实现,从而避免了使用关系型数据的update操作。

4. 分布式锁

利用Redis可以跨多台服务器实现分布式锁(类似于线程锁,但是能够被多台机器上的多个线程或进程共享)的功能,用于实现一个阻塞式操作。

5. 消息队列

消息队列和高速缓存一样,是一个大型网站不可缺少的基础服务,可以实现业务解耦和非实时业务削峰等特性,这些我们都会在后面的项目中为大家展示。

三. Redis的安装

可以通过在Redis的 官方网站 下载 Redis 的源代码,解压缩解归档之后通过 make 工具对源代码进行构建并安装。

wget http://101.44.1.120/files/318700000890F623/download.redis.io/releases/redis-5.0.8.tar.gz
tar -zxvf redis-5.0.8.tar.gz
cd redis-5.0.8
sudo make && sudo make install

四.Redis 的配置

在 redis 源代码目录下有一个名为redis.conf的配置文件,我们可以先查看一下该文件: vim redis.conf

  1. 配置将 Redis 服务绑定到指定的IP地址和端口。
bind 127.0.0.1
port 6379
  1. 设置后台运行 (以守护进程方式运行)
daemonize yes
  1. 设置日志级别, 可选值: (debug: 调试, verbose: 详细, notice: 通知, warning: 警告)
 loglevel warning
  1. 配置数据库的数量, 默认为 16 个
databases 16
  1. 配置数据写入规则
save 900 1     # 900 秒 (15 分钟) 内修改过 1 个 key, , 写入一次数据库
save 300 10    # 300 秒 (5 分钟) 内修改过 10 个 key, 写入一次数据库
save 60 10000  # 60 秒 (1 分钟) 内修改过 10000 个 key, 写入一次数据库
  1. 配置Redis的持久化机制 - RDB。
rdbcompression yes   # 压缩 RDB 文件
rdbchecksum yes      # 对 RDB 文件进行校验
dbfilename dump.rdb  # RDB 数据库文件的文件名
dir /var/local/redis               # RDB 文件保存的目录
  1. 配置Redis的持久化机制 - AOF。
appendonly no
appendfilename "appendonly.aof"
  1. 配置Redis的主从复制,通过主从复制可以实现读写分离。
# Master-Replica replication. Use replicaof to make a Redis instance a copy of
# another Redis server. A few things to understand ASAP about Redis replication.
#
#   +------------------+      +---------------+
#   |      Master      | ---> |    Replica    |
#   | (receive writes) |      |  (exact copy) |
#   +------------------+      +---------------+
#
# 1) Redis replication is asynchronous, but you can configure a master to
#    stop accepting writes if it appears to be not connected with at least
#    a given number of replicas.
# 2) Redis replicas are able to perform a partial resynchronization with the
#    master if the replication link is lost for a relatively small amount of
#    time. You may want to configure the replication backlog size (see the next
#    sections of this file) with a sensible value depending on your needs.
# 3) Replication is automatic and does not need user intervention. After a
#    network partition replicas automatically try to reconnect to masters
#    and resynchronize with them.
#
replicaof 主机IP地址 主机端口
  1. 配置慢查询
slowlog-log-slower-than 10000  # 一次操作超过 10000 毫秒被视作一次慢查询
slowlog-max-len 128            # 最多纪录 128 次满查询 

五. Redis的服务器和客户端

1. redis服务器

接下来启动 Redis 服务器,下面的方式将以指定的配置文件启动 Redis 服务。

redis-server redis.conf

2.redis 客户端

接下来用 Redis 客户端去连接服务器

redis-cli -h localhost -p 6379

六.Redis持久化

Redis在运行时,所有的数据都保存在内存里,进程结束以后,会将数据写入到硬盘中。启动时,会读取硬盘里的内容,并将内容全部加载到内存中(会大量的占用内存)。

Redis的持久化有两种形式:RDB和AOF

1.RDB

默认的持久化方式,是对内存中的数据进行镜像,并以二进制的形式保存到dump.rdb文件中。会根据配置文件的时间节点对文件进行持久化。

save 900 1
save 300 10
save 60 10000

优点:速度快,直接镜像内存里的数据,文件小。

缺点:数据有可能会丢失,在两次保存间隔内的数据,有可能会丢失。

2. AOF

AOF(Append only file)持久化,将修改的每一条指令记录进appendonly.aof中,需要修改配置文件,来打开aof功能。

appendfsync always:每次有新命令追加到aof文件时就执行一个持久化,非常慢但是安全
appendfsync everysec:每秒执行一次持久化,足够快(和使用rdb持久化差不多)并且在故障时只会丢失1秒钟的数据
appendfsync no:从不持久化,将数据交给操作系统来处理。redis处理命令速度加快但是不安全。

优点:适合保存增量数据,数据不丢失。

缺点:文件体积大,恢复时间长
在这里插入图片描述

七.存储条件注意事项

在这里插入图片描述

发布了12 篇原创文章 · 获赞 16 · 访问量 420

猜你喜欢

转载自blog.csdn.net/qq_41982039/article/details/105034323