• Redis与Python交互


    一、NoSQL简介

    1.   NoSQL,全名为Not Only SQL,指的是非关系型的数据库
    2.   随着访问量的上升,网站的数据库性能出现了问题,于是nosql被设计出来

    优点/缺点

       优点:

    • 高可扩展性
    • 分布式计算
    • 低成本
    • 架构的灵活性,半结构化数据
    • 没有复杂的关系

       缺点:

    • 没有标准化
    • 有限的查询功能(到目前为止)
    • 最终一致是不直观的程序

    分类

    类型

    部分代表

    特点

    列存储

    Hbase

    Cassandra

    Hypertable

    顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。

    文档存储

    MongoDB

    CouchDB

    文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。

    key-value存储

    Tokyo Cabinet / Tyrant

    Berkeley DB

    MemcacheDB

    Redis

    可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)

    图存储

    Neo4J

    FlockDB

    图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。

    对象存储

    db4o

    Versant

    通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。

    xml数据库

    Berkeley DB XML

    BaseX

    高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

    二、redis安装

    下载: 打开官网下载或者直接运行以下命令(选择你需要的版本)

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

     安装Redis:https://github.com/MSOpenTech/redis

     

     解压:

    tar zxvf redis-3.2.6.tar.gz

     生成:进入到redis-3.2.6目录下,依次执行下面两条命令

    sudo make
    sudo make install

     

    配置文件: 一般配置文件都放在/etc/目录下

    sudo cp /usr/local/redis-3.2.6/redis.conf /etc/redis/

    打开redis.conf

    绑定地址:如果需要远程访问,可将此行注释

    bind 127.0.0.1

    端口,默认为6379

    port 6379

     是否以守护进程运行

    • 如果以守护进程运行,则不会在命令行阻塞,类似于服务
    • 如果以非守护进程运行,则当前终端被阻塞,无法使用
    • 推荐改为yes,以守护进程运行
    daemonize no|yes

    数据文件

    dbfilename dump.rdb

    数据文件存储路径

    dir的默认值为./,表示当前目录;推荐改为
    dir /var/lib/redis

     注意:当在配置文件中修改数据文件存储路径,此路径应存在;

        如果在下载目录下运行过redis-server,在使用指定配置文件启动前关闭redis-server服务;

     

    使用指定配置文件启动

    sudo redis-server /etc/redis/redis.conf

    停止redis服务

    sudo kill -9 redis的进程id

    查看该进程:

    ps -ef|grep redis

    三、redis数据操作

    redis是key-value的数据,所以每个数据都是一个键值对

    键的类型是字符串

    值的类型分为五种:

    • 字符串string
    • 哈希hash
    • 列表list
    • 集合set
    • 有序集合zset

    数据操作的全部命令,可以查看中文网站

     

     四、Redis与Python交互

    # encoding=utf8
    import redis
    
    # 连接
    r = redis.StrictRedis(host="localhost", port=6379)
    
    # 方法1:根据数据类型的不同,调用响应的方法
    r.set("a1", "good")
    ret = r.get("a1")
    print ret
    print type(ret)
    
    # 方法2:pipline
    # 缓冲多条命令,然后依次执行,减少C/S之间TCP数据包
    pipe = r.pipeline()
    pipe.set("a2","nice")
    pipe.set("a3","fine")
    pipe.set("a4","alright")
    pipe.execute()
  • 相关阅读:
    hdu 5965 扫雷
    51nod 1441 士兵的数字游戏 (素数处理
    51nod 1453抽彩球
    51nod 1255 字典序最小的子序列
    codeforces 948A
    Splay 伸展树 bzoj3224 bzoj3223
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest C(gym/101142 C)
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest F(gym/101142 F)
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest G(gym/101142 G)
    Educational Codeforces Round 32 E 巨型背包
  • 原文地址:https://www.cnblogs.com/Mint-diary/p/9630518.html
Copyright © 2020-2023  润新知