为了账号安全,请及时绑定邮箱和手机立即绑定

Redis安装学习:从入门到上手实战

标签:
Redis
概述

Redis安装学习涵盖了从下载到配置的全过程,包括Windows和Linux环境下的详细安装步骤。文章还介绍了Redis的基本操作和配置优化方法,帮助读者掌握Redis的使用技巧。

Redis简介与应用场景
Redis是什么

Redis 是一个开源的、基于内存的数据结构存储系统,用作数据库、缓存和消息中间件。Redis 由 Salvatore Sanfilippo 用 C 语言编写,于 2009 年公开发布。Redis 是 RE mote DI ctionary Server 的缩写,意指远程字典服务。

Redis的主要特点
  • 内存存储:Redis 是一个内存数据库,这意味着它将数据存储在内存中,以提供快速的读写操作。
  • 多种数据类型:Redis 支持多种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等。
  • 持久化:Redis 提供两种持久化机制:RDB(定期快照)和 AOF(追加文件)。这两种机制可以确保在服务器重启后数据不会丢失。
  • 高可用性:Redis 支持主从复制(Master-Slave Replication)和哨兵(Sentinel)模式,以确保高可用性和数据冗余。
  • 发布和订阅:Redis 提供了发布/订阅功能,允许客户端订阅特定频道的消息。
  • 事务支持:Redis 支持事务,可以保证一组命令的原子性。
  • Lua 脚本:Redis 支持在服务器端执行 Lua 脚本,以实现复杂的业务逻辑。
Redis的应用场景
  • 缓存:Redis 可以作为缓存层,减少后端数据库的访问压力,提高响应速度。
  • 会话存储:将用户会话存储在 Redis 中,以实现会话共享,提高系统可扩展性。
  • 消息队列:Redis 可以作为消息队列,实现异步处理和解耦服务。
  • 计数器:存储和更新高频计数器,如网站访问量统计。
  • 实时分析:实时收集和分析数据,如实时排行榜、实时统计等。
Redis安装指南
Windows环境下的Redis安装
  1. 下载 Redis

  2. 解压下载的文件

    • 将下载的 zip 文件解压到任意目录。
  3. 创建配置文件

    • 在解压目录中创建一个名为 redis.windows.conf 的配置文件,内容可以参考 Redis 官方的示例配置文件。
    • 配置文件示例:
      # Redis 配置文件示例
      bind 127.0.0.1
      port 6379
      timeout 0
      loglevel notice
      logfile ""
      databases 16
      rdbcompression yes
      save 900 1
      save 300 10
      save 60 10000
      stop-writes-on-bgsave-error yes
      rdbchecksum yes
      dir ./
      appendonly no
      appendfilename "appendonly.aof"
      appendfsync everysec
      no-appendfsync-on-rewrite no
      auto-aof-rewrite-percentage 100
      auto-aof-rewrite-min-size 64mb
      aof-load-truncated yes
      aof-use-rdb-compression yes
      lua-time-limit 5000
      slowlog-log-slower-than 10000
      slowlog-max-len 128
      timeout 0
      notify-keyspace-events ""
      hash-max-ziplist-entries 512
      hash-max-ziplist-value 64
      list-max-ziplist-entries 512
      list-max-ziplist-value 64
      set-max-intset-entries 512
      zset-max-ziplist-entries 128
      zset-max-ziplist-value 64
      hz 10
      activerehashing yes
      client-output-buffer-limit normal 0 0 0
      client-output-buffer-limit slave 256mb 64mb 60
      client-output-buffer-limit pubsub 32mb 8mb 60
      eviction-policy noeviction
      maxmemory-policy noeviction
      maxmemory 0
  4. 安装 Redis CLI

    • 下载 Redis CLI 并安装,以便可以在命令行中操作 Redis。
    • 将 Redis CLI 的可执行文件路径添加到系统环境变量中。
  5. 启动 Redis 服务
    • 打开命令提示符窗口。
    • 跳转到 Redis 解压目录。
    • 使用以下命令启动 Redis 服务:
      redis-server redis.windows.conf
    • 检查 Redis 是否启动成功,可以通过访问 http://localhost:6379 或者使用 Redis CLI 进行连接。
    • 示例代码:
      redis-cli ping
