zoukankan      html  css  js  c++  java
  • day24——NoSQL简介、redis服务搭建、redis连接池、redis管道

    一、Redis 安装

    yum install -y epel-release
    yum install -y gcc jemalloc-devel wget
    cd /usr/local/src
    wget https://codeload.github.com/antirez/redis/tar.gz/2.8.21 -O redis-2.8.21.tar.gz
    tar xf redis-2.8.21.tar.gz
    cd redis-2.8.21
    make
    make PREFIX=/usr/local/redis install
    mkdir /usr/local/redis/etc
    wget http://www.apelearn.com/study_v2/.redis_conf -O /usr/local/redis/etc/redis.conf 2>/dev/null # 下载配置文件
    wget http://www.apelearn.com/study_v2/.redis_init -O /etc/init.d/redis 2>/dev/null # 下载启动脚本
    useradd -s /sbin/nologin redis
    mkdir /usr/local/redis/var
    chmod 777 /usr/local/redis/var
    chmod 755 /etc/init.d/redis
    chkconfig --add redis
    chkconfig redis on
    /etc/init.d/redis start

    [root@localhost ~]# /usr/local/redis/bin/redis-cli    # 连接Redis
    127.0.0.1:6379>

    二、Redis 基本操作
    安装 redis 模块:
    cd /usr/local/src
    wget --no-check-certificate https://pypi.python.org/packages/source/r/redis/redis-2.8.0.tar.gz
    tar xf redis-2.8.0.tar.gz 
    mv redis-2.8.0 python-redis-2.8.0
    cd python-redis-2.8.0/
    python setup.py install
    Python 连接并操作 redis :
    In [1]: import redis
    
    In [2]: r = redis.Redis(host='127.0.0.1', port=6379)    # redis.Redis() 用于连接 redis
    
    In [3]: r.set('name', 'Tom')                            # set() 用于设置key值
    Out[3]: True
    
    In [4]: print r.get('name')                             # get() 用于获取key值
    Tom

    其他操作参考:

    [root@localhost ~]# /usr/local/redis/bin/redis-cli     // 连接Redis
    127.0.0.1:6379> keys *             // keys 用于查看所有key,也可以模糊匹配,如 keys my*
    127.0.0.1:6379> exists name        // exists 用于判断是否有某个key,有返回1,没有返回0
    127.0.0.1:6379> del name           // del 用于删除指定的key,成功返回1,失败返回0
    127.0.0.1:6379> expire name 100    // expire 用于设置指定的key多长时间后过期,单位为秒
    127.0.0.1:6379> persist name       // persist 用于取消指定key的过期时间
    127.0.0.1:6379> ttl name           // ttl 用于查看指定的key还有多长时间过期,返回-2表示没有该key,返回-1表示没有设置过期时间,其他表示还有多长时间过期
    127.0.0.1:6379> select 0           // select 用于选择哪个库
    127.0.0.1:6379> move name 2        // move 用于把指定的key移到哪个库下
    127.0.0.1:6379> randomkey          // randomkey 用于随机返回一个key
    127.0.0.1:6379> rename k1 k2       // rename 用于重命名key
    127.0.0.1:6379> type name          // type 用于查看指定key的类型
    127.0.0.1:6379> dbsize             // dbsize 用于返回当前数据库中key的数目
    127.0.0.1:6379> info               // info 用于返回redis数据库的状态信息
    127.0.0.1:6379> flushdb            // flushdb 用于清空当前数据库中的所有key
    127.0.0.1:6379> flushall           // flushall 用于清空所有数据库中的所有key

    三、Redis 连接池

    1、什么是连接池

    当应用程序对数据库进行增删改查等操作时,需要先连接数据库,但是如果应用程序需要频繁地连接数据库进行增删查改操作,那就需要不断地创建连接,这是很耗时且耗资源的操作,也容易对数据库造成安全隐患。所以,当应用程序启动时先建立足够的数据库连接,并将这些连接组成一个连接池,当应用程序需要连接数据库进行增删查改操作时,再使用连接池中的连接,这样可以保证较快的数据库读写速度,还更加安全可靠。

    数据库连接池的运行机制如下:

    (1) 程序初始化时创建连接池
    (2) 使用时向连接池申请可用连接
    (3) 使用完毕,将连接返还给连接池
    (4) 程序退出时,断开所有连接,并释放资源

    2、Python 使用 redis 连接池

    In [5]: import redis
    
    In [6]: pool = redis.ConnectionPool(host='127.0.0.1', port=6379)    # redis.ConnectionPool() 用于创建一个连接池
    
    In [7]: r = redis.Redis(connection_pool=pool)    # 通过 redis.Redis() 连接到连接池
    
    In [8]: r.set('name', 'Tom')    # 执行 redis 操作
    Out[8]: True
    
    In [9]: r.get('name')
    Out[9]: 'Tom'
    
    
    
  • 相关阅读:
    自己学习编程时间比较短,现在把一下自己以前刚刚接触C++时的程序上传一下,有空可以看看
    Scene is unreachable due to lack of entry points and does not have an identifier for runtime access via -instantiateViewControllerWithIdentifier解决办法
    CocosPods 每次install pod 都卡在analyzing
    NSArray,NSMutable和NSSet,NSMutableSet和NSDictionary,NSMutableDictionary用法
    准备离职,工作的一些细节记录
    SpriteBuilder 不能对设置spriteframe的sprite进行设置dynamic Physics解决办法
    SpriteBuilder 不能 Portrait
    LLVM和GCC的区别
    cocos2d 3.3 安装教程
    浅谈 关于ARC循环引用得问题
  • 原文地址:https://www.cnblogs.com/yangjinbiao/p/7897045.html
Copyright © 2011-2022 走看看