基于Docker的Redis安装,连接

Windows下安装Redis,推荐使用Docker

Docker安装Redis

1. Pull docker image, 默认pull latest

docker pull redis

2. 创建container

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6668:6379 --name myredis -v /D/XXXX/conf/myredis.conf:/etc/redis/myredis.conf -v /D/XXXX/data:/data/ -d redis:latest redis-server /etc/redis/myredis.conf  --appendonly yes –requirepass 123456

-p 6668:6379 redis默认端口是6379,如果想使用其他端口,可以在conf文件中修改,6668是对外映射端口,可根据服务器情况自行修改
-v /D/XXXX/conf/myredis.conf:/etc/redis/myredis.conf 挂载volume,使用本地配置文件,不设置的话redis会自动生成redis.conf文件
-v /D/XXXX/data:/data/ 

–requirepass 123456 要与myredis.conf中的配置一致,可以不加
--appendonly yes 启用持久化
redis-server /etc/redis/myredis.conf 使用myredis.conf配置启动redis

配置文件myredis.conf

protected-mode yes

# 端口号
port 6379

# 用守护线程的方式启动
daemonize no

# 给redis设置密码
requirepass 123456

# redis持久化  默认是no
appendonly yes

# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"

tcp-keepalive 300

官方conf文件:http://download.redis.io/redis-stable/redis.conf

本地连接时设置打开protected-mode,注释掉binding如果你不确定host配置,否则会导致连接失败

# bind 192.168.1.100 10.0.0.1 # listens on two specific IPv4 addresses
# bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6
# bind * -::* # like the default, all available interfaces

# bind 127.0.0.1 -::1

3. 验证redis container

 查看日志检查redis是否成功启动

docker logs --since 30m myredis

进入redis容器

docker exec -it myredis bash

进入redis控制台

redis-cli -p 6668 -a 123456

如果设置了端口映射和密码,这里需要提供正确的端口还和密码,否则连接会失败

图形化管理工具

推荐使用redis官方工具redisinsight (https://redis.com/redis-enterprise/redis-insight/)

类似redis-cli连接,需要提供host,port,和password(如果conf中有设置),database alias可以任意命名

建议使用加强版redis RedisMod,redisinsight支持RedisMod的增强模块

 C#连接docker redis

如果未显示设置端口映射和密码,可以将连接简化为ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");

设置AbortOnConnectFail = false,连接失败时不会抛异常,但是连接失败的话redis.Connnected依然会是false

using StackExchange.Redis;

ConfigurationOptions options = new ConfigurationOptions
{
    AbortOnConnectFail = false,
    EndPoints = { { "localhost", 6668} },
    Password = "123456"
};

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(options);

IDatabase db = redis.GetDatabase();

var name = db.StringGet("name");

Console.WriteLine(name);

 

posted @ 2023-06-02 15:12  TigerLu  阅读(292)  评论(0编辑  收藏  举报