如何在django中使用redis-mile米乐体育
这篇文章将为大家详细讲解有关如何在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就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。