一、搭建docker的Redis镜像
路径: /opt/docker/redis
1.创建文件夹
mkdir /opt/docker/redis/data
mkdir /opt/docker/redis/conf
chmod -R 777 /opt/docker/redis/*
2.拉取镜像,可指定版本
docker pull redis
- docker-compose创建redis.yaml
vim redis.yaml
version: '3' #设置docker compose 版本
services: #设置services
redis:
image: redis:latest #镜像名称
container_name: redis #容器名称
restart: always #重启docker引擎后该容器也重启
ports:
- 6379:6379 #本地端口号与容器内部端口号
volumes: #指定挂载目录
- ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:rw
- ./redis/data:/data:rw
#redis.conf文件和data目录分别映射了主机的redis.conf文件和主机的data目录 rw表示读写权限
logging: # 日志配置
driver: "json-file" # 指定日志驱动程序为"json-file",这意味着容器的日志将以JSON格式进行记录。
options:
max-size: "500m" # 该配置选项设置了容器日志文件的最大大小为500MB。当日志文件达到这个大小时,Docker将自动对其进行轮转(即创建一个新的日志文件,并对旧的日志文件进行归档或删除)
networks: # 网络
- test-net
command: # 指定了Redis容器启动时要执行的命令
/bin/bash -c "redis-server /usr/local/etc/redis/redis.conf " #使用command可以覆盖容器启动后默认执行的命令。这里启动执行指定的redis.conf文件
创建conf/redis.conf
vim conf/redis.conf
protected-mode no # 禁用保护模式,允许外部网络访问 Redis 服务
port 6379 #指定容器内部监听的端口号为 6379
timeout 0 #设置客户端连接的超时时间为 0,表示永不超时。
save 900 1 # 900s内至少一次写操作则执行bgsave进行RDB持久化
save 300 10
save 60 10000
rdbcompression yes #启用 RDB 文件压缩,可以减小磁盘占用空间
dbfilename dump.rdb # 指定 RDB 持久化文件的名称为 dump.rdb
dir /data #指定 Redis 数据库文件的存储目录为 /data
appendonly yes # 启用 AOF(Append Only File)持久化机制
appendfsync everysec # 每秒同步一次 AOF 文件到磁盘,平衡性能和数据安全
requirepass 123 # 设置 Redis 访问密码为 "123",要求客户端连接时提供正确的密码
save配置解读:
1) “save 900 1”表示如果900秒内至少1个key发生变化(新增、修改和删除),则重写rdb文件;
2) “save 300 10”表示如果每300秒内至少10个key发生变化(新增、修改和删除),则重写rdb文件;
3) “save 60 10000”表示如果每60秒内至少10000个key发生变化(新增、修改和删除),则重写rdb文件。
启动容器
docker-compose -f redis.yaml up -d
二、Redis常用命令
菜鸟教程
https://www.runoob.com/redis/redis-keys.html
#进入redis:
redis-cli -h 127.0.0.1 -p 6379 -a 123
#进入redis客户端输入命令 ping 查看是否启动
192.168.1.1:6379> ping
PONG
#有时候会有中文乱码。要在 redis-cli 后面加上 --raw
./redis-cli --raw -h 127.0.0.1 -p 6379
#获取所有的key:
keys *
#查看某key的value:
get key
#删除key
del key
# 获取键总数
dbsize
# 移动键
move key db
# 更改键名称
rename key newkey
# 存储值
左端存值语法:lpush key value [value ...]
# 弹出元素
左端弹出语法:lpop key
# 获取元素个数
语法:llen key
# 获取列表元素
两边获取语法:lrange key start stop
lrange key 0 -1
#删除元素
根据值删除语法:lrem key count value
如果 count 大于 0,则从列表的头部开始向尾部搜索,并删除与 value 相等的元素,直到删除 count 个元素为止。
如果 count 小于 0,则从列表的尾部开始向头部搜索,并删除与 value 相等的元素,直到删除 count 绝对值个元素为止。
如果 count 等于 0,则删除列表中所有与 value 相等的元素。
lrem userids 3 222
范围删除语法:ltrim key start stop
保留指定范围内的元素,而删除其他的元素。具体来说,start 和 stop 参数分别表示了要保留的元素的起始和结束索引。
保留列表中索引在 [0, 2] 范围内的元素
LTRIM mylist 0 2
#清除指定库, 使用SELECT命令选择该数据库,然后再执行FLUSHDB命令以清除它
FLUSHDB
#删除所有的redis数据:
FLUSHALL