一、关于NoSQL:

NoSQL(NoSQL = Not Only SQL ),"不仅仅是SQL"。

相比MySQL等关系型数据库,NoSQL为非关系型的数据存储

Nosql中比较火的三个数据库有:Redis、Memchache、MongoDb。

为什么使用NoSQL:

为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

易扩展性:NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间也在架构的层面上带来了可扩展的能力。

高性能性:NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。

二、关于Redis:

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

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

与memcached的对比:

三、redis简单操作:

以windows下为例:

连接redis:> redis-cli.exe -h host -p port -a password   # 不输入则为默认连接

PS D:\redis> .\redis-cli.exe
127.0.0.1:> ping # 查询redis服务是否开通
PONG
127.0.0.1:> set test hello # 设置key的value
OK
127.0.0.1:> get test # 查询key
"hello"
127.0.0.1:> set test hi # 再次设置key即更改
OK
127.0.0.1:> get test
"hi"
127.0.0.1:> del test # 删除key
(integer)
127.0.0.1:> get test
(nil)

四、使用python实现redis发布订阅功能:

连接redis:

import redis

sr = StrictRedis(host='localhost',port=6379,db=0)    #不输入为默认连接

发布资讯:

#!/usr/bin/env python
# -*- coding:utf- -*-
# Author:Riy import redis client = redis.Redis()
channels = ["NoSQL", "redis"] def main():
print("可以发布到任意一个频道:")
for i in channels:
print(i) while True:
ch = input("输入频道:")
print("输入发送的信息(q:退出)")
msg = input(">>")
if msg == 'q':
break
client.publish(ch, msg) if __name__ == '__main__':
main()

订阅资讯:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Riy import redis client = redis.StrictRedis(decode_responses=True) # 设置编码,不设置则为字节流
s = client.pubsub() name = input('选择监听频道:')
s.subscribe(name) print('开始监听......\n') for item in s.listen():
if item['type'] == 'message':
print (item)

设置 decode_responses = True 收到的中文信息:

不设置则收到的 data 为字节流:

python浅学【网络服务中间件】之Redis的更多相关文章

  1. python浅学【网络服务中间件】之RabbitMQ

    一.关于AMQP: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议. AMQP使符合要求的客户端应用程序能够与符合要求的消息传递中间件代理进行通信. ...

  2. python浅学【网络服务中间件】之Memcached

    一.缓存的由来: 提升性能 绝大多数情况下,select 是出现性能问题最大的地方.一方面,select 会有很多像 join.group.order.like 等这样丰富的语义,而这些语义是非常耗性 ...

  3. python浅学【网络服务中间件】之Celery

    一.关于Celery: 什么是任务队列: 任务队列一般用于线程或计算机之间分配工作的一种机制. 任务队列的输入是一个称为任务的工作单元,有专门的工作进行不断的监视任务队列,进行执行新的任务工作. 什么 ...

  4. python浅学【网络服务中间件】之MongoDB

    一.关于MongoDB: MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供 ...

  5. greenev —— Python 异步网络服务框架

    greenev是一个基于greenlet协程,事件驱动,非阻塞socket模型的Python网络服务框架,它使得可以编写同步的代码,却得到异步执行的优点. 本项目受到gevent, openresty ...

  6. 浅谈Django的中间件与Python的装饰器

    浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...

  7. iOS WebServiceFramework网络服务框架浅解

    网络服务几乎是每一款成功APP的必备条件,打开你手机你会发现里面不用联网的应用数量十只手指可以数出来,就算是一些以独特技术切入市场的APP如美颜相机,都至少加入了分享功能.下面我先做下简单的回顾兼扫盲 ...

  8. 用Nginx+Lua+Redis给百度鹰眼API服务搭建缓存服务中间件(记录过程)

    一.环境安装部分 Centos7,Nginx1.14,Redis5.0,luajit-2.1,ngx_devel_kit-0.3.1rc1,lua-nginx-module-0.10.14. 下载安装 ...

  9. 学Python Django学得很迷茫,怎么办?-转自知乎

    本人学生,零编程基础,在学习python的过程中越学越迷茫,感觉像无头苍蝇一样,来知乎取经,下面进入正题吧:        我是先看了中谷的python教学视频,然后跟着慕课网上的python教程把题 ...

随机推荐

  1. 为何银行愿为收购supercell做无权追索融资?

    无追索权融资又称纯粹的项目融资,是指贷款人对项目主办人没有任何追索权的项目融资.简单来说,这是一种项目失败,也无法追尝的承诺,一般发生在石油.天然气.煤炭.铜.铝等矿产资源开发等相对较为保值的项目融资 ...

  2. HDU——算法练习1000 1089-1096

    全篇都是讲数字之间的运算的: 由上自下难度逐渐升级 ,没耐心者建议一拉到底: 1000: Problem Description Calculate A + B.   Input Each line ...

  3. shell 之 case。。。esac多分支选择

    case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作,如果没有任何值能够匹配,就执行预先设置的默认 ...

  4. PAT-进制转换

    3.5-进制转换 对于一个P进制的数,如果要转换为Q进制的数,需要分为两步: ①将P进制数x转换为十进制数y 对于一个十进制数y=d1d2···dn,可以将其写为: y = d1 * 10n-1 + ...

  5. c/s用户与服务器之间的传输

    ####第一页 <%@ page language="java" contentType="text/html; charset=UTF-8" pageE ...

  6. CSS 图像拼合技术(雪碧图)

    1.css 图像拼合 图像拼合就是单个图像的集合. 有许多图像的网页可能需要很长的时间来加载和生成多个服务器的请求. 使用图像拼合会降低服务器的请求数量,并节省带宽. 代码如下: <!docty ...

  7. SIP 协议详解

    SIP 协议详解 2013年参与过一个"视频通讯的App"项目,使用Sip协议通信.当时通信协议这块不是自己负责,加上时间紧.任务重等方面的原因,一直未对Sip协议进行过深入的了解 ...

  8. Python - loguru日志库,高效输出控制台日志和日志记录

    一.安装loguru loguru的PyPI地址为:https://pypi.org/project/loguru/ GitHub仓库地址为:https://github.com/Delgan/log ...

  9. 【OO第三次课下讨论】农场主的饲料分配问题

    需求分析与项目设计   本思考题的设计需求是力图找到一个简单且可行的饲料分配方案,由于不涉及到饲料价格或者是营养均衡之类的优化问题,因此在假设总的饲料量必能满足所有动物的热量需求的前提下,我们只需要采 ...

  10. 本地目录配置多个远程Git仓库

    目录 情景一:不同的库分别 pull/push 1. 使用git命令配置 2. 修改.git/config 文件 3. 操作 情景二:不同的库一次push 1. 使用git命令配置 2. 修改.git ...