django-redis的使用方法

单于浩邈
2023-12-01

1.安装
pip install django-redis
2.作为 cache backend 使用配置

 CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

URL 格式举例

redis://[:password]@localhost:6379/0
rediss://[:password]@localhost:6379/0
unix://[:password]@/path/to/socket.sock?db=0

配置session的存储引擎

SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

存储在数据库中,如下设置可以写,也可以不写,这是默认存储方式。

SESSION_ENGINE='django.contrib.sessions.backends.db'

存储在缓存中:存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快。

SESSION_ENGINE='django.contrib.sessions.backends.cache'

混合存储:优先从本机内存中存取,如果没有则从数据库中存取

SESSION_ENGINE='django.contrib.sessions.backends.cached_db'

1.redis的存储格式为key-value格式。key是字符串类型,value的类型有5种:string、hash、list、set、zset。

2.redis中关于键的常见的操作:

2.1查看左右的键:keys *

2.2查看某个键是否存在,存在返回1不存在返回0:exists key1

2.3查看键的值对应的数据类型:type key1

2.4删除键值对:del key1 key2

2.5设置键的过期时间,如果没有指定默认一直存在:expire key seconds

2.6查看键的有效时间:ttl key1

2.7清空数据库:flushall

3.string类型的基本操作:

3.1保存

set key value  保存单个键值对 mset key1 value1 key2 value2  保存多个键值对 setex key seconds value  设置键值和过期时间 append key value追加值

3.2获取

get key  获取单个 mget key1 key2  获取多个

3.3删除

del key

4 hash类型的基本操作:

4.1保存

hset key field value #设置单个属性

hmset key field1 value1 field2 value2 … #设置多个属性

4.2获取

hkeys key # 获取指定键的所有属性
hget key field # 获取单个属性的值
hmget key field1 field2 … # 获取多个属性的值
hvals key # 获取所有属性的值
4.3删除

del key # 删除整个hash的键和值
hdel key field1 field2 … # 删除属性和属性对应的值
4.4关于hash类型的个人理解:

可以将hash类型理解为用来存储对象:

5 list类型的基本操作:

5.1保存

lpush key value1 value2 … #从左侧依次插入数据
rpush key value1 value2 … #从右侧依次插入数据
linsert key before或after 现有元素 新元素 #从指定元素的前或后插入新元素
5.2获取

lrange key start stop
start、stop为元素的下标索引,从左侧开始,第一个元素为0,-1标识最后一个元素。获取所有的元素:lrange key 0 -1

5.3删除指定元素

lrem key count value
将列表中前count次出现的值为value的元素移除。

count > 0: 从头到尾移除

count < 0: 从尾到头移除

count = 0: 移除所有

6.set类型的基本操作

特点:无序集合、元素唯一性不重复、没有修改操作

6.1增加元素

sadd key member1 member2 …
6.2获取元素

smembers key # 返回所有元素
6.3删除指定元素

srem key member1 member2 …
7.zset类型的数据操作

特点:有序集合、元素唯一性不重复、没有修改操作、每个元素都会关联一个double类型的权重,根据权重从小到大排列

7.1增加

zadd key score1 member1 score2 member2 …
7.2获取

zrange key start stop  # 根据索引获取

zrangebyscore key min max  # 获取权重在min和max之间的数据
zscore key member  # 返回成员member的score值
7.3删除

zrem key member1 member2 … # 删除指定元素
zremrangebyscore key min max #删除权重在指定范围的元素
五、redis与python进行交互:

1.在虚拟环境中安装redis包:

pip install redis
2.调用模块:

from redis import StrictRedis
3.创建对象:

sr = StrictRedis(host=‘localhost’, port=6379, db=0)  # 默认就是这样的值,不写也行。
4.用sr这个对象操作redis,将redis中的命令当作函数让sr调用就ok。

六、Django框架中session存储到redis中的配置

默认情况下session是存储在数据库中的,但是当用session保存用户的状态时,用户频繁的访问服务器,会增大数据库的压力,也会降低用户访问的速度。为了解决这个问题将session存储到redis中。

第一种配置方法:(不使用Django中session默认的存储方式,直接将session存储的地方配置到redis中)

1.在虚拟环境中安装包

pip install django-redis-sessions==0.5.6

2.在Django项目的settings文件中增加下面的配置

SESSION_ENGINE = ‘redis_sessions.session’
SESSION_REDIS_HOST = ‘localhost’
SESSION_REDIS_PORT = 6379
SESSION_REDIS_DB = 2
SESSION_REDIS_PASSWORD = ‘’
SESSION_REDIS_PREFIX = ‘session’
第二种配置方法:(先将Django中的缓存设置为redis,然后将session的存储地方设置为Django的缓存中)

#1.先在虚拟环境中安装包
pip install django_redis

#2. 设置redis作为django的缓存设置

CACHES = {
  "default": {
   "BACKEND": "django_redis.cache.RedisCache",
   # 把这里缓存你的redis服务器ip和port
   "LOCATION": "redis://172.16.179.142:6379/12",
   "OPTIONS": {
    "CLIENT_CLASS": "django_redis.client.DefaultClient",
   }
  }
}

3.设置redis存储django的session信息

SESSION_ENGINE = “django.contrib.sessions.backends.cache”
SESSION_CACHE_ALIAS = “default”

 类似资料: