美文网首页容器
Docker安装Redis(使用dockerfile)

Docker安装Redis(使用dockerfile)

作者: 夜行神喵 | 来源:发表于2020-02-03 01:01 被阅读0次

    1. 下载镜像

    • 下载最新发布版本
    docker pull redis
    

    或在官网查看 https://redis.io 哪个是最后稳定版本(latest stable version)

    image.png
    • 下载5.0.7
    docker pull redis:5.0.7
    
    • 查看镜像信息
    �docker history redis:5.0.7
    docker image inspect redis:5.0.7
    

    2. 创建redis参数文件

    2.1 下载参数文件模板

    https://raw.githubusercontent.com/antirez/redis/5.0/redis.conf

    • 建立本地存放数据文件的路径
    mkdir -p ~/Docker/redis/data
    cd ~/Docker/redis/data
    

    2.2 修改参数文件

    mv ~/Downloads/redis.conf redis.conf.orig
    vi redis.conf.orig
    
    • 注释 bind 127 ,解绑local ip
    #bind 127.0.0.1
    bind 127.0.0.1
    
    • 确保daemonize,为no(默认) ,否则通过docker -d 方式不能启动redis, (非docker方式,需要改为yes实现后台启动)
    daemonize no
    
    • 外网访问
    #protected-mode yes
    protected-mode no
    
    • 设定密码
    #requirepass foobared
    requirepass welcome1
    
    • 使用aof持久化方式
    #appendonly no
    appendonly yes
    

    3. 创建Dockerfile

    cd ~/Docker/redis/
    
    vi Dockerfile
    
    FROM redis:5.0.7
    MAINTAINER mayongzhi@163.com
    COPY ./data/redis.conf.orig /usr/local/etc/redis/redis.conf
    EXPOSE 6379
    CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
    

    4. 创建镜像

    docker build -t myredis:5.0.7 .
    
    myzmac:redis myz$ docker build -t myredis:5.0.7 .
    Sending build context to Docker daemon  127.5kB
    Step 1/5 : FROM redis:5.0.7
     ---> 9b188f5fb1e6
    Step 2/5 : MAINTAINER mayongzhi@163.com
     ---> Running in c4ba5c76f878
    Removing intermediate container c4ba5c76f878
     ---> 2a616e1fccd6
    Step 3/5 : COPY ./data/redis.conf.orig /usr/local/etc/redis/redis.conf
     ---> e2f3268b26dd
    Step 4/5 : EXPOSE 6379
     ---> Running in 90a9b1a59d54
    Removing intermediate container 90a9b1a59d54
     ---> 9f92e2f1a529
    Step 5/5 : CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
     ---> Running in 3c7b6eb85d97
    Removing intermediate container 3c7b6eb85d97
     ---> 46a8c234c96d
    Successfully built 46a8c234c96d
    Successfully tagged myredis:5.0.7
    myzmac:redis myz$ 
    
    myzmac:redis myz$ docker images myredis
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    myredis             5.0.7               46a8c234c96d        31 seconds ago      98.3MB
    

    4. 创建容器

    docker run -e TZ="Asia/Shanghai"  -h myredis --name myredis507  -m 64m  -p 63791:6379 -v /Users/myz/Docker/redis/data:/data -d myredis:5.0.7
    

    5. 连接使用

    • 进入容器连接
    myzmac:redis myz$ docker exec -it myredis bash
    root@myredis:/data# redis-cli -a welcome1
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    127.0.0.1:6379> set nm myz
    OK
    127.0.0.1:6379> get nm
    "myz"
    127.0.0.1:6379> save 
    OK
    127.0.0.1:6379> 
    root@myredis:/data# 
    
    • 外部连接
    redis-cli -h 1.1.1.2 -p  63791 -a welcome1
    
    • 使用python操作python 示例1
    pip3 install redis
    
    myzmac:redis myz$ cat demo.py
    import redis
    redis_pool = redis.ConnectionPool(host='127.0.0.1', port= 63791, password= 'welcome1', db= 0)
    redis_conn = redis.Redis(connection_pool= redis_pool)
    v = redis_conn.get('nm')
    print (v)
    name_dict = {
        'nm1' : 'mmm',
        'nm2' : 'yyy',
        'nm3' : 'zzz'
    }
    redis_conn.mset(name_dict)
    m = redis_conn.mget('nm1', 'nm1','nm3')
    print(m)
    
    myzmac:redis myz$ 
    myzmac:redis myz$ python3 demo.py 
    b'myz'
    [b'mmm', b'mmm', b'zzz']
    
    • 使用python操作python 示例2(使用Pipe方式 速度更快)
    myzmac:redis myz$ cat demo2.py 
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    """
    __title__ = 'demo'
    __author__ = 'Jason Ma'
    __mtime__ = '2020/2/2'
    __version__= ' '
    """
    
    import redis
    import time
    
    redis_pool = redis.ConnectionPool(host='127.0.0.1', port= 63791, password= 'welcome1', db= 1)
    r = redis.Redis(connection_pool= redis_pool)
    r.flushdb()
    
    # start = time.time()
    # for i in range(10000):
    #     r.set('nm_'+str(i),i)
    # print(r.dbsize())
    # end = time.time()
    # print ("执行用时:",end-start,"秒")
    
    redis_pool = redis.ConnectionPool(host='127.0.0.1', port= 63791, password= 'welcome1', db= 2)
    r = redis.Redis(connection_pool= redis_pool)
    pipe = r.pipeline()
    r.flushdb()
    
    start = time.time()
    for i in range(100000):
        pipe.set('nm_'+str(i),i)
    
    pipe.execute()
    cnt = r.dbsize()
    end = time.time()
    
    print ("写入",cnt,"条用时:",end-start,"秒")
    myzmac:redis myz$ python3 demo2.py
    写入 100000 条用时: 3.0522289276123047 秒
    myzmac:redis myz$ python3 demo2.py
    写入 100000 条用时: 2.919153928756714 秒
    

    FYI:

    REDIS官网:
    https://redis.io

    详细参数配置参考:
    https://redis.io/topics/config

    通过python 使用redis
    https://zhuanlan.zhihu.com/p/51608696

    相关文章

      网友评论

        本文标题:Docker安装Redis(使用dockerfile)

        本文链接:https://www.haomeiwen.com/subject/fascxhtx.html