redis踩坑记
1. 什么是redis?
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
2. 安装redis(windows版本)
2.1 下载redis
选择最新稳定版安装,地址:https://github.com/microsoftarchive/redis/releases
选择其中的msi版本下载
接下来一直点击下一步操作即可
2.2 安装redis
这里需要点击加环境变量
记下redis的默认端口是6379,mysql的是3306,常用的最好能背出来
家里电脑内存足够的就不用点击内存限制,直接下一步
等待完成
2.3 修改配置
redis这个软件安装上之后,需要对他进行一些基本设置,以便于我们以后可以通过python代码来对redis中的数据进行操作。
-
打开配置文件,redis安装的目录下的
redis.windows-service.conf
文件
修改配置
设置绑定IP,如果想要让局域网内其他主机访问自己的redis,需要设置 bind 0.0.0.0
设置redis密码,如果想需要提供密码再登录redis,需要设置 requirepass 密码
2.4 启动redis
安装和配置完成之后,需要启动redis。
打开电脑的【控制面板】,然后选择【管理工具】,在选择【服务】,找到redis服务后选择启动或关闭
3. redis-cli连接redis
redis安装并启动之后,就可以通过各种客户端连接redis并做各种操作。
redis-cli是安装上redis之后自带的客户端工具,他可以让我们快速通过命令对redis操作。
在windows中打开终端,输入 redis-cli 就可以使用这个客户端了。例如:
4. python连接redis
python代码也可以实现连接redis并对redis中进行各种操作。python代码想要操作redis必须先安装相关模块。
第一步:安装python操作redis模块
1 pip3 install redis
第二步:写代码去操作redis
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import redis 4 # 直接连接redis 5 conn = redis.Redis(host='redis主机的ip地址', port=6379, password='密码', encoding='utf-8') 6 # 设置键值:15131255089="9999" 且超时时间为10秒(值写入到redis时会自动转字符串) 7 conn.set('15131255089', 9999, ex=10) 8 # 根据键获取值:如果存在获取值(获取到的是字节类型);不存在则返回None 9 value = conn.get('15131255089') 10 print(value)
上面python操作redis的示例是以直接创建连接的方式实现,每次操作redis如果都重新连接一次效率会比较低,建议使用redis连接池来替换,例如:
1 import redis 2 # 创建redis连接池(默认连接池最大连接数 2**31=2147483648) 3 pool = redis.ConnectionPool(host='redis的主机地址', port=6379, password='密码', encoding='utf-8', max_connections=1000) 4 # 去连接池中获取一个连接 5 conn = redis.Redis(connection_pool=pool) 6 # 设置键值:15131255089="9999" 且超时时间为10秒(值写入到redis时会自动转字符串) 7 conn.set('name', "名字", ex=10) 8 # 根据键获取值:如果存在获取值(获取到的是字节类型);不存在则返回None 9 value = conn.get('name') 10 print(value)
5. django连接redis
按理说搞定上一步python代码操作redis之后,在django中应用只需要把上面的代码写到django就可以了。
例如:django的视图函数中操作redis
1 import redis 2 from django.shortcuts import HttpResponse 3 # 创建redis连接池 4 POOL = redis.ConnectionPool(host='xxx', port=6379, password='xxx', encoding='utf-8', max_connections=1000) 5 def index(request): 6 # 去连接池中获取一个连接 7 conn = redis.Redis(connection_pool=POOL) 8 conn.set('name', "xxx", ex=10) 9 value = conn.get('name') 10 print(value) 11 return HttpResponse("ok")
上述可以实现在django中操作redis。但是,这种形式有点非主流,因为在django中一般不这么干,而是用另一种更加简便的的方式。
第一步:安装django-redis模块(内部依赖redis模块)
pip3 install django-redis
第二步:在django项目的settings.py中添加相关配置
1 # 上面是django项目settings中的其他配置.... 2 CACHES = { 3 "default": { 4 "BACKEND": "django_redis.cache.RedisCache", 5 "LOCATION": "redis://ip地址:6379", # 安装redis的主机的 IP 和 端口 6 "OPTIONS": { 7 "CLIENT_CLASS": "django_redis.client.DefaultClient", 8 "CONNECTION_POOL_KWARGS": { 9 "max_connections": 1000, 10 "encoding": 'utf-8' 11 }, 12 "PASSWORD": "密码" # redis密码 13 } 14 } 15 }
第三步:在django的视图中操作redis
from django.shortcuts import HttpResponse from django_redis import get_redis_connection def index(request): # 去连接池中获取一个连接 conn = get_redis_connection("default") conn.set('nickname', "xxx", ex=10) value = conn.get('nickname') print(value) return HttpResponse("OK")