zoukankan      html  css  js  c++  java
  • Linxu下Redis安装

    Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。

    一、下载稳定版()
    Redis 使用标准的 major.minor.patchlevel版本做法。 stable表示稳定版本,一般用偶数版本,如:1.2, 2.0, 2.2, 2.4, 2.6,2.8。 奇数标识不稳定版本,如:2.9.x,他未来的稳定版本是3.0。
    wget http://download.redis.io/releases/redis-2.8.19.tar.gz
    二、解压缩编译
    tar zxvf redis-2.8.19.tar.gz
    cd redis-2.8.19
    make
    mv redis-2.8.19 redis
    mkdir /usr/local/redis/var/
    mkdir /usr/local/redis/etc
    cp /usr/local/redis/redis.conf /usr/local/redis/etc
    make命令执行完成后,会在当前目录下生成本个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-stat,它们的作用如下:

    redis-server:Redis服务器的daemon启动程序
    redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
    redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
    redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况

    五、修改配置文件

    /etc/sysctl.conf
    添加

    vm.overcommit_memory=1
    刷新配置使之生效

    sysctl vm.overcommit_memory=1
    补充介绍:

    **如果内存情况比较紧张的话,需要设定内核参数:
    echo 1 > /proc/sys/vm/overcommit_memory

    内核参数说明如下:

    overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。
    0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
    1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
    2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

    **编辑redis.conf配置文件(/etc/redis.conf),按需求做出适当调整,比如:
    daemonize yes #转为守护进程,否则启动时会每隔5秒输出一行监控信息
    save 60 1000 #减小改变次数,其实这个可以根据情况进行指定
    maxmemory 256000000 #分配256M内存

    在我们成功安装Redis后,我们直接执行redis-server即可运行Redis,此时它是按照默认配置来运行的(默认配置甚至不是后台运 行)。我们希望Redis按我们的要求运行,则我们需要修改配置文件,Redis的配置文件就是我们上面第二个cp操作的redis.conf文件,目前 它被我们拷贝到了/usr/local/redis/etc/目录下。修改它就可以配置我们的server了。如何修改?下面是redis.conf的主 要配置参数的意义:
    daemonize:是否以后台daemon方式运行
    pidfile:pid文件位置
    port:监听的端口号
    timeout:请求超时时间
    loglevel:log信息级别
    logfile:log文件位置
    databases:开启数据库的数量
    save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
    rdbcompression:是否使用压缩
    dbfilename:数据快照文件名(只是文件名,不包括目录)
    dir:数据快照的保存目录(这个是目录)
    appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
    appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

    下面是一个略做修改后的配置文件内容:
    vi /usr/local/redis/etc/redis.conf

    daemonize yes
    requirepass 123456
    pidfile /usr/local/redis/var/redis.pid
    port 6379
    timeout 300
    loglevel debug
    logfile /usr/local/redis/var/redis.log
    stop-writes-on-bgsave-error no
    databases 16
    save 900 1
    save 300 10
    save 60 10000
    rdbcompression yes
    dbfilename dump.rdb
    dir /usr/local/redis/var/
    appendonly no
    appendfsync always
    

      

    创建/usr/local/redis/redisd 启动文件,输入以下内容
    vi /usr/local/redis/redisd

    #!/bin/sh
    
    function_start_redis()
    {
    printf "Starting ReDis...
    "
    /usr/local/redis/redis/src/redis-server /usr/local/redis/etc/redis.conf
    }
    
    function_stop_redis()
    {
    printf "Stoping ReDis...
    "
    /usr/local/redis/redis/src/redis-cli shutdown
    }
    
    function_restart_redis()
    {
    printf "Restarting ReDis...
    "
    function_stop_redis
    sleep 5
    function_start_redis
    }
    
    if [ "$1" = "start" ]; then
    function_start_redis
    elif [ "$1" = "stop" ]; then
    function_stop_redis
    elif [ "$1" = "restart" ]; then
    function_restart_redis
    else
    printf "Usage: /usr/local/redis/redisd {start|stop|restart}
    "
    fi

    chmod +x /usr/local/redis/redisd
    然后在命令行执行:

    /usr/local/redis/redisd start

    查看是否成功启动
    /usr/local/redis/src/redis-cli ping
    出现下面提示,说明redis安装运行成功
    PONG

    启动命令行客户端赋值取值
    /usr/local/redis/redis/src/redis-cli set mykey somevalue
    /usr/local/redis/redis/src/redis-cli get mykey

    关闭服务

    /usr/local/redis/redisd stop


    Redis主从配置
    REDIS主从配置相当简单,一些文章啰里罗嗦的写了一大篇,其实就两句话:
    打开从机的redis.conf
    Port 6381 (注:不能跟主机的一样)
    Sleverof 10.0.0.149 6383 (注:ip为主机IP,6383为主机REDIS端口号)
    先重启主机,再重启从机
    运行./redis-server redis.conf
    若出现:的样子,说明配置成功

    客户端也可以使用telnet形式连接。

    [root@dbcache conf]# telnet 127.0.0.1 6379
    Trying 127.0.0.1...
    Connected to dbcache (127.0.0.1).
    Escape character is '^]'.
    set foo 3
    bar
    +OK
    get foo
    $3
    bar
    ^]
    telnet> quit
    Connection closed.


    PHP访问带密码的Redis

    1. 设置Redis密码,以提供远程登陆
    打开redis.conf配置文件,找到requirepass,然后修改如下:

    requirepass yourpassword
    yourpassword就是redis验证密码,设置密码以后发现可以登陆,但是无法执行命令了。
    命令如下:

    redis-cli -h 127.0.0.1 -p 6379//启动redis客户端,并连接服务器
    keys * //输出服务器中的所有key
    报错如下

    (error) ERR operation not permitted

    这时候你可以用授权命令进行授权,就不报错了
    命令如下:

    auth youpassword

    2. PHP访问Redis

    复制代码
    $redis = new Redis();
    $conn = $redis->connect('localhost', 6379);
    $auth = $redis->auth('123456'); //设置密码
    var_dump($auth);
    $redis->set('access_token', "123213213213213213");
    $redis->set('expired_time', 1464344863);

    var_dump($redis->get("access_token"));
    var_dump($redis->get("expired_time"));

  • 相关阅读:
    一步步构建大型网站架构
    程序员技术练级攻略
    再谈“我是怎么招聘程序员的”
    os.path.basename()
    用pymysql实现的注册登录公告练习
    缓冲(cache)和缓存(buffer)
    数据库视图,触发器,事务,存储过程,函数,备份与恢复
    mysql用户管理和pymysql
    mysql重点,表查询操作和多表查询
    数据库的约束语句和表之间的关系
  • 原文地址:https://www.cnblogs.com/cnsong/p/6907474.html
Copyright © 2011-2022 走看看