Python的Redis API
2018-03-28 本文已影响0人
brownchen
Redis是一款in memory工作模式的高效key-value型NoSQL数据库,支持事务、数据持久存储,并且自带发布/订阅功能。在程序开发过程中,我们可以把Redis用作缓存服务器或者消息中间件,这里主要介绍如何在Python代码中调用第三方API操作Redis。
前言
在用代码操作Redis前,最好先解决以下三个问题:
- Redis应该开启登陆认证,密码使用强密码策略
- 使用线程池管理可操作Redis数据库的游标
- 按照一定的规范命名key。例如用HOST:APP:CUSTOMER表示某节点上保存某应用的客户数据
redis标准库
import redis
pool = redis.ConnectionPool(host=HOST, port=PORT, password=认证密码, max_connections=NUM)
conn = redis.Redis(pool=pool)
基本的CRUD操作此处不多赘述
# 事务
conn.exec_command('multi')
conn.set('id', 1)
conn.set('name', 'brown')
conn.set('gender', 'Male')
conn.exec_command('exec')
django_redis库
先在Django项目的settings文件中添加redis配置,示例如下
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 1000},
"DECODE_RESPONSES": True,
}
}
}
随后就能在项目内使用django_redis操作redis。django_redis对Redis API接口进行了封装,与直接使用redis库的区别就类似用ORM与直接使用pymysql操作数据库的区别。
import json
from django_redis import get_redis_connection
conn = get_redis_connection('default')
# Redis作为消息队列
信息生产者Producer:
将数据存入redis
conn.lpush('KEY', json.dumps({VALUE}))
信息消费者Consumer:
取出数据
json_data = conn.rpop('KEY')
data =json.dumps(json_data)
为了提高效率,一次提交N条记录至MySQL数据库
db_conn = pymsql.connect(host=, port=, database=,user=,password=)
cur = db_conn.cursor()
for i in range(100):
insert = '''insert into TBL_NAME () value () '''
cur.execute(insert, data)
db_conn.commit()