时间:2022-04-13
作者:tuziailuobo
简介:在docker中安装配置redis记录。
Docker中安装Redis并挂载
1、拉取镜像
docker pull redis # 我用的最新的redis,如果需要使用某版本redis,使用命令: docker pull redis:tag
2、配置本地环境
mkdir /home/redis/{conf,data}
# 然后从下面地址拷贝redis.conf
# 上传至 /docker/redis/conf 目录
# http://download.redis.io/redis-stable/redis.conf
3、 修改redis.conf文件
protected-mode no # 默认为yes 开启保护模式
# 将bind 127.0.0.1注释掉 或改为0.0.0.0
bind 0.0.0.0
daemonize no # 允许外部访问 关闭守护进程方式启动,改为 yes 使用外部配置文件会启动失败
requirepass password # 设置密码(推荐,非必须)
2、 创建容器并运行
docker run -d \
--privileged=true \
-p 6379:6379 \
--restart always \
-v /home/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/redis/data:/data \
--name redis02 redis redis-server /etc/redis/redis.conf \
--appendonly yes
说明
–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-d:后台启动
-p 6379:6389:将宿主机的6379端口和容器的6389端口进行映射关联,外界可以通过访问宿主机的6379访问到容器的6389端口,这里由于我配置了redis的启动端口为6389所以这里容器需要通过6389才能找到redis;
-v /home/redis/conf:/etc/redis/conf:映射规则宿主机目录:容器目录,这里挂载的是整个文件夹目录不是配置文件,千万别弄错了,我们这里就是把我们存放配置文件的目录和容器中我们准备存放配置文件的目录进行了一个挂载映射,这样我们修改外置配置文件并且重新启动容器以后就会挂载外面的配置文件了,注意:外置目录最好事先准备好
-v /home/redis/data:/etc/redis/data:这个就和上面一样了
–name myredis:给容器起个名字[唯一]
redis: 指定镜像名称
redis-server /etc/redis/conf/redis.conf:指定使用哪个配置文件启动redis容器,注意这里填写的是你挂载进去以后,配置文件所在的容器内部位置
–appendonly yes:开启数据持久化
3、测试远程连接
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
public static void main(String[] args) {
// new jedis object
Jedis jedis = new Jedis("your ip", 6379);
jedis.auth("123456");
System.out.println(jedis.ping());
}
输出:PONG
表示远程连接成功。
4、扩展:配置详解
bind 127.0.0.1
#绑定的ip
protected-mode yes
#保护模式
port 6379
#端口
#这些配置之后可能会经常使用
daemonize yes # 默认是no,需要手动设置为yes
#以守护线程的方式运行
pidfile /var/run/redis_6379.pid # 如果以后台的方式运行,我们就需要指定一个pid文件
#日志
debug、verbose、notice、warning
#设置日志等级
loglevel notice
logfile
#设置日志文件位置
database 16
#16个数据库
always-show-logo yes
#永远显示logo
# 持久化的时候会用到
snapshotting#快照
三个方法,在规定时间内,执行了多少次操作,则会持久化到文件 .rdb .aof
redis是内存数据库,没有持久化,数据就会丢失
# 如果900s内,如果至少有一个1 key进行了修改,我们及进行持久化操作
save 900 1
# 如果300s内,如果至少10 key进行了修改,我们及进行持久化操作
save 300 10
# 如果60s内,如果至少10000 key进行了修改,我们及进行持久化操作
save 60 10000
stop-writes-on-bgseve-error yes
#持久化错误之后是否要继续工作,默认开启
rdbcompression yes
#是否压缩rdb文件,需要消耗cpu资源
rdbchecksum yes
#保存rdb文件是否要进行错误检查校验
dir ./
#rdb文件保存的目录
replication #主从复制,需要搭建多个redis
Security #安全设置
requirepass foobared
#默认没有密码
#通过命令config set requirepass 可以设置密码
#auth password 进行登录
########################################################################
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass 123
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> quit
haoyun@HAOYUN ~ % redis-cli #设置密码操作
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
########################################################################
maxlients 10000
#设置能连接上redis的最大客户端数量
maxmemory <bytes>
#redis配置最大的内存数
maxmemory-policy noeviction
#内存到达上限之后的处理策略
#移除一些过期的key
#报错、、、
#六种机制
volatile-lru:设置了过期时间的key进行lru移除
allkeys-lru:删除
volatile-random:删除即将过期的key
allkeys-random:随机删除
volatile-ttl:删除即将过期的
noeviction:永远不过期,直接报错
Append only模式 aof模式
#持久化的两种方式之一RDB、AOF
appendonly no
#默认是不开启的,默认使用RDB持久化,大部分情况下RDB完全够用
appendfilename "appendonly.aof"
#aof持计划文件名
appendfsync always
#每次修改都会synch 消耗性能
appendfsync everysec
#每秒执行一次 synch,可能会丢失那1s的数据
appendfsync no
#不执行sync 这时候操作系统自己同步数据,速度是最快的,一般也不用