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")

  

posted @ 2021-06-29 16:30  黑羽heiyu  阅读(98)  评论(0编辑  收藏  举报