【3.0】Redis部署
【一】Redis是什么
【1】介绍
- 开源:早起版本2w3千行
- 基于键值对的存储系统:字典形式
- 多种数据结构:字符串,hash,列表,集合,有序集合
- 高性能,功能丰富
- Redis(Remote Dictionary Server)是一个开源的,基于键值对的存储系统。
- 它采用了字典形式进行数据存储,支持多种数据结构如字符串、哈希、列表、集合和有序集合,并具有高性能和丰富的功能。
- Redis最早版本有约2万3千行代码,是一个轻量级的存储系统。
- 由于其出色的性能和灵活的数据结构支持,在实际应用中得到了广泛的使用。
【2】那些公司在用
- github,twitter,stackoverflow,阿里,百度,微博,美团,搜狐
【二】Redis特性(8个)
- 速度快:10w ops(每秒10w读写),数据存在内存中,c语言实现,单线程模型
- 持久化:rdb和aof
- 多种数据结构:
- 5大数据结构
- BitMaps位图:布隆过滤器 本质是 字符串
- HyperLogLog:超小内存唯一值计数,12kb HyperLogLog 本质是 字符串
- GEO:地理信息定位 本质是有序集合
- 支持多种编程语言:基于tcp通信协议,各大编程语言都支持
- 功能丰富:发布订阅(消息) Lua脚本,事务(pipeline)
- 简单:源代码几万行,不依赖外部库
- 主从复制:主服务器和从服务器,主服务器可以同步到从服务器中
- 高可用和分布式:
- 2.8版本以后使用redis-sentinel支持高可用
- 3.0版本以后支持分布式
【1】速度快
- Redis以其高速的读写能力而闻名,每秒可以处理10万个操作(ops)。
- 这主要得益于Redis将数据存储在内存中,并采用C语言实现的单线程模型。
- 由于Redis采用非阻塞I/O模型,可以在内存访问和计算能力之间取得良好的平衡。
【2】持久化
- Redis提供了两种持久化方式,分别是RDB(Redis Database)和AOF(Append-Only File)。
- RDB可将内存中的数据周期性地保存到磁盘上,以便在重启时恢复数据。
- 它是通过将数据转化为二进制形式进行持久化存储的,因此对于大规模的数据集来说,RDB方式比AOF方式更加高效。
- AOF则记录所有对Redis服务器进行修改的命令,这样可以保证在服务器重启后,能够重新执行这些命令以达到数据恢复的目的。
- 相比RDB,AOF提供了更好的数据安全性,但会增加一定的磁盘IO负担。
- RDB可将内存中的数据周期性地保存到磁盘上,以便在重启时恢复数据。
【3】多种数据结构
- Redis不仅仅是一个键值存储系统,还提供了多种数据结构,可以满足不同场景下的需求。
- 常见的5种数据结构包括
- 字符串(String)
- 哈希(Hash)
- 列表(List)
- 集合(Set)
- 有序集合(Sorted Set)。
- Redis还支持
- BitMaps位图
- HyperLogLog
- GEO地理信息定位数据结构
- 它们分别用于布隆过滤器、唯一值计数和地理位置存储等特定场景。
【4】支持多种编程语言
- Redis基于TCP通信协议进行数据交互,几乎所有主流的编程语言都提供了Redis客户端库,因此可以方便地与Redis进行交互和操作。
- 例如,Python中有redis-py库,Java中有Jedis库,Node.js中有ioredis库等。
【5】功能丰富
- Redis提供了多个功能扩展,增加了其在实际应用中的灵活性和可扩展性。
- 发布订阅功能允许客户端发布消息并订阅感兴趣的频道,这对于实现消息队列等发布-订阅模式非常有用。
- Lua脚本允许通过执行自定义脚本来完成复杂的业务逻辑,可以减少网络延迟并提高性能。
- 事务(Pipeline)允许一次性执行多个命令,并将它们视为一个原子操作。这在需要确保多个命令的原子性时非常有用。
【6】简单
- Redis的源代码非常精简,代码行数大约只有几万行,并且不依赖于外部库。
- 这使得Redis的安装和配置非常简单,并且具备较高的可移植性。
【7】主从复制
- Redis支持主从复制架构,可以通过将一个Redis服务器配置为主服务器,将其他服务器配置为从服务器来实现数据的复制和同步。
- 主服务器负责处理所有写操作,并将更新的数据异步传输给从服务器。
- 从服务器接收并复制主服务器的数据,以实现数据的备份、读操作的负载均衡等目的。
【8】高可用和分布式
- Redis提供了多种机制来实现高可用和分布式部署。
- Redis Sentinel是一个用于监控Redis服务器的组件,可以实现自动故障转移和故障恢复,提高系统的可用性。
- 从Redis 3.0版本开始,Redis Cluster提供了一种分布式解决方案,可以将数据分片存储在不同的节点上,实现数据的水平扩展和负载均衡。
【三】Docker部署Redis
【1】安装Redis
(1)下载Redis压缩包:
wget http://download.redis.io/releases/redis-6.2.9.tar.gz
- 这里会从官方网站下载Redis的压缩包。
(2)解压Redis压缩包:
tar -xzf redis-6.2.9.tar.gz
- 使用tar命令解压下载的压缩包。
(3)建立软连接:
ln -s redis-6.2.9 redis
- 创建一个软连接,使得可以通过使用“redis”来访问Redis的文件。
(4)进入Redis目录:
cd redis
- 进入到解压后的Redis目录。
(5)编译和安装Redis:
make && make install
- 执行make命令编译Redis源码,并执行make install命令安装编译后的Redis。
(6)安装完成:
-
在src目录下,可以找到以下文件:
-
redis-server:Redis服务器
-
redis-cli:Redis命令行客户端
-
redis-benchmark:Redis性能测试工具
-
redis-check-aof:AOF文件修复工具
-
redis-check-dump:RDB文件检查工具
-
redis-sentinel:Sentinel服务器,哨兵
-
- 注意:Redis在Windows上的维护并不好,所以Windows系统建议使用官方提供的安装包进行安装。
【2】卸载Redis
(1)查看Redis进程:
ps aux | grep redis
- 这里使用ps命令配合grep命令来查看正在运行的Redis进程。
(2)杀掉Redis进程:
kill 进程ID
- 根据第一步中查到的Redis进程ID,使用kill命令杀掉对应的进程。
(3)进入Redis安装目录:
cd /usr/local/
- 进入Redis的安装目录。
(4)删除Redis相关文件:
rm -f /usr/local/redis/bin/redis*
rm -f /usr/local/bin/redis*
- 删除Redis相关可执行文件。
(5)删除Redis目录:
rm -rf redis
-
删除安装时创建的Redis目录及其内容。
-
以上操作会完全卸载Redis。
-
请注意,在执行卸载操作前,请确保已备份重要的Redis数据。
【四】三种启动方式
【1】最简启动
#最简启动
redis-server
ps -ef|grep redis #查看进程
netstat -antpl|grep redis #查看端口
redis-cli -h ip -p port ping #命令查看
-
Redis的最简启动方式是通过运行
redis-serve
命令来启动Redis服务器。这将在默认配置下启动Redis服务器,并监听默认的端口(6379)。 -
以下是该启动方式的详细步骤和说明:
-
输入
redis-server
命令来启动Redis服务器。 -
使用
ps -ef | grep redis
命令来查看Redis服务器的进程是否已经启动。 -
使用
netstat -antpl | grep redis
命令来查看监听的Redis服务器的端口号及其相关信息。 -
使用
redis-cli -h ip -p port ping
命令来检查与Redis服务器的连接是否正常,其中ip
是Redis服务器的IP地址,port
是Redis服务器的端口号。
-
- 请注意,这种最简启动方式使用的是Redis的默认配置文件,如果您需要进行更详细的配置,请考虑使用后面介绍的配置文件启动方式或动态参数启动方式。
【2】动态参数启动
#动态参数启动
redis-serve --port 6380 #启动,监听6380端口
-
动态参数启动方式允许您在启动Redis服务器时通过命令行参数指定一些配置选项,而不是使用默认配置文件。
-
以下是该启动方式的详细步骤和说明:
-
使用
redis-serve --port 6380
命令启动Redis服务器,并指定新的端口号为6380。 -
这将启动一个新的Redis服务器实例,监听在指定的端口号上。
-
-
此启动方式适用于需要为特定场景而定制的临时Redis服务器实例。
【3】配置文件启动
-
配置文件启动(6379对应手机按键MERZ,意大利女歌手Alessia Merz的名字)
-
通过redis-cli连接,输入config get * 可以获得默认配置
-
在redis目录下创建config目录,copy一个redis.conf文件
- daemonize--》是否是守护进程启动(no|yes)
- port---》端口号
- logfile--》redis系统日志
- dir--》redis工作目录
-
配置文件
#查看一下默认注释,把#和空格去掉
cat redis.conf|grep -v "#" |grep -v "^$"
# 重定向到另一个文件
cat redis.conf|grep -v "#" |grep -v "^$" >redis-6382.conf
[root@node1 redis]# mv redis.conf redis.conf.bak
[root@node1 redis]# ls
00-RELEASENOTES CONTRIBUTING INSTALL README.md runtest-cluster sentinel.conf TLS.md
BUGS COPYING Makefile redis.conf.bak runtest-moduleapi src utils
CONDUCT deps MANIFESTO runtest runtest-sentinel tests
[root@node1 redis]# vim redis.conf
daemonize yes #是否以守护进程启动
pidfile /var/run/redis.pid #进程号的位置,删除
port 6379 #端口号
dir "/root/dream/redis/data" #工作目录
logfile 6379.log #日志文件
- Redis配置文件通常位于redis.conf文件中,您可以通过以下命令查找配置文件的位置:
CONFIG GET dir
- 响应示例:
1) "dir" 2) "/usr/local/redis-6.0.9"
- 为了更好地保护您的Redis实例,可以设置访问密码。
- 以下是在配置文件中设置密码和重启后仍然有效的方法:
CONFIG SET requirepass 123456 # 并没有写到配置文件中,重启即失效
- 为了限制Redis使用的最大内存量,您可以在配置文件中设置
maxmemory
参数。
- 例如,将最大内存限制为128MB:
# 在redis.conf中找到并修改以下行 maxmemory 128mb # 或者直接在命令行中运行以下命令 CONFIG SET maxmemory 128M
- 如果您希望将当前的Redis配置保存到配置文件中
- 可以使用以下命令:
# 将临时配置生效成永久配置 CONFIG REWRITE
该命令会将当前的Redis配置保存到对应的配置文件(redis.conf)中。
综上所述,以下是完整的Redis配置文件示例(redis.conf):
# Redis配置文件 # 设置Redis实例的访问密码 requirepass 123456 # 限制Redis实例使用的最大内存为128MB maxmemory 128mb # 将Redis配置保存到配置文件中 config rewrite
- 请注意,上述示例仅为演示目的,并非完整的配置文件。
- 具体的配置参数和值可能会因您的需求而有所不同。您可以根据自己的实际需求进行调整。
- 在redis目录下新建data目录,用来存放书籍
- 启动redis
[root@node1 redis]# ./src/redis-server ./redis.conf
- 查看进程
ps -ef |grep redis-server |grep 6379
ps -ef |grep redis
[root@node1 redis]# ps -ef |grep redis
root 52219 1 0 19:06 ? 00:00:00 ./src/redis-server *:6379
root 52506 44911 0 19:08 pts/1 00:00:00 grep --color=auto redis
- 查看日志
cd data
cat 6379.log
- 等待日志加载
tail -f 6379.log
- 配置文件启动方式允许您使用自定义的配置文件来启动Redis服务器。
以下是该启动方式的详细步骤和说明:
首先,您可以通过运行
redis-cli
命令连接到Redis服务器,并使用config get *
命令获取Redis默认配置的详细信息。在Redis安装目录下创建一个名为
config
的文件夹,并复制一份redis.conf
文件到该目录。打开
redis.conf
文件,并根据您的需求进行配置调整。
您可以取消注释相关行,配置参数如下:
daemonize
:设置是否以守护进程启动Redis服务器(可选值为no
或yes
)。port
:设置Redis服务器监听的端口号。logfile
:设置Redis系统日志的位置。dir
:设置Redis工作目录,即Redis服务器存储数据等文件的位置。保存并关闭
redis.conf
文件。在完成上述配置后,您可以按照以下步骤来启动Redis服务器:
在Redis安装目录下,使用命令
redis-server config/redis.conf
启动Redis服务器。这将使用您自定义的配置文件来启动Redis。使用
ps -ef | grep redis-server | grep 6379
命令来检查Redis服务器进程是否已经启动。请注意,这里的6379
是您在配置文件中设置的端口号。通过访问工作目录中的日志文件来查看Redis服务器的日志信息。
【4】小结
(1)客户端链接
redis-cli -h 地址 -p 端口
(2)非交互式的
res=subprocess.getoutput('systemctl start mysqld')
res=subprocess.getoutput('systemctl stop mysqld')
res=subprocess.getoutput('redis-cli get name')
(3)交互式的
get name
keys *
【5】带密码链接
(1)方式一
redis-cli -h 127.0.0.1 -p 6370 -a 123456
(2)方式二
- 先登陆,再通过auth输入密码
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17691097.html