基于Python的Redis开发

一、背景简介

什么是NoSQL?

  • NoSQL = not only sql
  • 非关系型数据库的泛称
  • 用于超大规模的数据存储
  • 存储数据不需要固定模式
  • 可以快速横向扩展

为什么要用NoSQL?

  • 高并发读写,海量数据下,读取性能优异
  • 高容量存储和高效存储,数据模型灵活
  • 高扩展性和高可用性,数据间无关系,易于扩展

NoSQL数据库分类?

  • 键值存储数据库:Redis
  • 列存储数据库:BigTable,Cassandra,HBase
  • 文档性数据库:MongoDB
  • 图数据库:Neo4j

关系型数据库(RDBMS)和非关系型数据库(NoSQL)各自特点:

RDBMS:

  • 高度组织化结构化数据
  • 结构化查询语言(SQL)
  • 数据与关系都存储在单独的表中
  • 数据操纵语言(DML),数据定义语言(DDL)
  • 严格的一致性
  • 基础事务

NoSQL:

  • 没有声明性查询语言
  • 没有预定义的模式
  • 键值对存储、列存储、文档存储
  • 图形数据
  • 最终一致性,而非ACID属性
  • 非结构化和不可预知的数据
  • 高性能,高可用和可伸缩性

Redis

Redis=Remote DIctionary Server,是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日执行、key-value数据库,并提供多种语言的API。

Redis通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(MAP)、列表(list)、集合(sets)和有序集合(sorted sets)。

注意事项:

  • 在Redis中,并不是所有的数据都一直存储在内存中的。这是和Memcached相比一个最大的区别;
  • Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其机器本身内存大小的数据。当然,机器本身的内存必须要能够保持所有的key,毕竟这些数据是不会进行swap操作的;
  • 同时由于Redis将内存中的数据swap到磁盘中的时候,提供服务的主线程和进行swap操作的子线程会共享这部分内存,所以如果更新需要swap的数据,Redis将阻塞这个操作,直到子线程完成swap操作后才可以进行修改;
  • 当从Redis中读取数据的时候,如果读取的key对应的value不在内存中,那么Redis就需要从swap文件中加载相应数据,然后再返回给请求方。这里就存在一个I/O线程池的问题。在默认的情况下,Redis会出现阻塞,即完成所有的swap文件加载后才会相应。这种策略在客户端的数量较小,进行批量操作的时候比较合适。但是如果将Redis应用在一个大型的网站应用程序中,这显然是无法满足大并发的情况的,所以Redis允许我们设置I/O线程池的大小;

NoSQL产品对比:

 二、Redis安装

redis安装:

  • 下载地址:https://github.com/MSOpenTech/redis/releases;
  •  操作系统:windows、linux;
  • linux安装:

     wget http://download.redis.io/releases/redis-5.0.0.tar.gz

     tar xzf redis-5.0.0.tar.gz

     cd redis-5.0.0

     make;

linux启动服务:src/redis-server &

python安装:pip install redis 或 esqy_install redis

配置文件:

  • Redis配置文件位于Redis安装目录的根目录下,文件名为redis.conf
  • 主要配置项

 daemonize no redis默认不是以守护进程的方式运行,建议改为yes

 port 6379 默认端口为6379

 bind 127.0.0.1 默认绑定ip为本机

 timeout 300

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值