如何在Django中使用redis
这篇文章将为大家详细讲解有关如何在Django中使用redis,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
一、安装redis:
1.下载:
wgethttp://download.redis.io/releases/redis-3.2.8.tar.gz
2.解压
tar-zxvfredis-3.2.8.tar.gz
3.复制,放到/usr/local目录下
sudomv./redis-3.2.8/usr/local/redis
4.进入到redis目录下
cd/usr/local/redis/
5.生成
sudomake
6.测试,时间会比较长
sudomaketest
7.安装,将redis的命令安装到usr/local/bin/目录中
sudomakeinstall
8.安装成功后,进入usr/local/bin/目录中查看:
cd/usr/local/bin
9.将配置文件复制放到/etc/redis目录下:
sudocp/usr/local/redis/redis.conf/etc/redis/redis.conf
可能刚开始etc下没有redis目录,需要自己手动创建一个redis文件夹。
以上在第6步的时候可能会遇到这样的问题:
Youneedtcl8.5ornewerinordertoruntheRedistestmake:***[test]Error1
解决办法:安装tcl
wgethttp://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz sudotarxzvftcl8.6.1-src.tar.gz-C/usr/local/ cd/usr/local/tcl8.6.1/unix/ sudo./configure sudomake sudomakeinstall
二、 配置redis:
配置信息在/etc/redis/redis.conf下,打开sudo vi /etc/redis/redis.conf。
核心配置选项:
绑定ip:bind 127.0.0.1
端口号:port 6379
是否以守护进程运行:daemonize yes 必须改为yes
数据库文件:dbfilename dump.db
数据库文件存储路径:dir /var/lib/redis 可改可不改,改的话提前创建好文件夹
日志文件:logfile /var/log/redis/redis-server.log 必须要改,提前创建好文件夹
数据库,默认有16个:database 16
主从复制:slaveof
配置小结:主要更改两块:1,守护进程;2.日志文件路径
三、启动redis:
1.根据配置文件启动redis服务器
sudoredis-server/etc/redis/redis.conf
2.启动redis客户端:
redis-cli
3.输入ping命令测试:
127.0.0.1:6379>pingPONG
4.关闭redis服务器:
psaux|grepredis#查看redis进程号kill-9pidredis进程号#关闭redis服务器
5.切换数据库:默认有16个,通过0-15来标识,默认是第一个数据库0号数据库。
selectn
四、redis的数据操作:
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保存
hsetkeyfieldvalue#设置单个属性 hmsetkeyfield1value1field2value2...#设置多个属性
4.2获取
hkeyskey#获取指定键的所有属性 hgetkeyfield#获取单个属性的值 hmgetkeyfield1field2...#获取多个属性的值 hvalskey#获取所有属性的值
4.3删除
delkey#删除整个hash的键和值 hdelkeyfield1field2...#删除属性和属性对应的值
4.4关于hash类型的个人理解:
可以将hash类型理解为用来存储对象:
5 list类型的基本操作:
5.1保存
lpushkeyvalue1value2...#从左侧依次插入数据 rpushkeyvalue1value2...#从右侧依次插入数据 linsertkeybefore或after现有元素新元素#从指定元素的前或后插入新元素
5.2获取
lrangekeystartstop
start、stop为元素的下标索引,从左侧开始,第一个元素为0,-1标识最后一个元素。获取所有的元素:lrange key 0 -1
5.3删除指定元素
lremkeycountvalue
将列表中前count次出现的值为value的元素移除。
count > 0: 从头到尾移除
count < 0: 从尾到头移除
count = 0: 移除所有
6.set类型的基本操作
特点:无序集合、元素唯一性不重复、没有修改操作
6.1增加元素
saddkeymember1member2...
6.2获取元素
smemberskey#返回所有元素
6.3删除指定元素
sremkeymember1member2...
7.zset类型的数据操作
特点:有序集合、元素唯一性不重复、没有修改操作、每个元素都会关联一个double类型的权重,根据权重从小到大排列
7.1增加
zaddkeyscore1member1score2member2...
7.2获取
zrangekeystartstop #根据索引获取 zrangebyscorekeyminmax #获取权重在min和max之间的数据 zscorekeymember #返回成员member的score值
7.3删除
zremkeymember1member2...#删除指定元素 zremrangebyscorekeyminmax#删除权重在指定范围的元素
五、redis与python进行交互:
1.在虚拟环境中安装redis包:
pipinstallredis
2.调用模块:
fromredisimportStrictRedis
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.在虚拟环境中安装包 pipinstalldjango-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.先在虚拟环境中安装包 pipinstalldjango_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"
关于如何在Django中使用redis就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
推荐阅读
-
浅析Django接口版本控制
-
Django+Celery实现定时任务的示例
-
Python(django中如何使用restful框架)
-
Django实现drf搜索过滤和排序过滤
-
Django中怎么将ValuesQuerySet转换成json
今天就跟大家聊聊有关Django中怎么将ValuesQuerySet转换成json,可能很多人都不太了解,为了让大家更加了解,小编...
-
Django分页器的使用方法
这篇文章主要介绍了Django分页器的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面...
-
Python Django搭建文件下载服务器的实现shili
-
在Django中如何使用MQTT的方法
这篇文章主要介绍了在Django中如何使用MQTT的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有...
-
Django开发RESTful API怎么实现增删改查
-
Django如何显示可视化图表的实践