基于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);