在这里,我们将给大家分享关于docker安装redis的知识,让您更了解docker安装redis设置密码的本质,同时也会涉及到如何更有效地110redis的哨兵集群redis-clusterdock
在这里,我们将给大家分享关于docker 安装 redis的知识,让您更了解docker安装redis设置密码的本质,同时也会涉及到如何更有效地110 redis 的哨兵集群 redis-cluster docker 安装、Docker Redis 安装、docker 一小时快速入门之利用docker安装Redis、docker 安装 Redis 以及 springboot 整合 redis的内容。
本文目录一览:- docker 安装 redis(docker安装redis设置密码)
- 110 redis 的哨兵集群 redis-cluster docker 安装
- Docker Redis 安装
- docker 一小时快速入门之利用docker安装Redis
- docker 安装 Redis 以及 springboot 整合 redis
docker 安装 redis(docker安装redis设置密码)
docker 拉去镜像以及配置生成容器的步骤几乎和之前的 nginx 安装一样,直接写下面的命令了
1. docker pull redis
2. docker run -p 6379:6379 -v /Users/soe/dockerEnv/redis/data:/data -d redis redis-server --appendonly yes 不需要密码
3. docker run -p 6379:6379 -v /Users/soe/dockerEnv/redis/data:/data -d redis --requirepass "123456" redis-server --appendonly yes 设置密码为 123456
进入容器的命令为:
docker exec -it CONTAINER_ID redis-cli 不带密码登录
docker exec -it CONTAINER_ID redis-cli -a ''123456'' 带密码登录
110 redis 的哨兵集群 redis-cluster docker 安装
主要内容:
1 哨兵集群:https://blog.csdn.net/yaooch/article/details/80167571
a 哨兵的介绍:Sentinel(哨兵)是 Redis 的高可用性解决方案:由一个或多个 Sentinel 实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。
b :redis 哨兵配置步骤如下:
1 准备三个 redis 实例,创建三个 redis 配置文件,文件内容如下
port 6379
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
dir "/var/redis/data/"
daemonize yes
注意:这是主库的配置文件,两个从库的配置文件加上: slaveof 127.0.0.1 6379
2 启动三个 reids 实例: redis-server redis-6379.conf
3 检查三个实例的主从身份: redis-cli -p 6379 info replication
4 配置三个哨兵: redis-sentinel-26379.conf 26380.conf, 26381.conf, 文件内容如下:


