Redis安装说明及应用场景介绍

  |   0 评论   |   943 浏览

    Redis是个非常不错的开源软件,key-value存储,数据完全内存中,虽是单进程,由于其采用异步非阻塞IO操作,性能表现非凡。

    虽然Redis的使用已经很广泛了,但考虑到可能有一些朋友没有使用过,还是写一些基础的,安装过程,应用场景类的文章。


    Redis的特性简要列一下:

    速度快:数据存于内存中
    数据结构丰富: string, hash, list, set, sortedSst, bitmap
    持久化:有2种持久方式 RDB,AOF 
    主从复制:异步复制,支持部署方式 M ->S, M ->S ->S
    发布/订阅:轻量级MQ
    支持key过期自动失效
    支持简单的事务
    单进程,原子性操作,setnx expire 可作为分布式锁


    Redis安装  是在 CentOS release 6.4 64bit 安装的,过程非常简单

    1、下载安装文件

    cd /data/apps

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

    2、解压安装

    tar xzf redis-3.0.7.tar.gz 

    cd redis-3.0.7

    make

    3、copy安装后生成的bin‘文件

    mkdir -p  /data/apps/redis-3.0.7_6379/bin
    mkdir -p  /data/apps/redis-3.0.7_6379/data


    cd /data/apps/redis-3.0.7/src

    cp -rfp redis-benchmark    /data/apps/redis-3.0.7_6379/bin/redis-benchmark
    cp -rfp redis-check-aof     /data/apps/redis-3.0.7_6379/bin/redis-check-aof
    cp -rfp redis-check-dump  /data/apps/redis-3.0.7_6379/bin/redis-check-dump
    cp -rfp redis-cli               /data/apps/redis-3.0.7_6379/bin/redis-cli
    cp -rfp redis-sentinel        /data/apps/redis-3.0.7_6379/bin/redis-sentinel
    cp -rfp redis-server          /data/apps/redis-3.0.7_6379/bin/redis-server

    cd /data/apps/redis-3.0.7
    cp -rfp redis.conf           /data/apps/redis-3.0.7_6379/redis.conf
    cp -rfp sentinel.conf      /data/apps/redis-3.0.7_6379/sentinel.conf

    4、启动服务

    cd /data/apps/redis-3.0.7_6379/bin

    ./redis-server /data/apps/redis-3.0.7_6379/redis.conf

    如果看到下面的图,则说明启动成功了

    查看大图


    由于redis默认不是以后台模式启动的,需要修改配置下。

    找到这一行  daemonize no

    修改为       daemonize yes

    然后重新启动就可以了。


    5、客户端连接使用. redis 默认使用 6379端口,不设置密码,客户端使用比较简单

    cd /data/apps/redis-3.0.7_6379/bin

    [root@localhost bin]# ./redis-cli 
    127.0.0.1:6379> set k1 v1
    OK
    127.0.0.1:6379> get k1
    "v1"
    127.0.0.1:6379> 
    其他的命令可以参考 http://redis.io/commands 使用。更复杂的操作,需要自己去查阅官方文档了。


    6、Redis所在OS的内核优化

    在Redis启动的时候,打印出来一句话“WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.”

    也就是说当Redis执行BGSAVE时可能由于内存不够用导致失败,需要调整 vm.overcommit_memory = 1 。 需要做如下操作:

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
    sysctl -p

    应用场景

    其实这里有好多要说,就我们自己的业务来说使用非常广泛,我先简单列一下:

    1、过期key会自动删除,命令expire

        这个是比较常用的,比如每日任务,key存储用户完成的任务ID,今日完成后,就标示已完成,key的失效时间设置成明日凌晨失效。

    2、计数器使用

        统计访问次数,限制用户访问次数等都可以利用此特性

    3、实时排行榜

        以前未使用redis之前,排行榜根本无法做到实时,基本是5分钟扫描统计。

        直接使用SortedSet,就可以轻松来做排行榜数据

    4、最新文章

        这个是使用list类型,lpush和ltrim结合,可以保存最新的某个区间的数据

    5、pub/sub

        Redis可以作为MQ来使用,消息的发布和订阅。

        主意:此特性是“forget”模式,Redis不存储消息,当Consumer端出问题时,消息就会丢失

    6、作为MySQL的一个补充

        可以存储业务数据,作为关系型数据库的一个补充,但前提要开启持久化,不然重启后数据就丢掉了。

    7、分布式锁

        这个可以参考先前的一篇文章。主要是 setnx 和 expire 相结合使用。

    8、配置服务

        可以作为一个配置中心来使用,存储配置信息。

    9、Cache

        这个自不用说了。

    10、Lua

        Redis支持Lua脚本,编写若干命令组合为一个小型的非阻塞事务或者更新逻辑。

    当然其应用远不止上面这些点,等待着我们去挖掘。

    评论

    发表评论

    validate