Redis Docker Config
Redis-Docker-Ubuntu启动容器命令
docker run -d --name redis1 -p 16379:6379 -v /Users/${yourname}/xcredis/docker_data:/data 44d36d2c2374 --appendonly yes --appendfsync everysec
注意挂载目录,冒号前面是宿主机,后面是docker内部
设置密码
--requirepass "mypassword"
挂载外部配置和数据安装
1.创建目录和配置文件redis.conf
mkdir /docker
mkdir /docker/redis
mkdir /docker/redis/conf
mkdir /docker/redis/data
创建redis.conf配置文件
touch /docker/redis/conf/redis.conf
redis.conf文件内容自行添加:
切记注释掉:#daemonize yes 否则无法启动容器
重要话说三遍:注释掉#daemonize yes,注释掉#daemonize yes,注释掉#daemonize yes
2.创建启动容器,加载配置文件并持久化数据
docker run -d --privileged=true -p 6379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redistest2 redis:4.0 redis-server /etc/redis/redis.conf --appendonly yes
参数说明:
--privileged=true
:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf
:映射配置文件
-v /docker/redis/data:/data
:映射数据目录
redis-server /etc/redis/redis.conf
:指定配置文件启动redis-server进程
--appendonly yes
:开启数据持久化
其他redis配置选项(选自某篇技术博客)
appendonly yes #开启AOF模式 原文1
appendfilename “appendonly.aof” #保存数据的AOF文件名称 原文1
appendfsync always
appendfsync everysec #fsync模式 原文2
appendfsync no
no-appendfsync-on-rewrite no #原文3
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb #原文4
aof-load-truncated yes #原文5
redis客户端连接(shell)
redis-cli -h 192.168.124.14 -a redis
redis客户端连接(py)
import time
import redis
from redis import ConnectionPool
class RedisPy(object):
def __init__(self):
pool = ConnectionPool(host='127.0.0.1', port=36379, max_connections=100)
self.conn = redis.Redis(connection_pool=pool)
def get_keys(self):
keys = self.conn.keys("*")
print(keys)
def set_string(self):
r = self.conn.set("name", "uname")
print(r)
def get_string(self):
r = self.conn.get("name")
print(r)
def r_push(self):
r = self.conn.rpush("list1", 100, 200, 300)
print(r)
def b_l_pop(self):
r = self.conn.blpop("list1", 100)
print(r)
if __name__ == '__main__':
rp = RedisPy()
# rp.get_keys()
# rp.set_string()
# rp.get_string()
# rp.r_push()
while True:
time.sleep(3)
rp.b_l_pop()