• redis和phpredis的安装


    数据库主要类型有对象数据库,关系数据库,键值数据库等等,对象数据库太超前了,现阶段不提也罢;关系数据库就是平常说的MySQLPostgreSQL这些熟的不能再熟的东西,至于键值数据库则是本文要着重说的,其代表主要有MemcacheDBTokyo Cabinet等等。

    Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和 键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序 (SORT)等高级功能,在实现INCRSETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。

    详细描述参见官方手册,同时,官方提供了一个名为Retwis的项目的源代码,可以对照着官方介绍学习,注意其中关于Data Layout的描述,其他没什么。

    项目实践中,多以关系数据库为主,不过合理的使用Redis这样的键值数据库,往往能扬长避短,比如说实现一个类似消息队列的功能,对MySQL来说,除非使用Q4M,否则很难满足高并发请求,不过对Redis来说,通过内建的Lists支持,消息队列就是小菜一碟。

    redis安装

    由于某些原因,我希望我的项目中使用redis,于是开始学习如何使用这个东西。首先要得到它,我是从它的官网上面下载的可以用wget直接下载,我一般是会把软件安装代码放在/dist/dist下面:

    cd /dist/dist 

    wget http://redis.googlecode.com/files/redis-2.2.7.tar.gz

    打开它:

    tar zxf redis-2.2.7.tar.gz

    cd redis-2.2.7

    查看了一下安装文档,它的安装很简单,就make一下就可以了。

    make

    make test

    如果不放心的话可以做一下测试make test

     接下来就是使用了,由于它是一个数据库,就像MYSQL,那它就应该有服务端和客户端,先打开服务端:

    cd src

    ./redis-server > /dev/null &    

    加上“>/dev/null &”的意思是让它在后台执行,不输出信息如果不是的话就会有每5秒输入一次的信息,像这样的:

    [5265] 23 May 15:34:29 – DB 0: 4 keys (0 volatile) in 8 slots HT.

    [5265] 23 May 15:34:29 – 0 clients connected (0 slaves), 790832 bytes in use

    [5265] 23 May 15:34:34 – DB 0: 4 keys (0 volatile) in 8 slots HT.

    [5265] 23 May 15:34:34 – 0 clients connected (0 slaves), 790832 bytes in use

    [5265] 23 May 15:34:39 – DB 0: 4 keys (0 volatile) in 8 slots HT.

    [5265] 23 May 15:34:39 – 0 clients connected (0 slaves), 790832 bytes in use

    这样就把服务端打开了。

    接下来我们用客户端去连接

    ./redis-cli

    由于它是一个key-value的数据库,所以每条数据都是一个键名一个键值

     

       redis> set foo bar

        OK

        redis> get foo

        "bar"

        redis> incr mycounter

        (integer) 1

        redis> incr mycounter

        (integer) 2

        redis>quit

    最后是退出,不需要加任何的符号,输入quit回车就退出了。我们来看一下redis使用的是哪一个端口:netstat -tnlp可以看到它使用的是

    tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      5265/redis-server

    6379这个端口,我们还可以用telnet来验证:

     

    telnet localhost 6379

    Trying 127.0.0.1…

    Connected to localhost.localdomain (127.0.0.1).

    Escape character is ‘^]’.

    set foo 1

    +OK

    get foo

    $1

    1

    quit

    +OK

    Connection closed by foreign host.

    基本上到这里就完成了redis的安装了,接下来就是具体的应用了。

     

    安装phpredis模块

    https://github.com/owlient/phpredis

    PHPredis下载地址:https://github.com/nicolasff/phpredis/tree/2.1.3

    选择Download .zip

    下载phpredis
    解压

    shell> cd phpredis
    shell> /usr/local/php/bin/phpize
    这个phpize是安装php模块的
    shell> ./configure –with-php-config=/usr/local/php/bin/php-config
    shell> make
    shell> make install
    接下来在php.ini中添加extension=redis.so 先要看看有没有extension_dir=/…….

    如果找不到php.ini在哪,可以写一个PHP文件,内容为phpinfo();运行这个文件,找到Loaded Configuration File,这个就是php.ini所在的位置,它的名字不一定叫php.ini
    重启apache或者nginx

    php代码测试
    $redis = new Redis();
    $redis->connect(‘127.0.0.1’,6379);
    $redis->set(‘test’,’hello world!’);
    echo $redis->get(‘test’);
    ?>

    输出hello world!

    http://code.google.com/p/php-redis/

    ================

    # redis目前提供四种数据类型:string,list,setzset(sorted set)
    # * string
    是最简单的类型,你可以理解成与Memcached一模一个的类型,一个key对应一个value,其上支持的操作与Memcached的操 作类似。但它的功能更丰富。
    # * list
    是一个链表结构,主要功能是pushpop、获取一个范围的所有值等等。操作中key理解为链表的名字。
    # * set
    是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。
    # * zset
    set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的 值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。





  • 相关阅读:
    new对象数组时的内存布局
    写程序取自己进程的AEP
    类虚函数表原理实现分析(当我们将虚表地址[n]中的函数替换,那么虚函数的实现就由我们来控制了)
    测试 __try, __finally, __except(被__finally捕获的异常, 还会被上一级的__except捕获。反之不行)
    围观M$的new
    将258.369 double值转为内存表示(科学计数法)
    Broadcast Reveiver作用
    DEBUG模式下, 内存中的变量地址分析
    不包含SDK头文件, 补全API定义
    俄罗斯方块SDK版
  • 原文地址:https://www.cnblogs.com/firmy/p/2300295.html
Copyright © 2020-2023  润新知