目录
1, Django集成Redis
2, 封装服务redis_service.py
3, 单元测试test_redis_serivce.py
4, Redis读写功能调用
5, Redis6.0多线程配置
6, 常见问题和解决方法
Redis是一个高性能的key-value数据库,常用于搭建缓存系统,提高并发响应速度。Django集成Redis只需1步配置,秒定。为了增加代码的兼容和容错能力,将Redis功能调用封装为redis_service.py服务。
典型系统架构的数据层和缓存数据读取流程:
![63ebe37ead144b1f536ba7fdc302d6a1.png](https://img-blog.csdnimg.cn/img_convert/63ebe37ead144b1f536ba7fdc302d6a1.png)
![e9ffff82b8fa1703f03df59ba2a0338b.png](https://img-blog.csdnimg.cn/img_convert/e9ffff82b8fa1703f03df59ba2a0338b.png)
示例代码:hello_redis
├── settings.py
├── service
│ └── redis_service.py
├── tests
│ └── test_redis_service.py
一,Django集成Redis
![c125026655ad1c6226c1feac7cccb57a.png](https://img-blog.csdnimg.cn/img_convert/c125026655ad1c6226c1feac7cccb57a.png)
1. 新建Django项目,运行:django-admin startproject hello_redis
2. 进到目录hello_redis,增加应用:python manage.py startapp app
![bff98c06fdf7b16dd5dc2992cdb8b278.png](https://img-blog.csdnimg.cn/img_convert/bff98c06fdf7b16dd5dc2992cdb8b278.png)
目录文件结构如下:
![fd9e7081e67a77e82fe50d033e334307.png](https://img-blog.csdnimg.cn/img_convert/fd9e7081e67a77e82fe50d033e334307.png)
3. 安装Redis包,pip install django-redis >= 4.10.0,如果不是新建项目,注意版本兼容问题。
4. 打开settings.py,配置Redis缓存,1步完成,注意Redis服务的IP地址和端口。
![f4e5c2b94be683f7af07a7f8788414b8.png](https://img-blog.csdnimg.cn/img_convert/f4e5c2b94be683f7af07a7f8788414b8.png)
5. 代码中调用缓存功能非常方便:
a) 导入包:from django.core.cache import cache
b) 调用cache.get(key), cache.set(key, value)等函数。
二, 封装服务redis_service.py,调用Redis功能函数
为了增加代码的兼容和容错能力,将Redis功能调用封装在redis_service.py服务中:
1. 对String操作
a) get(key)
b) set(key, str_value)
2. 对dict操作
a) get_dict(key)
b) set_dict(key, dict_value)
![7db65a0fc351c47f428333ba3f50a67b.png](https://img-blog.csdnimg.cn/img_convert/7db65a0fc351c47f428333ba3f50a67b.png)
还有对列表、集合、哈希表等操作。
三, 单元测试test_redis_service.py
![f476a90e5a18a2bb0cd1573df02f7347.png](https://img-blog.csdnimg.cn/img_convert/f476a90e5a18a2bb0cd1573df02f7347.png)
运行python manage.py test:
![6b7ce094ef5802159636b2a4d3210ea7.png](https://img-blog.csdnimg.cn/img_convert/6b7ce094ef5802159636b2a4d3210ea7.png)
四, Redis读写功能调用
1. 在views.py中增加请求处理函数,调用Redis读写功能
![06752406eb32b7d7dd74811312c0e659.png](https://img-blog.csdnimg.cn/img_convert/06752406eb32b7d7dd74811312c0e659.png)
2. 在urls.py中配置路由
![2c64298cc27589296aeb7d6222f3589b.png](https://img-blog.csdnimg.cn/img_convert/2c64298cc27589296aeb7d6222f3589b.png)
3. 运行命令启动服务:python manage.py runserver 0.0.0.0:8001
![68c247289542c6eda863776c17fc099e.png](https://img-blog.csdnimg.cn/img_convert/68c247289542c6eda863776c17fc099e.png)
4. REST接口调用redis_service示例
![b0ef685555c61d4072e6d95ce0fe82b6.png](https://img-blog.csdnimg.cn/img_convert/b0ef685555c61d4072e6d95ce0fe82b6.png)
五, Redis6.0多线程配置
Redis6.0已于2020年5月2日正式发布,包含众多新功能,新网络协议RESP3,新的集群代理,ACL,支持多线程,具有更高的并发量和并发性能。
1,如何开启多线程?
Redis6.0默认不开启多线程,需要开启时,只需修改redis.conf配置文件:io-threads-do-reads yes
2,如何配置线程数量?
修改redis.conf配置文件:io-threads 4
值得注意的是,官方建议线程数量一定小于机器核数,比如4核机器设置2个或3个线程,8核机器建议配置6个线程。
另外注意官方文档明确建议,超过8个线程就没有实际价值了。
六, 常见问题和解决方法
1. 集成Redis,配置settings.py,检查无误,运行依然出错:
InvalidCacheBackendError: Could not find backend 'django_redis.cache.RedisCache': cannot import name get_cache
解决:将django-redis版本从3.8.3升级到4.10.0
原因:Redis版本兼容问题。
2. 调用incr(key, amount),运行出错:
key not found
解决:先调用has_key(key)判断是否存在,不存在时调用set(key, amount)
原因:Redis版本兼容问题。
#学浪斗划# #学浪计划# #学浪计划-教育创作者扶持计划# #学浪计划教育创作者扶持计划# #“学浪计划”推广活动# #抖音、今日头条与西瓜视频推出“学浪计划”#