Linux环境下的Redis安装
  1. 安装 Redis

    • 在 Ubuntu 系统上安装 Redis 可以使用 apt-get 命令:
      sudo apt-get update
      sudo apt-get install redis-server
  2. 确认 Redis 服务是否已安装

    • 安装完成后,可以通过以下命令确认 Redis 是否已经成功安装:
      redis-server -v
    • 如果输出 Redis 的版本信息,说明安装成功。
  3. 启动 Redis 服务
    • 使用以下命令启动 Redis 服务:
      sudo service redis-server start
    • 如果 Redis 服务已安装并配置为开机启动,可以使用以下命令确保服务正在运行:
      sudo service redis-server status
Redis服务启动与停止
  • 启动 Redis 服务

    • 在 Linux 系统上,可以通过 redis-server 命令启动 Redis 服务:
      redis-server /etc/redis/redis.conf
    • 如果 Redis 配置文件路径不同,可以使用类似 redis-server /path/to/your/redis.conf 的命令启动。
  • 停止 Redis 服务
    • 在 Linux 系统上,可以使用以下命令停止 Redis 服务:
      sudo service redis-server stop
    • 或者可以使用如下命令:
      redis-cli shutdown
Redis基础操作
Redis数据类型的介绍

字符串(String)

  • 字符串是最基本的数据类型,可以保存字符串、整数或二进制。
  • 操作字符串的常见命令包括 SET、GET、INCR、DECR 等。
  • 示例代码:
    SET key1 "Hello, Redis!"
    GET key1
    INCR key2
    DECR key2

哈希(Hash)

  • 哈希类型用于存储键值对集合,类似于字典或散列。
  • 常见操作包括 HSET、HGET、HGETALL 等。
  • 示例代码:
    HSET user1 name "John"
    HSET user1 age 30
    HGET user1 name
    HGETALL user1

列表(List)

  • 列表用于存储有序的字符串列表,支持在列表头尾进行插入和删除。
  • 常见操作包括 LPUSH、RPUSH、LPOP、RPOP、LRANGE 等。
  • 示例代码:
    LPUSH mylist "item1"
    RPUSH mylist "item2"
    LPOP mylist
    RPOP mylist
    LRANGE mylist 0 -1

集合(Set)

  • 集合类型用于存储不重复的字符串成员。
  • 支持集合间的并集、交集和差集操作。
  • 常见操作包括 SADD、SMEMBERS、SPOP、SUNION、SDIFF 等。
  • 示例代码:
    SADD myset1 "item1"
    SADD myset1 "item2"
    SMEMBERS myset1
    SPOP myset1
    SUNION myset1 myset2
    SDIFF myset1 myset2

有序集合(Sorted Set)

  • 有序集合与集合类似,但成员带有分数,支持根据分数排序。
  • 常见操作包括 ZADD、ZRANGE、ZRANK、ZREVRANGE 等。
  • 示例代码:
    ZADD myzset 1 "item1"
    ZADD myzset 2 "item2"
    ZRANGE myzset 0 -1
    ZRANK myset1 "item1"
    ZREVRANGE myzset 0 -1

位图(Bitmap)

  • 位图是一种特殊的数据类型,可以用来统计和操作二进制位。
  • 常见操作包括 SETBIT、GETBIT、BITCOUNT 等。
  • 示例代码:
    SETBIT mybitmap 0 1
    SETBIT mybitmap 1 1
    GETBIT mybitmap 0
    BITCOUNT mybitmap

位场(HyperLogLog)

  • 位场用于估算数据集的唯一元素数量,特别适用于大数据量场景。
  • 常见操作包括 PFADD、PFCOUNT 等。
  • 示例代码:
    PFADD myhll "item1"
    PFADD myhll "item2"
    PFCOUNT myhll
Redis命令行的基本操作
  • 连接 Redis 服务器

    • 使用 redis-cli 命令连接到本地 Redis 服务器:
      redis-cli
    • 如果 Redis 服务器运行在远程机器上,可以使用 -h-p 选项指定 IP 地址和端口:
      redis-cli -h 192.168.1.1 -p 6379
  • 执行命令

    • 在命令行中输入 Redis 命令并按回车执行。例如:
      SET key1 "Hello, Redis!"
      GET key1
    • 多个命令可以一起执行,每条命令之间用分号 ; 分隔:
      SET key1 "Hello, Redis!"; GET key1
  • 查看帮助

    • 使用 HELP 命令查看所有可用命令及其简要说明:
      HELP
    • 对于特定命令的帮助,可以使用 HELP command,例如 HELP SET
  • 退出 Redis CLI
    • 使用 quit 命令退出 Redis CLI。
      quit
