官网地址和中文地址
中文地址 http://www.redis.cn/
Keys * 尽量不用
list和set
简单安装 启动 连接 配置 使用
查看版本
redis-server - v
redis-server --version
- 查看redis运行的进程
ps -aux | grep redis
ps -ef|grep redis
可以看到redis安装的目录
linux中直接使用(-p) pid
top -p 954
- 启动
redis-server redis.conf
- 修改redis.conf
//修改密码
requirepass password
//开启守护
daemonize yes
// 修改后重启
redis-server redis.conf
- 进入redis
redis-cli
auth password // 一个节点实例
auth -p port password // 多个节点实例可以设置端口号进行登录
// 成功后进入
- 使用命令
SET key
GET key
持久化 RDB和AOF
redis 6.0 多线程性能提升
获取所有keys的数量
命令
dbsize
info memory
info cpu
info lastest_fork_usec
// 查看命令执行次数
info commandstats
// calls 总次数 usec 总耗时 usec_per_call 平均耗时
info lastest_fork_usec
CONFIG RESETSTAT 重置数据
- info 信息 https://www.likecs.com/show-204365642.html
- aof rdb
https://blog.csdn.net/weixin_42614150/article/details/125074667
- 实际操作
- https://blog.csdn.net/weixin_44977377/article/details/123470054
// used_memory_human
- 哈希 HMGET field很多时,查询很慢,可以使用hgetall
redis.conf 中daemonize yes 开启已守护进程运行
版本下载列表
安装启动
systemctl 启动redis
systemctl daemon-reload 重新加载文件
journalctl -ex 查看启动日志
redis.conf
- rdb
// 默认的rbd文件名
dbfilename dump.rdb
// 生成路径
dir /usr/local/redis/data6370
- aof
// 启用aof
appendonly yes
appendfilename "appendonly.aof"
查找文件
// xxx 文件名
find . -name xxx
- 如果想通过rdb文件来恢复,先关闭aof持久化功能,关闭redis,重启服务,并将要备份的rdb文件拷贝到 config get dir 路径下面
appendonly no //关闭aof
config get dir // 获取dump.rdb文件保存路径,
将要使用的rdb文件拷贝到此路径下,文件名要与下面的dbfilename名称保持一致,则重启时会重新加载此rdb文件
config get dbfilename
shutdown // 关闭redis
systemctl restart redis.service // 重新启动redis
/usr/lib/systemd/system // 服务所在位置路径
// ok查看数据恢复完成
防火墙
// 查看防火墙状态
rcfirewalld status
rcfirewalld start
rcfirewalld stop
// 重新加载文件
firewall-cmd --reload
firewall-cmd --zone=public --add-port=80/tcp --permanent
查看端口
netstat -an | grep 6379
切片集群搭建
- https://juejin.cn/post/7084163543108927502#comment
- https://juejin.cn/post/6922690589347545102#heading-3
配置 | 值 | 说明 |
---|---|---|
bind | 172.17.0.2 | 绑定本机IP |
port | 7001 | 端口 |
cluster-enabled | yes | 开启集群模式 |
cluster-config-file | /etc/redis/node-7002.conf | 集群配置文件 |
cluster-node-timeout | 15000 | 节点存活超时时长 |
daemonize | yes | 守护进程 |
pidfile | /var/run/redis_7001.pid | PID文件 |
dir | /var/redis/7001 | 数据目录 |
logfile | /var/redis/log/7001.log | 日志文件 |
appendonly | yes | 开启AOF持久化 |
主从库以及从库再跟从库
- 第一次从库肯定需要全量复制,后面可以采用增量复制
// 在从节点设置主节点ip地址和端口号
replicaof host port
masterauth password // 设置主节点登录密码
info replication // 可以查看本节点的属性是从节点还是主节点
info stats // 查看
设置完毕后分别重启主节点和从节点
哨兵机制
特殊模式下的Redis进程,主从库运行的同时,它也在运行。
监控-选主-通知
通过监控自动选择切换主库。
配置文件名称
- sentinel.conf
redis开启多线程
io-threads 2
io-threads-do-reads yes
客户端缓存开启
通过telnet连接redis服务,并切换到resp3协议模式
hello 3
// 默认模式
// 开启
client tracking on
// 关闭
client tracking off
// 广播模式
// 开启广播模式
client tracking on bcast
// 可针对特定前缀的key进行缓存
client tracking on bcast prefix myprefix
分片集群
- 至少三个主节点,可以再加三个从节点
- 主节点发生异常后,迅速将从节点切换为主节点
- 主节点和从节点都挂掉了,那没办法要进行手动处理了
- redis-trib 工具可用于搭建集群
- Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群
- https://www.jb51.net/article/229037.htm
redis memory
redis slowlog慢查询
redis-cli
auth sunlight2010
// 获取前100个慢查询
slowlog get 100
// 打印所有的慢查询key
slowlog get
// 总共所有的慢查询
slowlog len
// 重置清空慢查询
slowlog reset
docker安装redis
// 查找redis可用版本
docker search redis
// 拉取最新版的redis镜像
docker pull redis:latest
// 可查找到redis镜像
docker images
// 运行容器,指定映射端口号号容器名称 redis-1,并设置容器重启启动
docker run --restart always -itd --name redis-1 -p 6479:6479 redis
javascript
docker run -d \
--name mysql-2 \
-p 14006:3306 \
-v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v /usr/local/docker/mysql/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=sunlight2021 \
mysql
-v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf: 将容器中 /etc/mysql/mysql.conf.d/mysqld.cnf 配置文件挂载到宿主机的 /usr/local/docker/mysql/config/mysqld.cnf 文件上;
-v /usr/local/docker/mysql/data:/var/lib/mysql: 将容器中 /var/lib/mysql 数据目录挂载到宿主机的 /usr/local/docker/mysql/data 目录下;
-d 后台运行程序,并返回容器ID
-p 指定映射端口, 主机端口:容器端口
-v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
// 将容器中的 mysql 配置文件复制到宿主机中指定路径下,路径你可以根据需要,自行修改
// 查看正在运行的redis容器
docker ps
// 进入容器链接redis
docker exec -it redis-1 /bin/bash
// docker mysql // https://juejin.cn/post/6844903848960606221
docker run -d
--name mysql-2
-p 4007:3306
-v /usr/local/docker/mysql/config/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
-v /usr/local/docker/mysql/data/mysql:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=sunlight2021
mysql
docker run -d \
--name mariadb-1 \
-p 13306:3306 \
-e MARIADB_ROOT_PASSWORD=sunlight2021 \
mariadb
monitor
// 监控所有的key操作
redis-cli
auth sunlight2010
CONFIG SET
monitor
// 监听过滤,只监测KEYS
redis-cli -a "sunlight2010" monitor|grep 'KEYS'
// 监听过滤,除了KEYS都检测
redis-cli -a "sunlight2010" monitor|grep -v 'KEYS'
// 还可以将检测写入到log文件中
redis-cli -a "sunlight2010" monitor|grep 'GET' > ttt.log
切换数据库
redis提供了16个数据库 通过索引0-15
select 1 切换到第二个数据库