
Redis 概述
- Redis 的出现时间并不长,是 NoSQL 中的一种,基于键-值型的存储,在 2009 年第一次发布 Redis。
- Redis 全称(Remote Dictionary Server)远程字典服务器,而这个字典服务器从本质上来讲,主要是提供数据结构的远程存储功能的,可以理解为 Redis 是一个高级的 K-V 存储和数据结构存储,因为 Redis除了能够存储 K-V 这种简单的数据之外,还能够存储,列表、字典、hash 表、等对应的数据结构。
- Redis 支持主从模式,Redis 能够借助于 Sentinel 工具来监控主从节点,当主节点发生故障时,会自
- 己提升另外一个从节点成为新的主节点。 sentinel [ˈsentɪnl] 哨兵
- Redis 官网:https://redis.io
Redis 所支持的数据类型
- 支持存储的数据类型有、String(字符串,包含整数), List(列表), Hash(关联数组), Sets(集合), Sorted Sets(有序集合), Bitmaps(位图), HyperLoglog
- Redis 性能评估
- 100 万较小的键存储字符串,大概消耗 100M 内存
- 由于 Redis 是单线程,如果服务器主机上有多个 CPU,只有一个能够使用,但并不意味着 CPU 会成为瓶颈,因为 Redis 是一个比较简单的 K-V 数据存储,CPU 通常不会成为性能瓶颈
- 在常见的 linux 服务器上,500K(50 万)的并发,只需要一秒钟处理,如果主机硬件较好的情况下,每秒钟可以达到上百万的并发
- Redis 与 Memcache 对比
- Memcache 只能使用内存来缓存对象,若要持久化,需要第三方插件的支持。而 Redis 除了可以使用内存来缓存对像,还可以周期性的将数据保存到磁盘上,对数据进行永久存储。当服务器突然断电或死机后, redis 基于磁盘中的数据进行恢复。
- Redis 是单线程服务器,只有一个线程来响应所有的请求。Memcache 是多线程的
- Redis 支持更多的数据类型

-
试验环境
- 系统统一使用 CentOS 7.6 防火墙、iptables以及 SElinux 均为关闭状态
- 192.168.2.23 c7_2_23_redis1 Master
- 192.168.2.24 c7_2_24_redis2 Slave1
- 192.168.2.25 c7_2_25_redis3 Slave2
-
使用 Remi repository 源安装 redis
- 扩展:Remi repository 是什么源?
Remi repository 是包含最新版本 PHP 和 MySQL 包的 Linux 源,由 Remi 提供维护。有了这个源之后,使用 YUM 安装或更新 PHP、MySQL、phpMyAdmin 等服务器相关程序的时候就非常方便了。但与此同时,Remi 源也提供了目前最新版本的 Redis,可以通过该源使用 YUM 安装目前最新版本的 Redis。 - 在安装 Remi repository 源时,需要依赖 epel 源,因此先安装 epel 源
- 这里使用 aliyun 的源

- Remi repository 官网:http://rpms.remirepo.net/enterprise/

-
分别在3台服务器上安装 Remi repository 源
- yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
- 查看 源文件
- yum repolist all
- 使用 remi repository 源安装 Redis
yum --enablerepo=remi install -y redis - 注:/etc/yum.repos.d/remi.repo 源安装完成后,默认为disabled,使用--enablerepo=remi 选项指定使用 remi repository 源进行安装。
- 查看 Redis 版本
redis-cli --version


- 启动 Redis
- systemctl enable redis.service --now
- redis 默认端口为 6379

-
Redis 基本操作
- Redis 配置文件参数说明
- Redis 配置文件存放路径:/etc/redis.conf
vim /etc/redis.conf #配置文件中主要参数如下
改:69 bind 127.0.0.1
为:69 bind 0.0.0.0 #redis 监听的地址,默认监听在 127.0.0.1 地址上,改为 0.0.0.0 地址或192.168.2.23
以下内容,保持不变,大家可以了解一下,每个配置的含意:
protected-mode yes #参数是为了禁止外网访问 redis,如果启用了,则只能够通过 lookback ip(127.0.0.1)访问 Redis。
port 6379 #默认监听端口:6379。
tcp-backlog 511 #指定 tcp-backlog 的长度。backlog 是一个等待队列。当有大量请求需要redis 处理时,redist 有可能处理不过来,需要等待的请求队列会通过 backlog 来缓存。backlog 的数量决定了可以缓存的队列数。
unixsocket /tmp/redis.sock #指定使用 sock 文件通信及 sock 文件位置,如果服务端和客户都在同一台主机上,建议打开此项,基于 sock 方式通信可以直接在内存中交换,数据不用再经过 TCP/TP 协议栈进行封装、拆封。
unixsocketperm 700 #定义 sock 文件的访问权限。
timeout 0 #表示当客户端连接成功后,空闲(非活跃、或没有任何数据交互)多长时间则连接超时,0 表示不启用此功能。
tcp-keepalive 300 #定义是否启用 tcp-keepalive 功能。长链接功能。
daemonize no #如果需要在后台运行,把该项改为 yes。如果使用 redis 服务脚本启动,即使daemonize 为 no,也会运行为一个守护进程。
supervised no #定义是 upstart 还是 systemd 接管 redis 进程。默认无监督互动,不需要修改。
loglevel notice #定义日志级别。
logfile /var/log/redis/redis.log #定义日志文件。
databases 16 #定义 redis 默认有多少个 databases,但是在分布式中,只能使用一个。
# masterauth <master-password> #如果连接主数据库时需要密码验证,在这里指定密码。默认不启用。
# 限制同时连接的客户端数量。超过数量将不再接受新的请求并返回错误信息。
# maxclients 10000 #设置同时连接 redis 客户端的最大数量。

- 登录 Redis
- redis-cli
- 选项:
- -h <hostname> 指定主机 IP -p <port> 指定端口 socket 文件进行通信。
- redis-cli -h 127.0.0.1 #连接 redis,默认不启用密码认证。
- 127.0.0.1:6379> exit #退出连接。
- 或:
- redis-cli #使用 redis-cli 直接连接,默认连接是 127.0.0.1 IP。
- Redis 字符串(String)操作
键的命名规则遵循
1.可以使用 ASCII 字符
2.键的长度不要过长,键的长度越长则消耗的空间越多
3.在同一个库中(名称空间),键的名称不得重复,如果复制键的名称,实际上是修改键中的值
4.在不同的库中(名称空间),键的多种名称可以重复
5.键可以实现自动过期 - 设置键 system 的值为 centos
- 127.0.0.1:6379> set system centos
OK
127.0.0.1:6379> get system
"centos"

- 定义一个键 name 值为 zhangsan,并设置过期时间为 60 秒。
127.0.0.1:6379> set name zhangsan EX 60

- 开启 redis 用户认证服务
vim /etc/redis.conf
改:507 # requirepass foobared #启用此项,并指定密码即可。
为:507 requirepass 123456 #指定密码为 123456。
systemctl restart redis #重启服务。 - edis-cli
127.0.0.1:6379> get name
(error)

本文详细介绍了Redis的概述、安装、基本操作、持久化机制、主从复制和Sentinel高可用部署。Redis是一款内存数据存储系统,支持多种数据结构如字符串、列表、哈希表等。通过主从复制确保数据一致性,Sentinel系统则能自动监测和处理主服务器故障,保证服务的高可用性。此外,文中还提及了Redis的用户认证、性能测试命令以及配置参数详解。

414

被折叠的 条评论
为什么被折叠?



