Python操作Redis

一. Python连接Redis

1、连接方式

redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import redis

r = redis.Redis(host='192.168.0.110', …

Redis的持久化

Redis的持久化

Redis的持久化有两种方式:快照(RDB文件)和追加式文件(AOF文件)

  • RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。
  • AOF持久化方式则会记录每一个服务器收到的写操作。在服务启动时,这些记录的操作会逐条执行从而重建出原来的数据。写操作命令记录的格式跟Redis协议一致,以追加的方式进行保存。
  • Redis的持久化是可以禁用的,就是说你可以让数据的生命周期只存在于服务器的运行时间里。
  • 两种方式的持久化是可以同时存在的,但是当Redis重启时,AOF文件会被优先用于重建数据。

RDB

工作原理

  • Redis调用fork(),产生一个子进程。
  • 子进程把数据写到一个临时的RDB文件。
  • 当子进程写完新的RDB文件后,把旧的RDB文件替换掉。

优点

  • RDB文件是一个很简洁的单文件,它保存了某个时间点的Redis数据,很适合用于做备份。你可以设定一个时间点对RDB文件进行归档,这样就能在需要的时候很轻易的把数据恢复到不同的版本。
  • 基于上面所描述的特性,RDB很适合用于灾备。单文件很方便就能传输到远程的服务器上。
  • RDB的性能很好,需要进行持久化时,主进程会fork一个子进程出来,然后把持久化的工作交给子进程,自己不会有相关的I/O操作。 …

使用supervisor后台运行celery

本地使用celery测试的时候我们可以直接在不同的终端直接运行 Celery 进程,但是如果要在服务器上运行,那我们岂不是得开好几个终端?而且退出终端之后 Celery 进程也就停止了,能不能让 Celery 在后台以守护进程的方式运行呢?答案是肯定的,今天我们先介绍用 supervisor 使celery在后台运行

一、先安装supervisor

1、安装命令:

pip install supervisor

如果在沙盒环境下安装不上的话使用: …

Django项目中使用Celery

Celery是Python开发分布式任务列队的处理库。可以异步分布式地异步处理任务,也可定时执行任务等等。通常我们可以在Django执行一些比较耗时的任务(例如批量发邮件)和后台定时任务等。

研究发现,在Django中使用celery有两种方式:

  1. 使用django-celery应用;
  2. 直接使用Celery。

我们这里选择的是第二种方案。

1. Celery中间人的选择

官方给出的broker列表如下

Name Status Monitoring Remote Control
RabbitMQ Stable …

Ubuntu下Redis安装和常用操作

以下安装操作是在Ubuntu16.04系统下完成,其他发行版本或者类Unix系统可能稍有不同。(Redis有编号0~15共16个数据库。)

一、Redis基础知识介绍

redis是Key Value nosql数据库,数据存储在内存中,单进程,自己实现了一套异步事件处理,虽然单进程但是数据库处理很快,异步持久化。

1. Redis有5种数据类型:
  • string,最基本的数据类型,也是其他四种数据类型的基础,能存储任何形式的字符创。适用:存储信息对象序列化JSON格式。get/set操作。
  • hash,哈希类型是一个字符串类型的字段和字段值的映射表,将一个对象存成hash类型占用更少的内存,并且可以更方便的存取整个对象。适用:经常被并发请求的小数据查询,如:最近五日的超高返商品数据,存储在Hash中,field=商品ID,value=商品信息(对象序列化JSON格式)。hmset/hgetall操作。
  • list,链表类型可以存储一个有序的字符串列表,用链表类型的LPUSH和LPOP或者RPUSH和RPOP实现栈的功能,用LPUSH和RPOP或者RPUSH和LPOP实现队列的功能。适用:作为信息队列使用,不断的Lpush数据到List中,rpop数据出来入库,或者处理。列表的最大长度为 232 - 1 个元素(4294967295,每个列表的元素超过四十亿)。lpush list_name …