Redis配置与优化
Redis配置文件介绍

Redis 的配置文件通常命名为 redis.conf,位于 /etc/redis/redis.conf 或 Redis 安装目录下的数据文件中。以下是一些常见的配置项及其含义:

  • bind:指定 Redis 服务器监听的 IP 地址。默认情况下,Redis 监听所有的 IP 地址,可以通过设置 bind 值来限制监听范围。

    bind 127.0.0.1
  • port:指定 Redis 服务器监听的端口号,默认为 6379。

    port 6379
  • timeout:设置客户端空闲超时时间,单位为秒,默认为 0 秒,表示不超时。

    timeout 0
  • loglevel:设置日志级别,可以是 debugverbosenoticewarning

    loglevel notice
  • logfile:指定日志文件的位置,可以为空表示不记录日志。

    logfile ""
  • databases:设置数据库的数量,默认为 16 个数据库。

    databases 16
  • rdbcompression:配置 RDB 文件是否进行压缩,默认是开启的。

    rdbcompression yes
  • save:指定数据持久化的策略,可以设置多个 save 命令。

    save 900 1
    save 300 10
    save 60 10000
  • appendonly:是否启用 AOF 持久化,默认为关闭。

    appendonly yes
  • appendfilename:指定 AOF 文件的名称,默认为 appendonly.aof

    appendfilename "appendonly.aof"
  • appendfsync:设置 AOF 文件的同步策略,可以是 always(每次写入都同步)、everysec(每秒同步一次)或 no(由操作系统决定)。

    appendfsync everysec
  • maxmemory:设置 Redis 实例的最大内存限制。

    maxmemory 128mb
  • maxmemory-policy:设置内存淘汰策略,常见的策略包括 noevictionallkeys-lruvolatile-lru 等。
    maxmemory-policy allkeys-lru
常见配置参数说明
  • bind:指定 Redis 服务器监听的 IP 地址。如果 Redis 服务器需要只监听本地网络,可以设置为 127.0.0.1

    bind 127.0.0.1
  • timeout:设置客户端空闲超时时间,单位为秒。默认为 0 秒,表示不超时。

    timeout 0
  • databases:设置数据库的数量,默认为 16 个数据库。每个数据库可以存储不同的数据集。

    databases 16
  • rdbcompression:设置 RDB 文件是否进行压缩。开启压缩可以减少 RDB 文件的大小,但会增加写入时间。

    rdbcompression yes
  • save:设置数据持久化的策略。可以指定多次 save 命令,每次指定一个策略。

    save 900 1
    save 300 10
    save 60 10000
  • appendonly:是否启用 AOF 持久化。AOF 持久化方式更加安全,但会牺牲一些性能。

    appendonly yes
  • maxmemory:设置 Redis 实例的最大内存限制。当 Redis 的内存使用量达到这个限制时,会根据配置的策略自动淘汰数据。

    maxmemory 128mb
  • maxmemory-policy:设置内存淘汰策略。常见的策略有 noeviction(不淘汰)、allkeys-lru(淘汰所有键的最近最少使用)等。
    maxmemory-policy allkeys-lru
性能优化与内存管理
  • 使用 RDB 持久化

    • RDB 持久化方式会在指定的时间间隔内将数据快照写入磁盘,这种方式在内存使用量较大时更为合适。
    • 示例配置:
      save 900 1
      save 300 10
      save 60 10000
      rdbcompression yes
  • 启用 AOF 持久化

    • AOF 持久化方式会记录每个写操作,可以提供更高的数据安全性,但会增加磁盘 I/O 负载。
    • 示例配置:
      appendonly yes
      appendfsync everysec
  • 设置内存限制

    • 设置 Redis 实例的最大内存限制,防止 Redis 占用过多内存。
    • 示例配置:
      maxmemory 128mb
      maxmemory-policy allkeys-lru
  • 内存淘汰策略

    • 使用 allkeys-lruvolatile-lru 等策略来淘汰不常用的键值对。
    • 示例配置:
      maxmemory-policy allkeys-lru
  • 优化键值对的生命周期管理

    • 使用 EXPIRE 命令设置键值对的过期时间,避免长时间占用内存。
    • 示例代码:
      SET key1 "value1"
      EXPIRE key1 3600
  • 使用 Redis 管道(Pipeline)

    • 大批量操作可以通过管道(Pipeline)减少网络开销。
    • 示例代码:
      MSET key1 "value1" key2 "value2" key3 "value3"
  • 减少不必要的数据持久化
    • 如果某些数据无需持久化,可以设置这些键为 volatilenon-volatile 类型,减少不必要的 AOF 记录。
    • 示例代码:
      TTL key1
      SET key1 "value1" EX 3600
