Administrator
发布于 2023-05-03 / 143 阅读
0
0

Redis Theory Two

Redis Install

refer to: https://redis.io/docs/getting-started/installation/install-redis-from-source/

wget https://download.redis.io/releases/redis-6.0.19.tar.gz

tar -zxvf redis-6.0.19.tar.gz

cd redis-6.0.19/

make 

make install

默认的安装路径是在 /usr/local/bin目录下:

[root@VM-0-4-opencloudos redis-6.0.19]# cd /usr/local/bin

[root@VM-0-4-opencloudos bin]# ls
chardetect  cloud-id  cloud-init  cloud-init-per  jsonschema  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server

该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令。其中:

redis-cli:是redis提供的命令行客户端
redis-server:是redis的服务端启动脚本
redis-sentinel:是redis的哨兵启动脚本

修改配置文件:

cd  /opt/Redis/redis-6.0.19
vim redis.conf

然后修改redis.conf文件中的一些配置:

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123456

Redis的其它常见配置:


# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 淘汰策略
maxmemory-policy allkeys-lru
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

启动redis,指定配置文件

cd /usr/local/bin/

redis-server /opt/Redis/redis-6.0.19/redis.conf 

停止服务:


cd /usr/local/bin/

# 利用redis-cli来执行 shutdown 命令,即可停止 Redis 服务,
# 因为之前配置了密码,因此需要通过 -u 来指定密码
redis-cli -u 123456 shutdown

开启端口

systemctl start firewalld.service
firewall-cmd --state

firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload


maxmemory-policy 一共有六种策略

noeviction:不会继续服务写请求( del 请求可以继续服务),读请求可以继续进行。这样可以保证不会丢失数据,但是会让线上的业务不能持续进行。这是默 认的淘汰策略。

volatile-lru: 尝试淘汰设置了过期时间的 key,最少使用的 key 优先被淘汰。 没有设置过期时间的 key不会被淘汰,这样可以保证需要持久化的数据不会突然丢失。

volatile-ttl:跟上面几乎一样,不过淘汰的策略不是 LRU,而是比较 key 的剩余寿命时的值,ttl越小越优先被淘汰。

volatile-random:跟上面几乎一样,不过淘汰的 key 是过期 key 集合中随机的 key。

allkeys-lru:区别于 volatile-lru,这个策略要淘汰的 key 对象是全体的 key 集 合,而不只是过期的 key 集合。这意味着一些没有设置过期时间的 key 也会被淘汰。

6 . allkeys-random:跟上面几乎一样,不过淘汰的 key 是随机的 key。

在一台机器上,安转多个Redis Server Instance

cd /opt/Redis/redis-5.0.5
cp redis.conf redis_16379.conf

修改如下属性

配置项默认值16379
文件名redis.confredis_16379.conf
port637916379
pidfile/var/run/redis_6379.pid/var/run/redis_16379.pid
logfile 这一项可以不配置/var/log/redis/redis_6379.log/var/log/redis/redis_16379.log
dbfilenamedump.rdbdump_16379.rdb

111

cd /usr/local/bin/
redis-server /opt/Redis/redis-5.0.5/redis.conf
redis-server /opt/Redis/redis-5.0.5/redis_16379.conf

firewall-cmd --add-port=16379/tcp --permanent
firewall-cmd --reload

编写shell脚本,执行redis命令


[root@cacheserver ~]# cat RedisClear.sh 
#!/bin/bash

redis-cli -h 218.94.128.34 -p 16379 -a long123456@HhRedis <<EOF
flushall
EOF

上面实现的功能是,登录redis,然后执行清理。

再来一个查看所有redis中key的脚本,如下:

#!/bin/bash

redis-cli -h 218.94.128.34 -p 16379 -a long123456@HhRedis <<EOF
SELECT 3
KEYS *
EOF


评论