这里写目录标题
- 一.昨日回顾
- 二.今日内容
- 2.1redis之列表操作
- 2.2 redis之其他操作
- 2.3 redis之管道
- 2.4 django中使用redis
- 2.4.1通用方案
-
- 2.4.2django提供的方案
-
- 2.5.celery简介,架构
-
一.昨日回顾
1 redis:内存数据库,key-value方式存储,有5大数据类型,存取速度快,通常用来做缓存数据库
-缓存数据库:放在mysql中的数据,在redis中存一份
-计数(网站访问量,文章阅读量...)
-分布式
-游戏,歌曲,排行榜..
-redis和memche比较:都是内存数据库,redis支持持久化,redis数据类型丰富
-redis为什么这么快? 10w qbs (每秒查询率)--->6w作用
-纯内存
-io多路复用(epoll),非阻塞式io
-单线程,避免了线程间切换(6.x以后,已经多线程了)
2 安装(开源软件,源代码开源,C语言写的),在不同平台编译--->可执行文件-->执行
-官网下载都是源码包--->make,make install --->可执行文件
-网上找专门的Windows安装包(官方不提供),一路下一步即可
-是一个c/s架构的软件
-启动服务端:redis-server.exe 配置文件路径(默认情况下做成了服务)
-客户端连接:redis-cli -h 地址 -p 端口
-图形化界面客户端:RedisDesktopManager
-使用不同语言的客户端连接:python,go,java
3 python操作redis
-pip3 install redis
4 普通连接和连接池
-连一次,操作完,关闭
-最开始造出很多连接,每次从池中取一个连接使用
5 reids之字符串操作
6 redis之hash操作
hset
hget
hmset
hmget
hincrby
hdel
hexists
hscan_iter/hgetall 区分
二.今日内容
2.1redis之列表操作
import redis
'''
lpush
llen
linsert
lset
lrem
lpop
lrange # 使用它,自定义增量迭代
blpop
'''
import redis
conn = redis.Redis()
def lscan_iter(name, conn, count=10):
cursor = 0
while True:
data = conn.lrange(name, cursor, (cursor+count) - 1)
if data:
cursor += count
for item in data:
yield item
else:
break
for i in lscan_iter('l_test',conn,20):
print(i)
2.2 redis之其他操作
import redis
conn = redis.Redis()
res=conn.type('zzz')
print(res)
conn.close()
2.3 redis之管道
import redis
conn=redis.Redis()
pi=conn.pipeline(transaction=True)
pi.multi()
pi.incr('age')
raise Exception('出异常了')
pi.incr('salary',10000)
pi.execute()
conn.close()
2.4 django中使用redis
2.4.1通用方案
redis_pool.py
import redis
POOL=redis.ConnectionPool(host='127.0.0.1',port=6379,max_connections=100)
views.py
from utils.redis_pool import POOL
import redis
def test_redis(request):
conn=redis.Redis(connection_pool=POOL)
age=str(conn.get('age'),encoding='utf-8')
return HttpResponse('人的年龄,从redis中取出来了是:%s'%age)
2.4.2django提供的方案
pip3 install django-redis
配置文件
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100}
}
}
}
views.py
from django_redis import get_redis_connection
def test_django_redis(request):
conn=get_redis_connection()
age = str(conn.get('age'), encoding='utf-8')
from django.core.cache import cache
cache.set('name','lqz',4)
cache.set('xxx',test_redis)
return HttpResponse('人的年龄是:%s' % age)
2.5.celery简介,架构
1 celery:芹菜(跟芹菜没有任何关系)
2 python中的一个分布式异步任务框架
-执行异步任务---(对立:同步任务):解决耗时任务,将耗时操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音视频处理等等
-执行延时任务(5分钟后干一件事):解决延迟任务
-执行定时任务:每天,隔几分钟,干什么事:解决周期(周期)任务,比如每天数据统计
3 解释
Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please don’t open any issues related to that platform.
4 celery特点(了解)
1)可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket)
2)celery服务为为其他项目服务提供异步解决任务需求的
5 Celery架构
Celery的架构由三部分组成,消息中间件(message broker)、任务执行单元(worker)和 任务执行结果存储(task result store)组成
Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等
Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。
Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等
2.5.1安装
pip install celery
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)