步骤:
提示:以下是本篇文章正文内容,下面案例可供参考
1、在本地某个位置创建以下内容
# 以/docker/redis为例 mkdir -p /docker/redis mkdir -p /docker/redis/data touch /docker/redis/redis.conf touch /docker/redis/redis.bash
2、编辑配置文件vim /docker/redis/redis.conf
# Redis配置文件 # Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no # 指定Redis监听端口,默认端口为6379 port 6379 # 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问 bind 0.0.0.0 #需要密码则打开 requirepass 0122 # 持久化 appendonly yes
3、编辑/docker/redis/redis.bash
docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf
解释以上命令
docker run redis # 从redis镜像运行容器 -p 6379:6379 # 映射本地6379端口到容器6379端口,前为本地端口 --name redis # 设置容器名称为redis,方便以后使用docker ps进行管理 -v /docker/redis/redis.conf:/etc/redis/redis.conf # 关联本地/docker/redis/redis.conf文件到容器中/etc/redis/redis.conf,同样,前为本地 -v /docker/redis/data:/data # 关联本地/docker/redis/data到容器内/data目录,此为存放redis数据的目录,为方便以后升级redis,而数据可以留存 -d # 后台启动,使用此方式启动,则redis.conf中daemonize必须设置为no,否则会无法启动 redis-server /etc/redis/redis.conf # 在容器内启动redis-server的命令,主要是为了加载配置
4、给予执行权限
记得把 密码 改为自己想要设置的密码
sudo chmod 777 /docker/redis/redis.bash
参数说明:
–restart=always: 当Docker 重启时,容器会自动启动。
–privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /mydata/mysql/log:/var/log/mysql 映射日志文件
-v /opt/mysql/data/:/var/lib/mysql 映射数据目录
-v /mydata/mysql/my.cnf:/etc/mysql/my.cnf 映射配置文件
-v /mydata/mysql/conf.d:/etc/mysql/conf.d 映射配置文件
-e MYSQL_ROOT_PASSWORD=123456 映射mysql root用户密码
-d mysql 以后台方式启动
这里可能会报错,需要加入一些配置,把之前创建失败的容器删除,同时把相关目录删除
- 创建目录
mkdir -p /mydata/mysql touch /mydata/mysql/my.cnf
- 在my.cnf中添加以下内容
[mysqld] user=mysql character-set-server=utf8 default_authentication_plugin=mysql_native_password secure_file_priv=/var/lib/mysql expire_logs_days=7 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION max_connections=1000 [client] default-character-set=utf8 [mysql] default-character-set=utf8
- 重新执行创建容器的命令就可以了
5、启动
# 查看是否已启动 docker ps # 如果无法启动或者docker ps中无对应内容,将bash中命令复制出来,删除-d参数启动,查看报错信息 # 使用redis-cli或者rdm访问 localhost:6379 # 如需访问容器,可使用 docker exec -it redis bash redis-cli
注意:
#出现以下错误则是没有输入密码导致 127.0.0.1:6379> set name "hello" (error) NOAUTH Authentication required. #运行以下命令即可 127.0.0.1:6379> auth 0122
6. 测试
在controller中找一个get风格的方法,添加如下代码
//连接本地的redis Jedis jedis = new Jedis("192.168.125.131",6379); //如果有密码则需要下面这一行 jedis.auth("0122"); //查看服务是否运行,运行正常的话返回一个PONG,否则返回一个连接错误 System.out.println(jedis.ping()); /*****************String示例*****************/ //设置字符串数据 jedis.set("word","helloWorld"); //读取字符串数据 System.out.println(jedis.get("word")); //删除数据 jedis.del("word"); /*****************List示例*****************/ jedis.lpush("list","google"); jedis.lpush("list","aLi"); jedis.rpush("list","Mi"); List<String> stringList = jedis.lrange("list",0l,-1l); for(String str:stringList){ System.out.println(str); } /*****************Hash示例*****************/ HashMap<String,String> map = new HashMap<>(); map.put("name","tom"); map.put("age","81"); jedis.hmset("man",map); System.out.println(jedis.hmget("man","name")); System.out.println(jedis.hgetAll("man")); System.out.println("获取所有字段:"+jedis.hkeys("man")); System.out.println("获取字段数量:"+jedis.hlen("man")); System.out.println("判断age字段是否存在:"+jedis.hexists("man","age")); jedis.sadd("set1","1"); jedis.sadd("set1","2"); jedis.sadd("set1","1"); jedis.sadd("set2","1"); jedis.sadd("set2","4"); System.out.println("获取集合的成员数"+jedis.scard("set1")); System.out.println("获取集合中的成员"+jedis.smembers("set2")); System.out.println("判断集合是否包含指定成员"+jedis.sismember("set1","2")); System.out.println("获取多个集合的交集"+jedis.sinter("set1","set2")); System.out.println("获取多个集合并集"+jedis.sunion("set1","set2")); System.out.println("返回第一个集合与其他集合之间的差异"+jedis.sdiff("set1","set2"));
出现以下类容说明成功!
也可以使用工具来进行测试,这里使用:RedisDesktopManager
输入linux的ip地址和设置的端口号6379以及自定义的密码后得到如下结果
到此。部署成功!
总结
提示:docker启用redis步骤大致如上文所示