redis配置及群集

一、redis命令工具

redis常用的命令工具

在这里插入图片描述

命令作用
redis-server用于启动 Redis 的工具
redis-benchmark用于检测Redis在本机的运行效率
redis-check-aof修复 AOF持久化文件
redis-check-rdb修复 RDB持久化文件
redi s-cli是 Redis命令行工具
redis-setinel是哨兵模式启动的工具

1.2 redis-benchmark测试工具

1.2.1基本语法

redis-benchmark [option] [option value]

1.2.2 常用选项

选项作用
-h指定服务器主机名
-p指定服务器端口
-s指定服务器 socket
-c指定并发连接数
-n指定请求数
-d以字节的形式指定SET/GET 值的数据大小
-k1=keepalive 0=reconnect
-rSET/GET/INCR 使用随机key, SADD使用随机值
-P通过管道传输请求
-q强制退出redis
–csv以 CSV格式输出
-l生成循环,永久执行测试
-t仅运行以逗号分隔的测试命令列表
-IIdle模式。仅打开N个idle连接并等待

1.2.3 测试实例

向192.168.10.11端口号为6379的redis服务器发送100个并发连接与10000个请求测试性能

redis-benchmark -h 192.168.10.11 -p 6379 -c 100 -n 10000

测试目标ip指定端口的redis服务器的操作性能

redis-benchmark -h 192.168.10.11 -p 6379 -q -d 100

在这里插入图片描述

测试本机redis服务再进行set操作的性能

redis-benchmark -t set -n 10000 -q

在这里插入图片描述

二、redis多数据库操作

  • Redis支持多数据库,默认支持16个数据库,0-15命名
  • 多数据库相互独立,互不干扰
  • 多数据库常用命令
    多数据库间切换
    多数据库间移动数据
    清除数据库内数据

2.1 key相关命令

命令作用
keys获取符合规则的键值列表
exists判断键值是否存在
del删除当前数据库的指定key
type获取key对应的value值类型
rename(覆盖) l/ renamenx(不覆盖)对已有的key进行重命名
dbsize查看当前数据库中key的数目

在这里插入图片描述在这里插入图片描述

2.2 多数据库常用命令

命令作用
select切换数据库
move多数据库移动
flushdb清除数据库内数据

在这里插入图片描述在这里插入图片描述

三、redis持久化

3.1 持久化概述

  • Redis是运行在内存中,内存中的数据断电丢失
  • 为了能够重用Redis数据,或者防止系统故障,需要将Redis中的数据写入到磁盘空间中,即持久化

3.2 持久化分类

  • RDB方式
    创建快照的方式获取某一时刻Redis中所有数据的副本
  • AOF方式
    将执行的写命令写到文件的末尾,以日志的方式来记录数据的变化

3.2.1 RBD持久化

  • Redis的默认持久化方式

  • 默认文件名dump.rdb

  • 触发条件
    在指定的时间间隔内,执行指定次数的写操作(配置文件控制)
    执行save或者是bgsave(异步)命令
    执行flushall命令,清空数据库所有数据
    执行shutdown命令,保证服务器正常关闭且不丢失任何数据

  • 优缺点
    适合大规模的数据恢复
    如果业务对数据完整性和一致性要求不高,RDB是很好的选择
    数据的完整性和一致性不高
    备份时占用内存

  • 通过RBD文件恢复数据
    将dump.rdb 文件拷贝到redis的安装目录的bin目录下,重启redis服务即可

  • 配置文件选项

      vi /etc/redis/6379.conf
      save 900 1
      save 300 10 
      save 60 10000
      dbfilename dump.rdb		# RBD文件名称
      dir /var/lib/redis/6379		# RBD文件路径
      rdbcompression yes		# 是否进行压缩
    