Redis持久化与备份
Redis持久化机制

Redis 提供两种持久化机制:RDB(定期快照)和 AOF(追加文件)。这两种机制可以单独使用,也可以同时使用,以确保高可靠性和数据冗余。

  • RDB(定期快照):RDB 持久化方式会在指定的时间间隔内将数据快照写入磁盘。
  • AOF(追加文件):AOF 持久化方式会记录每个写操作,可以提供更高的数据安全性。
RDB与AOF持久化方式

RDB持久化方式

  • 配置 RDB 持久化

    • redis.conf 文件中设置 save 选项来配置 RDB 的持久化策略。
    • 示例配置:
      save 900 1
      save 300 10
      save 60 10000
    • 上述配置表示:
      • 每 900 秒至少执行 1 次写操作,则生成 RDB 文件。
      • 每 300 秒至少执行 10 次写操作,则生成 RDB 文件。
      • 每 60 秒至少执行 10000 次写操作,则生成 RDB 文件。
  • 开启 RDB 压缩
    • 设置 rdbcompression 选项为 yes,以开启 RDB 文件的压缩。
    • 示例配置:
      rdbcompression yes

AOF持久化方式

  • 配置 AOF 持久化

    • 设置 appendonly 选项为 yes,以开启 AOF 持久化。
    • 示例配置:
      appendonly yes
  • 设置 AOF 同步策略
    • 设置 appendfsync 选项来控制 AOF 文件的同步策略。
    • 示例配置:
      appendfsync everysec

数据恢复与备份策略

  • 恢复数据

    • 如果使用 RDB 持久化,可以在启动 Redis 时指定 --load 参数来加载 RDB 文件。
    • 示例命令:
      redis-server --load /path/to/your.rdb
    • 如果使用 AOF 持久化,可以在启动 Redis 时指定 --appendonly 参数来加载 AOF 文件。
    • 示例命令:
      redis-server --appendonly /path/to/your.aof
  • 备份策略

    • 定期手动或自动备份 RDB 文件。
    • 示例命令:
      cp /path/to/your.rdb /backup/path/to/your.rdb
    • 定期手动或自动备份 AOF 文件。
    • 示例命令:
      cp /path/to/your.aof /backup/path/to/your.aof
  • 使用 Redis 自动备份

    • 配置 dir 选项设置 RDB 文件的保存路径。
    • 示例配置:
      dir /path/to/your/backup/directory
  • 使用 Redis Sentinel 进行数据冗余
    • 配置 Sentinel 监听主节点,自动发现并启动从节点。
    • 示例配置:
      sentinel monitor mymaster 127.0.0.1 6379 2
      sentinel down-after-milliseconds mymaster 5000
      sentinel failover-timeout mymaster 60000
Redis监控与运维
Redis命令行监控工具

Redis 提供了多种命令行工具来监控 Redis 服务器的状态和性能。

  • info 命令

    • 使用 INFO 命令可以查看 Redis 的各种统计信息,包括服务器状态、内存使用情况、客户端连接等。
    • 示例代码:
      INFO
    • INFO 命令具有不同的子命令,例如 INFO memory 可以查看内存使用情况。
      INFO memory
  • monitor 命令

    • 使用 MONITOR 命令可以实时监控 Redis 服务器上的所有命令。
    • 示例代码:
      MONITOR
    • 关闭 MONITOR 模式可以在命令行中输入 quit
  • slowlog 命令
    • 使用 SLOWLOG 命令可以查看执行时间较长的命令。
    • 示例代码:
      SLOWLOG GET
    • 可以使用 SLOWLOG LEN 查看慢日志的条目数量。
      SLOWLOG LEN
    • 可以使用 SLOWLOG RESET 清空慢日志。
      SLOWLOG RESET
