Redis

redis是一个开源、使用C芋圆编写的、支持网络交互的、可基于内存也可以持久化的Key-Value的数据库
特点:
1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
2.Redis不仅仅支持Key-Value类型的数据,同时还提供string、list、set、zset、hash等数据结构的存储
3.Redis支持数据备份,即master-salve模式的数据备份

优势:
1.性能极高 Redis的读写速率是110000次/秒,写的速率是81000次/s
2.丰富的数据类型 Redis支持二进制案例的Strings,List、Hashes、Sets以及Ordered Sets数据类型操作
3.原子 Redis的所有操作都是原子性的,意思就是要么成功执行,要么失败完全不执行。单个操作是原子性的,多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来
3.丰富的特性 Redis还支持publish/subscribe,通知,key过期等等特性

Redis编译安装

[root@i-m60lx3hh ~]# wget http://download.redis.io/releases/redis-4.0.0.tar.gz
[root@i-m60lx3hh ~]# tar xzvf redis-4.0.0.tar.gz -C /usr/local/
[root@i-m60lx3hh redis-4.0.0]# cd /usr/local/redis-4.0.0/
[root@i-m60lx3hh redis-4.0.0]# make
[root@i-m60lx3hh redis-4.0.0]# make test
[root@i-m60lx3hh redis-4.0.0]# make install

测试make test报错
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] Error 1

安装tcl
[root@i-m60lx3hh ~]# wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
[root@i-m60lx3hh ~]# tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
[root@i-m60lx3hh unix]# cd /usr/local/tcl8.6.1/unix/
[root@i-m60lx3hh unix]# sudo ./configure
[root@i-m60lx3hh unix]# sudo make
[root@i-m60lx3hh unix]# sudo make install

Redis使用yum安装

EPEL源安装
配置镜像源安装即可
aliyun.com

服务管理
重新启动Redis守护程序,并使其重新启动时自动启动
sudo serivce redis start

基本服务操作

## 启动并后台运行
redis-server & nohup

## 查看是否启动
redis-cli ping

## 关闭命令
redis-cli shutdown

##命令行客户端启动
redis-cli

# 启动
service redis start

# 停止
service redis stop

# 命令行客户端启动
redis-cli -p 6379

# 指定端口后台启动
redis-server --port 6379 &

# 查看版本
redis-cli info |grep redis_version

查看端口号
redis-cli info |grep tcp_port

## 服务管理
systemctl status redis
systemctl start redis
systemctl stop redis

# 开机启动
yum安装
systemctl enable redisservice

编译安装
把/usr/local/redis-4.0.0/utils/redis_init_script脚本拷贝到/etc/init.d目录下命名为redis
cp /usr/local/redis-4.0.0/utils/redis_init_script /etc/init.d/redis-6379

拷贝下redis.conf文件到/etc/redis目录下
mkdir /etc/redis/
cp /usr/local/redis-4.0.0/redis.conf /etc/redis/6379.conf

# 配置文件修改
#是否在后台运行改成yes
daemonize    yes

# 更改权限,通过chkconfig命令检查,设置系统redis服务开启
[root@i-m60lx3hh ~]# chmod +x /etc/init.d/redis-6379  
[root@i-m60lx3hh ~]# chkconfig redis on

# 必须把下边两行加在文件头部,不设置会报错service redis-6379 does not support chkconfig
# chkconfig: 2345 90 10
# description: redis is a persistent key-value database
意思是:redis必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10

# 查看配置
127.0.0.1:6379> config get *

# 更改配置
config set 参数名称   参数要修改的值

# 设置密码
requirepass 密码
bind 127.0.0.1      改成0.0.0.0   去掉注释

主从架构配置

正常情况使用两台机器
这里使用一台设置不同端口
[root@i-m60lx3hh ~]# cp /usr/local/redis-4.0.0/utils/redis_init_script /etc/init.d/redis-6380

[root@i-m60lx3hh ~]# sed -ri 's#(REDISPORT=)(.*)#\16380#g' /etc/init.d/redis-6380     # -r使用正则 i直接在文件里修改 

vim /etc/redis/6380.conf
port 6380
bind 自己机器ip
slaveof mster节点ip 端口
masterauth    master的redis的密码

实时监控连接数等

[root@i-m60lx3hh ~]# redis-cli -h 10.140.57.59 -a '密码' --stat
------- data ------ --------------------- load -------------------- - child -
keys       mem      clients blocked requests            connections          
0          1.81M    1       0       798 (+0)            396         
0          1.81M    1       0       800 (+2)            396         
0          1.81M    1       0       802 (+2)            396         
0          1.81M    1       0       804 (+2)            396         
0          1.81M    1       0       806 (+2)            396         
0          1.81M    1       0       808 (+2)            396         
0          1.81M    1       0       810 (+2)            396         
0          1.81M    1       0       812 (+2)            396         
0          1.81M    1       0       814 (+2)            396         
0          1.81M    1       0       816 (+2)            396         
0          1.81M    1       0       818 (+2)            396         
0          1.81M    1       0       820 (+2)            396         
0          1.81M    1       0       822 (+2)            396 

查看最大key和平均值

[root@i-m60lx3hh ~]# redis-cli -h 10.140.57.59 -a '密码' --bigkeys

# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).


-------- summary -------

Sampled 0 keys in the keyspace!
Total key length in bytes is 0 (avg len 0.00)


0 strings with 0 bytes (00.00% of keys, avg size 0.00)
0 lists with 0 items (00.00% of keys, avg size 0.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
0 hashs with 0 fields (00.00% of keys, avg size 0.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)

查看指定库的key

[root@i-m60lx3hh ~]# redis-cli -h 10.140.57.59 -a '密码' -n 15 --scan

实时监控redis

[root@i-m60lx3hh ~]# redis-cli -h 10.140.57.59 -a '密码' monitor

redis备份与恢复

# 备份
可以通过执行svar命令或者bgsave命令进行手动备份,也可以通过配置sva参数实现自动备份。手动备份会阻塞redis主线程,如果数据较大,可能会影响服务的正常运行,因此建议使用bgsave(创建子线程不会影响主进程)进行备份

# 恢复
将备份文件(默认为dump.rdb)放置在redis数据目录下,并在配置文件中设置dbfilename参数位备份文件,然后启动redis即可完成数据恢复

2、AOF备份与恢复
备份
可以通过执行bgrewriteraof命令手动备份,也可以通过修改appendfsync参数实现自动备份。手动备份不会影响redis正常运行

恢复
将aof备份文件放到数据目录下,并在配置中设置appendonly参数为yes,然后启动redis即可完成数据恢复

⚠️:aof备份比rdb备份更加安全,因为aof文件记录了redis实例所有写操作,可以保证数据的一致性和完整性。但是aof备份通常比rdb文件更大,需要更多的存储空间和网络带宽,此外,aof文件恢复数据的速度可能比rdb文件恢复慢一些。
posted @ 2025-03-16 18:26  basickill  阅读(20)  评论(0)    收藏  举报