3.2.2 AOF持久化

  • Redis默认不开启

  • 弥补RDB的不足(数据的不一致性)

  • 采用日志的形式来记录每个写操作,并追加到文件中

  • Redis重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

  • 根据AOF文件恢复数据
    将APPendonly.aof文件拷贝到redis的安装目录的bin目录下,重启redis服务即可

  • 配置文件选项

      vi /etc/redis/6379.conf
      appendonly yes		# 开启AOF持久化
      appendfilename "appendonly.aof"	# AOF文件名称
      appendfsync always	# 同步持久化,每次发生数据变化立即写入磁盘
      appendfsync everysec	# 默认推荐,每秒异步记录一次(默认值)
      #appendfsync no		# 不同步,交给操作系统决定如何同步
      aof-load-truncated yes	# 忽略该条可能存在问题的指令
      /etc/init.d/redis_6379 restart	# 重启redis服务
    
  • AOF的重写机制
    AOF的工作原理是将写操作追加到文件中,文件的冗余内容会越来越多
    当AOF文件的大小超过所设定的阈值时,Redis就会对AOF文件的内容压缩

  • AOF重写的原理
    Redis会fork出一条新进程,读取内存中的数据(并没有读取旧文件),并重新写到一个临时文件中,最后替换旧的aof文件

  • AOF的重写配置
    vim /etc/redis/6379.conf
    #在日志进行BGREWRITEAOF时,如果设置为yes表示新写操作不进行同步fsync,只是暂存在缓冲区里,避免造成磁盘IO操作冲突,等重写完成后在写入。Redis中默认为no
    no-appendfsync-on-rewrite no
    #当前AOF文件大小是上次日志重写时AOF文件大小两倍时,发生BGREWRITEAOF操作
    auto-aof-rewrite-percentage 100
    #当前AOF文件执行BGREWRITEAOF命令的最小值,避免刚开始启动Reids时由于文件尺寸较小导致频繁的BGREWRITEAOF
    auto-aof-rewrite-min-size 64mb

四、redis性能管理

4.1 查看redis内存使用

在这里插入图片描述

4.2 内存碎片率

  • 操系统分配的内存值used_memory_rss除以Redis使用的内存值used_memory计算得出

  • 内存碎片是由操作系统低效的分配/回收物理内存导致的
    不连续的物理内存分配

  • 跟踪内存碎片率对理解Redis实例的资源性能是非常重要的
    内存碎片率稍大于1是合理的,这个值表示内存碎片率比较低
    内存碎片率超过1.5,说明Redis消耗了实际需要物理内存的150%,其中50%是内存碎片率
    内存碎片率低于1的,说明Redis内存分配超出了物理内存,操作系统正在进行内存交换

4.3 内存使用率

redis实例的内存使用率超过可用最大内存,操作系统将开始进行内存与swap空间交换

避免内存交换

  • 针对缓存数据大小
  • 选择尽可能的使用Hash数据结构
  • 设置key的过期时间

4.4 回收key

保证合理分配redis有限的内存资源

当达到设置的最大阀值时,需选择一种key的回收策略

  1. 默认情况下回收策略是禁止删除

  2. redis.conf配置文件中修改maxmemory-policy属性值

  • volatile-lru:使用LR算法从已设置过期时间的数据集合中淘汰数据
  • volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰
  • volatile-random:从已设置过期时间的数据集合中随机挑选数据淘汰
  • allkeys-lru:使用LRU算法从所有数据集合中淘汰数据
  • aallkeys-random:从数据集合中任意选择数据淘汰
  • no-enviction:禁止淘汰数据

五、redis群集基础

5.1 redis群集的必要性

  • 单点故障,服务不可用
  • 无法处理大量的并发数据请求
  • 数据丢失—大灾难

5.2 redis群集介绍

  • Redis集群是一个提供在多个Redis间节点闻共享数据的程序集
  • Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误
  • Redis集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下可继续处理命令

5.3 redis集群的优势

  • 自动分割数据到不同的节点上
  • 整个集群的部分节点失败或者不可达的情况下能够继续处理命令

5.4 redis集群的实现方法

  • 有客户端分片
  • 代理分片
  • 服务器端分片