// Sentinel节点的端口
port 26379
dir /var/redis/data/
logfile "26379.log"
// 当前Sentinel节点监控 127.0.0.1:6379 这个主节点
// 2代表判断主节点失败至少需要2个Sentinel节点节点同意
// mymaster是主节点的别名
sentinel monitor mymaster 127.0.0.1 6379 2
//每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达
sentinel down-after-milliseconds mymaster 30000
//当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,
原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1
sentinel parallel-syncs mymaster 1
//故障转移超时时间为180000毫秒
sentinel failover-timeout mymaster 180000
daemonize yes
三个哨兵的配置文件只是端口的不同
5 启动三个哨兵: redis-sentinel redis-sentinel-26379.conf
6 检查哨兵身份信息,检查主从节点健康状态
7 配置完成后,杀死 master 节点,查看主从身份切换是否正常.
2 redis-cluster: https://blog.csdn.net/openbox2008/article/details/80033439
a : 数据分区的介绍: 在介绍 redis cluster 之前,简单介绍分布式数据库的数据分区。所谓的数据分区就是将一个较大的数据集分布在不同的节点上进行缓存。常见的数据分区方式:节点取余,一致性哈希,虚拟槽:在 redis cluster 中使用槽来存储一定范围内的数据集,每个节点上有一定数量的槽。当客户端提交数据时,要根据 crc16 (key)&16383 来计算出数据要落在哪个虚拟槽内。与节点取余和一致性哈希分区不同,虚拟槽分区是服务端分区。客户端可以将数据提交到任意一个 redis cluster 节点上,如果存储该数据的槽不在这个节点上,则返回给客户端目标节点信息,告知客户端向目标节点提交数据。
b : 集群角色有 Master 和 Slave。Master 之间分配 slots,一共 16384 个 slot。Slave 向它指定的 Master 同步数据,实现备份。当其中的一个 Master 无法提供服务时,该 Master 的 Slave 讲提升为 Master,保证集群间 slot 的完整性。一旦其中的某一个 Master 和它的 Slave 都失效,导致了 slot 不完整,集群失效,这时就需要人工去处理了。
c : 为什么要用集群 https://blog.csdn.net/shenjianxz/article/details/59775212
数据量太大,一台服务器的内存是 16-256g, 假如业务需要 500g, 此时应该把数据分到不同的位置,分摊集中式的压力,一堆机器干一件事.
并发问题.redis 官方生成可以达到 10 万 / 每秒,每秒执行 10 万条命令,假如美妙执行 100 万条命令.
d : redis 使用中遇到的瓶颈
我们日常在对于 redis 的使用中,经常会遇到一些问题
1、高可用问题,如何保证 redis 的持续高可用性。
2、容量问题,单实例 redis 内存无法无限扩充,达到 32G 后就进入了 64 位世界,性能下降。
3、并发性能问题,redis 号称单实例 10 万并发,但也是有尽头的。
e : redis-cluster 的优势
1、官方推荐,毋庸置疑。
2、去中心化,集群最大可增加 1000 个节点,性能随节点增加而线性扩展。
3、管理方便,后续可自行增加或摘除节点,移动分槽等等。
4、简单,易上手。
d 集群的配置.https://www.cnblogs.com/pyyu/p/9844093.html
3 docker
Docker Redis 安装
原文: Docker Redis 安装拉取官方的镜像
docker pull redis:3.2
查看
docker images redis
运行容器
docker run -p 6379:6379 -v $PWD/data:/data -d redis:3.2 redis-server --appendonly yes
说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
查看启动情况,复制下面的CONTAINER_ID,后面会用到
docker ps
使用redis镜像执行redis-cli命令连接到刚启动的容器
docker exec -it CONTAINER_ID redis-cli
连接看一下
搞定
下次搭建Redis群集
docker 一小时快速入门之利用docker安装Redis
利用docker方式快捷安装redis
#该方式默认下载的最新版本镜像,如需要下载指定版本在redis后面跟:版本号 docker pull redis #查看当前下载redis的镜像 docker images redis #启动 映射到外部的6677 ---> redis客户端直接用服务器ip:6677端口即可请求到redis docker run -it -p 6677:6379 redis
#查看当前运行的容器 docker ps -a
在宿主机创建映射文件 #创建配置目录 mkdir -p /u01/docker/redis/conf #创建数据目录 mkdir -p /u01/docker/redis/data #创建redis配置文件 touch /u01/docker/redis/conf/redis.conf vi /u01/docker/redis/conf/redis.conf redis.conf文件中填写如下内容 #守护进程 daemonize no #注释绑定本地IP #bind 127.0.0.1 #关闭保护模式 protected-mode no #设置口令 requirepass 123456
重新创建目录映射到宿主机的redis容器 #创建启动容器 docker run -it -d --privileged=true -p 6677:6379 -v /u01/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /u01/docker/redis/data:/data --name redis-5.0 redis /etc/redis/redis.conf --appendonly yes
#参数说明 -d: 后台运行容器,并返回容器ID -i: 以交互模式运行容器,通常与 -t 同时使用 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用 --privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限 -v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件 -v /home/docker/redis/data:/data:映射数据目录 redis-server /etc/redis/redis.conf:指定配置文件启动redis-server进程 --name : 指定容器名称,这个最好加上,不然看docker进程的时候会很尴尬 --appendonly yes:开启数据持久化
#docker命令批量删除状态为Exited的容器 docker rm $(docker ps -q -f status=exited) 删除容器 根据容器CONTAINER ID #docker rm <CONTAINER ID>
可以用"docker ps -n 5 "看一下最新前5个的container
要查看启动的centos容器中的输出,可以使用如下方式: $ docker logs $CONTAINER_ID ##在container外面查看它的输出 $ docker attach $CONTAINER_ID ##连接上容器实时查看:
docker 容器 启动/ 关闭/重启
docker start 容器id docker stop 容器id docker restart 容器id
docker 服务随系统启动而启动
#systemctl enable docker.service
docker中的不同镜像创建的容器 随系统启动而启动 未启动的容器 #docker run --restart=always 启动中的容器: #docker update --restart=always <CONTAINER ID>
docker 安装 Redis 以及 springboot 整合 redis
1. 下载 Redis3.2 的镜像
docker pull redis:3.2
2. 创建配置文件
# 如果不想开启RDB,就是配置成 save ""
#900秒内变更1次才触发bgsave
save 900 1
save 300 10
save 60 10000
#rdb保存的文件名
dbfilename dump.rdb
#就是存放我们RDB备份文件的目录
dir /data
#yes:如果save过程出错了则停止Redis写操作
#no:没所谓save是否出错
stop-writes-on-bgsave-error yes
#开启RDB压缩
rdbcompression yes
#进行CRC64算法校验,有10%的性能损耗
rdbchecksum yes
3. 运行容器
docker run -p 6379:6379 --name redis6379 -v /root/redis6379/data:/data -v /root/redis6379/redis.conf:/etc/redis/redis.conf -v/root/redis6379/data:/data -d redis:3.2 redis-server /etc/redis/redis.conf --appendonly yes
命令说明:
-p 6379:6379 : 将容器的 6379 端口映射到主机的 6379 端口
-v $PWD/data:/data : 将主机中当前目录下的 data 挂载到容器的 /data
redis-server --appendonly yes : 在容器执行 redis-server 启动命令,并打开 redis 持久化配置
4. 连接查看容器
runoob@runoob:~/redis$ docker exec -it 容器id redis-cli
如果有密码docker exec -it 容器id redis-cli -a mypassword
172.17.0.1:6379> info
# Server
redis_version:3.2.0
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f449541256e7d446
redis_mode:standalone
os:Linux 4.2.0-16-generic x86_64
arch_bits:64
multiplexing_api:epoll
5.springboot 集成 redis,pom 添加依耐
<!-- redis依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
6. 配置 application.yml
spring:
#redis配置
redis:
#Redis服务器地址
host: 192.168.1.193
#Redis服务器连接端口
port: 6379
#Redis数据库索引(默认为0)
database: 0
jedis:
pool:
#连接池最大连接数(使用负值表示没有限制)
max-active: 50
#连接池中的最大空闲连接
max-idle: 20
#连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 3000
#连接池中的最小空闲连接
min-idle: 2
#连接超时时间(毫秒)
timeout: 5000
#Redis密码
password: mypassword
7. 编写 redis 工具类
package com.fengshun.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
/**
* redis操作工具类.</br>
* (基于RedisTemplate)
* @author xcbeyond
* 2018年7月19日下午2:56:24
*/
@Component
public class RedisUtils {
@Autowired
private RedisTemplate<String, String> redisTemplate;
/**
* 读取缓存
*
* @param key
* @return
*/
public String get(final String key) {
return redisTemplate.opsForValue().get(key);
}
/**
* 写入缓存
*/
public boolean set(final String key, String value) {
boolean result = false;
try {
redisTemplate.opsForValue().set(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 更新缓存
*/
public boolean getAndSet(final String key, String value) {
boolean result = false;
try {
redisTemplate.opsForValue().getAndSet(key, value);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 删除缓存
*/
public boolean delete(final String key) {
boolean result = false;
try {
redisTemplate.delete(key);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
8. 测试
package com.fengshun.config;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
*
* @author xcbeyond
* 2018年7月19日下午3:08:04
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class RedisTest {
@Resource
private RedisUtils redisUtils;
/**
* 插入缓存数据
*/
@Test
public void set() {
redisUtils.set("redis_key", "redis_vale");
}
/**
* 读取缓存数据
*/
@Test
public void get() {
String value = redisUtils.get("redis_key");
System.out.println(value);
}
}
https://github.com/Blank-mind/token-authentication-example
关于docker 安装 redis和docker安装redis设置密码的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于110 redis 的哨兵集群 redis-cluster docker 安装、Docker Redis 安装、docker 一小时快速入门之利用docker安装Redis、docker 安装 Redis 以及 springboot 整合 redis的相关知识,请在本站寻找。
本文标签: