Redis数据库,平常做缓存用的最多,之前一直没有记录过redis的安装流程,等到用时才想起来去百度上搜索,然而搜出来的东西十有八九都大同小异。所以这次用docker安装一下,再此记录

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的

1.查询镜像

docker search redis

2.拉取官方镜像

docker pull redis

3.在本地创建一个文件夹来存放redis的配置文件、数据(也就是所谓的挂载数据做用就是将此目录中的文件或文件夹覆盖掉容器内部的文件或文件夹

mkdir conf
docker run -d -p 6379:6379 -v $PWD/conf/redis.conf:/usr/local/etc/redis/redis.conf -v $PWD/data:/data --name docker-redis docker.io/redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
# -d:表示后台运行,不加-d执行上面的命令你就会看到redis启动的日志信息了
# p:表示端口映射,冒号左面的是我们的宿主机的端口,也就是我们虚拟机的端口,而右侧则表示的是mysql容器内的端口
# --name:是我们给redis容器取的名字
# -v:表示挂载路径,$PWD表示当前目录下,冒号左面的表示我们宿主机的挂载目录,也就是我们虚拟机所在的文件路径,冒号右边则表是的是redis容器在容器内部的路径,上面的命令我挂载了redis.conf(redis的配置文件)

4.此时redis启动成功,但是没有密码,我们可以设置密码并启动

docker stop $(docker ps -aq)  #停止所有镜像
docker run -d --name redis -p 6379:6379 redis --requirepass "luweiadmin"
# 查看一下是否成功
docker images
docker ps
# 查看容器运行的IP
docker inspect docker_redis | grep IPAddress
# 连接redis的几种方式
docker exec -it d0b86 redis-cli
docker exec -it d0b86 redis-cli -h localhost -p 6379 
docker exec -it d0b86 redis-cli -h 127.0.0.1 -p 6379 
docker exec -it d0b86 redis-cli -h 172.168.1.1 -p 6379  # 远程连接

5.进入redis

docker exec -it docker_redis redis-cli
127.0.0.1:6379> auth admin
# 远程连接时使用  如果有密码 使用 -a参数
docker exec -it redis_s redis-cli -h 192.168.1.1 -p 6379 -a admin 
192.168.1.1:6379>

6.redis安装完成,现在介绍一下用python连接redis的几种方法

# 首先安装redis
pip install redis
# 一、直连
import redis
coon = redis.Redis(host='127.0.0.1',port=6379,password='admin') # 拿到redis链接
coon.set('name','luwei') # 朝内存数据库存放key是name,value是luwei的字符串
coon.get('name') # 获取值  打印出来的值为luwei


# 二、使用连接池连接
import redis
pool = redis.ConnectionPool(host='127.0.0.1',port=6379,password='admin')# 连接池
coon = redis.Redis(connection_pool=pool)# 从池子里拿一个连接
coon.set('name','luwei')
coon.get('name')


# 三、在Django里面进行连接
pip install django_redis  #安装模块
# setting.py 中配置
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',# 缓存使用redis数据库储存
        'LOCATION': 'redis://127.0.0.1:6379/1',
        # 使用本地的6379端口(redis的默认端口)第1个数据库(redis共有16个数据库0-15)
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",# 使用django_redis的默认参数
            "PASSWORD":"admin"
        },
    },
}
# 配置完成后即可在view文件中连接redis
from django_redis import get_redis_connection
conn = get_redis_connection('default') # 建立连接 default为设置的连接名
conn.set('name','luwei')
conn.get('name')
name = conn.hget('name', 'luwei') # hget hash取值


# 四、Django框架中session存储到redis中的配置
# 第一种
pip install django-redis-sessions  # 安装包
#  在Django项目的settings文件中增加下面的配置
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = 'localhost'
SESSION_REDIS_PORT = 6379
SESSION_REDIS_DB = 1
SESSION_REDIS_PASSWORD = 'admin'
SESSION_REDIS_PREFIX = 'session'

# 第二种 先将Django中的缓存设置为redis,然后将session的存储地方设置为Django的缓存中
CACHES = {
 "default": {
  "BACKEND": "django_redis.cache.RedisCache",
  # 把这里缓存你的redis服务器ip和port
  "LOCATION": "redis://192.168.1.1:6379/1",
  "OPTIONS": {
   "CLIENT_CLASS": "django_redis.client.DefaultClient",
   "PASSWORD":"admin"
  }
 }
}
# 设置redis存储session信息
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

虽然写的很简练,但确实是最实用的

07-27 08:32