5.5 redis-cluster数据分片

  • Redis 集群没有使用一致性hash,而是引入了哈希槽概念

  • Redis集群有16384个哈希槽

  • 每个key通过CRC16校验后对16384取模来决定放置槽

  • 集群的每个节点负责一部分哈希槽

  • 以3个节点组成的集群为例
    节点A包含0到5500号哈希槽
    节点B包含5501到11000号哈希槽
    节点C包含11001到16383号哈希槽

  • 支持添加或者删除节点
    添加删除节点无需停止服务

  • 例如
    如果想新添加个节点D,需要移动节点A,B,C中的部分槽到D上
    如果想移除节点A,需要将A中的槽移到B和C节点上,再将没有任何槽的A节点从集群中移除

5.6 redis-cluster的主从复制模型

  • 集群中具有A,B,C三个节点,如果节点B失败了,整个集群就会因缺少5501-11000这个范围的槽而不可用
  • 为每个节点添加一个从节点A1,B1,C1,整个集群便有三个master节点和三个slave节点组成,在节点B失败后,集群便会选举B1为新的主节点继续服务
  • 当B和B1都失败后,集群将不可用

六、redis群集搭建

6.1 配置过程

tar zxvf redis-5.0.4.tar.gz
cd redis-5.0.4/
make 
make PREFIX=/usr/local/redis install
ln -s /usr/local/redis/bin/* /usr/bin
cd redis-5.0.4/utils/
./install_server.sh
# 配置文件	

vi /etc/redis/6379.conf

bind 20.0.0.11	     #删除第70行的监听127地址,监听本地地址 
protected-mode no	 #去掉第89行注释关闭安全保护
port 6379	         #去掉第93行注释,开启端口6379
daemonize yes	     #去掉第137行注释,以独立进程启动 
appendonly yes	     #去掉第700行注释,开启aof持久化
cluster-enabled yes	 #去掉第839行注释,开启群集功能
cluster-config-file nodes-6379.conf	  #去掉第847行注释,群集名称文件设置'
cluster-node-timeout 15000	  #去掉第853行注释,群集超时时间设置

选择一台服务器中主服务器,在其中配置gem文件,导入redis-3.2.0.gem包,进行以下操作,然后配置即可:

yum -y install ruby rubygems
gem install redis-3.2.0.gem
redis-cli --cluster create --cluster-replicas 1 192.168.10.11:6379 192.168.10.12:6379 192.168.10.13:6379 192.168.10.14:6379 192.168.10.15:6379 192.168.10.16:6379

在这里插入图片描述在这里插入图片描述

6.2 redis群集功能的验证

字符串的存储以查看:
在这里插入图片描述在这里插入图片描述查看redis群集状态:
在这里插入图片描述主从信息的查询:
在这里插入图片描述如果有一台主服务器宕机,查看群集的从服务器的操作,发现从服务器升级为主服务器:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis的安装及配置可以按照以下步骤进行: 1. 下载Redis:可以从官方网站或者其他可信来源下载Redis的安装包。 2. 安装Redis:根据不同的操作系统进行安装。在Windows环境下,可以执行redis-server –service-install redis.windows-service.conf –loglevel verbose命令来安装Redis。在Linux环境下,可以使用make命令编译并使用make install命令进行安装。 3. 配置RedisRedis配置文件位于redis.conf中。可以通过编辑该文件来配置Redis的各项参数,如监听端口、密码、持久化等。 4. 启动Redis:在Windows环境下,可以使用redis-server.exe来启动Redis服务;在Linux环境下,可以使用redis-server命令启动Redis服务。 5. 使用Redis:通过Redis的命令行界面或者可视化工具(如Redis Desktop Manager、Redis Client、Redis Studio)来进行Redis的操作和管理。 需要注意的是,在安装和配置Redis时需要根据具体的操作系统和需求进行相应的调整和修改。具体的安装和配置指南可以参考引用中的内容。另外,引用和引用提供了一些具体的命令和操作步骤供参考。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Redis的安装与配置](https://blog.csdn.net/web18484626332/article/details/124017682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Redis-安装配置](https://blog.csdn.net/qq_45580375/article/details/111938610)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值