网站运营需要做什么,网页qq小游戏,如何做一个免费的网站,网站开发需求分析Redis 简介
Redis 是完全开源的#xff0c;遵守 BSD 协议#xff08;Berkeley Software Distribution 意思是伯克利软件发行版#xff09;#xff0c;是一个高性能的 key-value 数据库。具有以下几个比较明显的特点#xff1a;
性能极高 – Redis能读的速度可以达…Redis 简介
Redis 是完全开源的遵守 BSD 协议Berkeley Software Distribution 意思是伯克利软件发行版是一个高性能的 key-value 数据库。具有以下几个比较明显的特点
性能极高 – Redis能读的速度可以达到110000次/s写的速度可以达到81000次/s 。由此可以想到redis是将数据存储在内存中的。持久化 – Redis支持数据的持久化可以将内存中的数据保存在磁盘中重启的时候可以再次加载进行使用。丰富的数据类型 – Redis不仅仅支持简单的key-value类型的数据同时还提供list、set、zset、hash、BitMap、GEO等数据结构的存储。支持主从备份 – Redis支持数据的备份即master-slave模式的数据备份。功能强大 – 支持类MQ的发布订阅功能支持Lua脚本支持事务支持pipeline原子性 – Redis的所有操作都是原子性的意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务即原子性通过MULTI和EXEC指令包起来。丰富的特性 – Redis还支持 publish/subscribe通知key 过期等等特性。
Redis与其他key-value存储区别 Redis有着更为复杂的数据结构并且提供对他们的原子性操作这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明无需进行额外的抽象。 Redis运行在内存中但是可以持久化到磁盘所以在对不同数据集进行高速读写时需要权衡内存因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是相比在磁盘上相同的复杂的数据结构在内存中操作起来非常简单这样Redis可以做很多内部复杂性很强的事情。同时在磁盘格式方面他们是紧凑的以追加的方式产生的因为他们并不需要进行随机访问。
Redis安装
redis的安装比较简单我们以目前经常使用的centos7 为例进行安装其他环境请自行测试。下面提供一个在centos7 上使用源码的方式安装redis 6.0.6版本的脚本。注意不同版本的安装可能有所差别当然日常测试使用完全也可以使用yum的方式进行安装可以参考另一篇博客https://blog.csdn.net/margu_168/article/details/133122869
[rootk8s-m2 ~]# cat install_redis6.0.6.sh
#!/bin/bash
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c devtoolset-9-binutils
scl enable devtoolset-9 bash
cd /root
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
tar xzf redis-6.0.6.tar.gz -C /usr/local
mv /usr/local/redis-6.0.6 /usr/local/redis
cd /usr/local/redis
make# 日志目录在配置文件中暂未修改
# mkdir -p /data/redis/data/ mkdir -p /data/redis/logs
##手动修改配置
mkdir /etc/redis
cp /usr/local/redis/redis.conf /etc/redis/redis.conf
#IPip a|grep inet|grep eth0 |awk -F |/ {print $6}
sed -i s/^bind 127.0.0.1/bind 0.0.0.0/g /etc/redis/redis.conf
sed -i s/^protected-mode yes/protected-mode no/g /etc/redis/redis.conf
sed -i s/^daemonize no/daemonize yes/g /etc/redis/redis.conf
##添加启动文件cat /usr/lib/systemd/system/redis.service EOF
[Unit]
DescriptionRedis
Afternetwork.target[Service]
Typeforking
PIDFile/data/redis/logs/redis_6379.pid
ExecStart/usr/local/redis/src/redis-server /etc/redis/redis.conf
ExecReload/bin/kill -s HUP
ExecStop/bin/kill -s QUIT
PrivateTmptrue[Install]
WantedBymulti-user.target安装结束后我们可以看到在/usr/local/redis/src/ 目录下有一些 关于 redis 可执行文件大致说明如下
名称作用redis-server启动 redis 服务器redis-cliredis 命令行客户端redis-benchmark redis性能测试工具redis-check-aofAOF 文件修复工具redis-check-dumpRDB 文件检查工具redis-sentinelSentinel 服务器2.8以后
redis不同启动方式比较
redis 常见的有三种启动方式分别如下。
最简单启动
直接使用命令行让redis在前台运行。
[rootk8s-m2 src]# ./redis-server
8616:C 25 Feb 2024 16:46:16.723 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8616:C 25 Feb 2024 16:46:16.723 # Redis version6.2.6, bits64, commit00000000, modified0, pid8616, just started
8616:C 25 Feb 2024 16:46:16.723 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
8616:M 25 Feb 2024 16:46:16.725 * monotonic clock: POSIX clock_gettime_._ _.-__ -._ _.- . _. -._ Redis 6.2.6 (00000000/0) 64 bit.- .-. \/ _.,_ -._ ( , .- | , ) Running in standalone mode|-._-...- __...-.-._| _.-| Port: 6379| -._ ._ / _.- | PID: 8616-._ -._ -./ _.- _.- |-._-._ -.__.- _.-_.-| | -._-._ _.-_.- | https://redis.io -._ -._-.__.-_.- _.- |-._-._ -.__.- _.-_.-| | -._-._ _.-_.- | -._ -._-.__.-_.- _.- -._ -.__.- _.- -._ _.- -.__.- 8616:M 25 Feb 2024 16:46:16.726 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
8616:M 25 Feb 2024 16:46:16.726 # Server initialized
8616:M 25 Feb 2024 16:46:16.726 * Ready to accept connections该启动方式将使用 redis 的默认配置。默认使用端口 6379 日志信息直接打印在屏幕上。缺点就是退出后redis服务Ctrlc也就停止了。
动态参数启动
我们以指定端口号启动 redis为例其他参数可以根据实际需要添加
[rootk8s-m2 src]# ./redis-server --port 6389
14493:C 25 Feb 2024 16:50:50.212 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
14493:C 25 Feb 2024 16:50:50.212 # Redis version6.2.6, bits64, commit00000000, modified0, pid14493, just started
14493:C 25 Feb 2024 16:50:50.212 # Configuration loaded
14493:M 25 Feb 2024 16:50:50.214 * monotonic clock: POSIX clock_gettime_._ _.-__ -._ _.- . _. -._ Redis 6.2.6 (00000000/0) 64 bit.- .-. \/ _.,_ -._ ( , .- | , ) Running in standalone mode|-._-...- __...-.-._| _.-| Port: 6389| -._ ._ / _.- | PID: 14493-._ -._ -./ _.- _.- |-._-._ -.__.- _.-_.-| | -._-._ _.-_.- | https://redis.io -._ -._-.__.-_.- _.- |-._-._ -.__.- _.-_.-| | -._-._ _.-_.- | -._ -._-.__.-_.- _.- -._ -.__.- _.- -._ _.- -.__.- 14493:M 25 Feb 2024 16:50:50.215 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
14493:M 25 Feb 2024 16:50:50.215 # Server initialized
14493:M 25 Feb 2024 16:50:50.215 * Loading RDB produced by version 6.2.6
14493:M 25 Feb 2024 16:50:50.215 * RDB age 17 seconds
14493:M 25 Feb 2024 16:50:50.215 * RDB memory usage when created 0.77 Mb
14493:M 25 Feb 2024 16:50:50.215 # Done loading RDB, keys loaded: 0, keys expired: 0.
14493:M 25 Feb 2024 16:50:50.216 * DB loaded from disk: 0.000 seconds
14493:M 25 Feb 2024 16:50:50.216 * Ready to accept connections同样的还是在前台打印出了日志信息并且端口号变为了指定的 6389覆盖了默认配置文件中的端口号。缺点还是退出后redis服务也就停止了。 验证
[rootk8s-m2 src]# ./redis-cli -p 6389
127.0.0.1:6389 get *
(nil)
127.0.0.1:6389 配置文件启动
在日常的使用中我们一般都是采用配置启动的方式一方面是涉及到很多配置参数其次通过命令行指定大量配置效率低容易出错长时间也不可能记得当初指定了哪些参数。所以推荐使用配置文件的方式来启动更好。
如上安装脚本所示 习惯将配置文件放在/etc目录下可以根据自己的习惯进行修改在使用时指定实际目录即可。创建一个/etc/redis 目录并 拷贝一个原始的redis.conf 文件到该目录。
mkdir /etc/redis
cp /usr/local/redis/redis.conf /etc/redis/redis.conf
# 修改了部分配置
sed -i s/^bind 127.0.0.1/bind 0.0.0.0/g /etc/redis/redis.conf
sed -i s/^protected-mode yes/protected-mode no/g /etc/redis/redis.conf
sed -i s/^daemonize no/daemonize yes/g /etc/redis/redis.conf大家可以自行先查看一下配置文件中具体有哪些配置。使用下列命令启动 redis。
/usr/local/redis/src/redis-server /etc/redis/redis.conf 可以看到控制台什么都没返回说明 redis 以守护进程的方式启动了。 查看进程是否存在并进行连接测试。
[rootk8s-m2 src]# ps aux|grep redis
root 31308 0.1 0.0 162588 2956 ? Ssl 17:03 0:00 /usr/local/redis/src/redis-server 0.0.0.0:6379
root 32402 0.0 0.0 112816 968 pts/1 S 17:04 0:00 grep --colorauto redis
[rootk8s-m2 src]# ./redis-cli
127.0.0.1:6379 get *
(nil)关闭 redis
以守护进程方式启动redis后我们可以使用下列命令关闭
# 通过ps查看到redis进场的pid号
[rootk8s-m2 src]# ps aux | grep redis
[rootk8s-m2 src]# kill -9 PID值
或
# 端口号是默认的可以不指定
[rootk8s-m2 src]# redis-cli -p port shutdown