十九、python操作redis

python访问redis

无论是电商网站还是支付系统,都离不开数据的存储和增删改查,在这种情况下,每一次登录、访问等都会访问,这样会给数据库造成很大的压力,当数据库无法支撑过高的访问量,轻则影响用户体验,重则导致数据库宕机,网站无法访问。
如何解决数据库压力过大的问题呢?

  1. 优化应用程序,减少数据库的连接数,尽量使用数据库连接池。
  2. 使用消息队列,常见的有RabbitMQ,ActiveMQ,Kafka,RocketMQ等。
  3. 通过使用redis等缓存数据,分担数据库读压力,同时直接从内存读数据速度更快。

nosql介绍

特征
对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:

不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。
无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。
弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。
分区:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。
异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。
BASE:相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。
NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其他的NoSQL

redis安装和配置

安装:redis主要用于linux下,下面centos7下面安装最新版本redis-4.0.9。

wget http://download.redis.io/releases/redis-4.0.9.tar.gz
tar xzf redis-4.0.9.tar.gz
cd redis-4.0.9/
make
cd src && make all

安装过程中报错说明

未安装gcc编译工具
redis基于C语言编写,需要使用gcc等编译工具,若未安装,在make编译过程中会报错。使用yum install gcc安装,默认会安装gcc及对应的依赖包即可。
未安装jemalloc
默认情况下redis的memory allocator是jemalloc,若未安装会出现下面报错信息

zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory
 #include <jemalloc/jemalloc.h>
                               ^
compilation terminated.
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/local/src/redis-4.0.9/src'
make: *** [all] Error 2
可以设置使用libc malloc,编译的时候使用make MALLOC=libc即可。
具体更多内容可以参见redis解压目录下的redis.MD文件中Allocator部分。

配置

redis可以单机多实例,通过修改配置文件,不同实例使用不同的配置文件和端口号即可。
下面配置文件统一存放在conf目录中。

cd /usr/local/src/   
mv redis-4.0.9 redis    #目录重命名,取消版本信息
cd redis
mkdir conf     #新建配置文件目录,统一存放配置文件
cp redis.conf conf/redis_6379.conf    #配置文件,以端口号命名
修改redis_6379.conf文件,默认该配置项为no,修改为yes。
该参数表示是否使用守护线程的方式启动。

当设置为yes时,表示开启守护进程模式。该模式下,redis在后台运行,并将进程pid写入至配置文件中设置的pidfile中,此时redis将一直运行,除非手动kill该进程。
当设置为no时,当前界面将进入redis的命令行界面,ctrl+c强制退出或者关闭连接工具都会导致redis进程退出。

daemonize yes

启动

redis-server /usr/local/src/redis/conf/redis_6379.conf
阅读更多
个人分类: python
上一篇十八、python中使用SQLAlchemy(三)
下一篇二十、python访问memcached
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