Redis常用监控指标

Redis 提供了许多重要的监控指标,用于评估系统的性能和健康状态。以下是常用的监控指标:

  • 内存使用情况

    • 使用 INFO 命令查看内存使用情况,例如:
      INFO memory
    • 输出会包含以下信息:
      used_memory:2275992
      used_memory_human:2.17M
      used_memory_rss:2274944
      used_memory_peak:2275992
      used_memory_peak_human:2.17M
  • 连接数

    • 使用 INFO 命令查看客户端连接数,例如:
      INFO clients
    • 输出会包含以下信息:
      connected_clients:4
      client_longest_output_list:0
      client_biggest_input_buffer:0
      client_biggest_input_buf:0
  • 命令执行情况

    • 使用 INFO 命令查看命令执行情况,例如:
      INFO commandstats
    • 输出会包含以下信息:
      cmdstat_set:calls=123,usec=456,usec_per_call=3.71
      cmdstat_get:calls=1234,usec=4567,usec_per_call=3.71
  • 键空间大小

    • 使用 INFO 命令查看键空间大小,例如:
      INFO keyspace
    • 输出会包含以下信息:
      db0:keys=10,expires=0,avg_ttl=0
      db1:keys=20,expires=0,avg_ttl=0
  • 慢查询日志

    • 使用 SLOWLOG GET 命令查看慢查询日志,例如:
      SLOWLOG GET
    • 输出会包含以下信息:
      1) "time"
      2) (integer) 1620249017
      3) "redis_version"
      4) (integer) 6
      5) "cmd"
      6) "get"
      7) "arg"
      8) (integer) 3
      9) "verbosity"
      10) "normal"
      11) "calls"
      12) (integer) 2
      13) "usec"
      14) (integer) 300000
      15) "client"
      16) "127.0.0.1:52860"
  • 性能指标
    • 使用 INFO 命令查看性能指标,例如:
      INFO performance
    • 输出会包含以下信息:
      used_memory_lua:4352
      lua_time:0
      used_cpu_sys:0
      used_cpu_user:0
      used_cpu_sys_children:0
      used_cpu_user_children:0
Redis集群搭建与运维技巧
  • 配置主从复制
    • 在主节点配置文件中设置 master 选项,例如:
      bind 192.168.1.1
      port 6379
      requirepass password
    • 在从节点配置文件中设置 slaveof 选项,例如:
      bind 192.168.1.2
      port 6380
      slaveof 192.168.1.1 6379
  • 配置哨兵模式
    • 在哨兵配置文件中设置 sentinel 选项,例如:
      port 26379
      sentinel monitor mymaster 192.168.1.1 6379 2
      sentinel down-after-milliseconds mymaster 5000
      sentinel failover-timeout mymaster 60000
  • 故障处理
    • 使用 INFO 命令查看当前的主节点和从节点状态,例如:
      INFO replication
    • 使用 SENTINEL 命令查看哨兵状态,例如:
      SENTINEL master mymaster
    • 使用 SLAVEOF 命令手动切换主节点,例如:
      SLAVEOF no one
  • 优化性能

    • 使用 INFO 命令监控性能指标,例如:
      INFO performance
    • 根据监控结果调整配置参数,例如:
      maxmemory 256mb
      maxmemory-policy allkeys-lru
  • 备份与恢复

    • 定期备份 RDB 文件,例如:
      SAVE
    • 使用 AOF 文件进行恢复,例如:
      redis-server --appendonly yes
    • 手动复制 RDB 文件到备份目录,例如:
      cp /path/to/your.rdb /backup/path/to/your.rdb
  • 日志管理

    • 设置 logfile 选项,将日志输出到文件,例如:
      logfile /path/to/your.log
    • 使用 INFO 命令查看日志信息,例如:
      INFO
  • 监控与报警

    • 使用 Redis 自带的监控工具,例如:
      MONITOR
    • 配置外部监控工具,例如:
      redis-cli --scan
  • 升级与迁移
    • 在升级前备份数据,例如:
      SAVE
    • 升级 Redis 版本,例如:
      redis-server --version
    • 迁移到新的 Redis 版本或集群,例如:
      redis-cli --cluster create

以上是 Redis 集群搭建和运维技巧的详细步骤和示例代码。通过这些步骤可以确保 Redis 集群的高性能和高可用性。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
32
获赞与收藏
170

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消