• Redis使用介绍


    Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP,Java客户端,使用很方便。

    Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能,比如排序、聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的。

    Redis除了作为存储之外还提供了一些其它方面的功能,比如聚合计算、pubsub、scripting等,对于此类功能需要了解其实现原理,清楚地了解到它的局限性后,才能正确的使用,比如pubsub功能,这个实际是没有任何持久化支持的,消费方连接闪断或重连之间过来的消息是会全部丢失的,又比如聚合计算和scripting等功能受Redis单线程模型所限,是不可能达到很高的吞吐量的,需要谨慎使用。

    本例子Linux采用的centOs5.4

    下面来介绍一下redis的安装

    [java] view plain copy print ?

    1. wget  http: //redis.googlecode.com/files/redis-2.0.4.tar.gz   
    2. tar zxvf redis- 2.0 . 4 .tar.gz  
    3. cd  redis- 2.0 . 4   
    4. make  

    make完后 redis-2.0.4目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli

    安装成功

    启动服务

    ./redis-server

    也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动

    ./redis-server redis.conf

    redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

    启动redis服务进程后,就可以使用测试客户端程序redis-cli和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  

    [6020] 10 Aug 20:58:21 * The server is nowready to accept connections on port 6379

    [6020] 10 Aug 20:58:21 - 0 clientsconnected (0 slaves), 533432 bytes in use

    [6020] 10 Aug 20:58:30 - 0 clientsconnected (0 slaves), 533432 bytes in use

    还有就是执行:sysctl vm.overcommit_memory=1

    关于redis一些资料的学习可以到http://www.cnblogs.com/xhan/archive/2011/02/08/1949867.html 去学习 ,很全面

    下面介绍一个简单java客户端Jedis,大家可以到https://github.com/xetorthio/jedis 这网址下载

    redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比较高效的。项目中需要用集中式可横向扩展的缓存框架,做了一点调研,即便redis、memcached存在效率上的差异(具体比较参考http://timyang.net/data/mcdb-tt-redis/),但其实都能满足目前项目的需求;但是redis还是比较风骚的,支持链表和集合操作,支持正则表达式查找key,目前项目缓存的结果大多是链表,如果链表新增或者修改数据的话,redis就体现出了极大的优势(memcached只能重新加载链表,redis可以对链表新增或者修改)

    1:下载redis

    下载地址 http://code.google.com/p/redis/downloads/list

    推荐下载redis-1.2.6.tar.gz,之前这个版本同事已经有成功安装运行的经验,redis-2.0.4.tar.gz 这个版本我安装后无法操作缓存数据,具体原因后续再说

    2:安装redis

    下载后解压 tar zxvf redis-1.2.6.tar.gz 到任意目录,例如/usr/local/redis-1.2.6

    解压后,进入redis目录

        cd /usr/local/redis-1.2.6 

        make 

    拷贝文件

    cp redis.conf /etc/ 这个文件时redis启动的配置文件

    cp redis-benchmark redis-cli redis-server /usr/bin/ #这个倒是很有用,这样就不用再执行时加上./了,而且可以在任何地方执行

    设置内存分配策略(可选,根据服务器的实际情况进行设置)

    /proc/sys/vm/overcommit_memory

    可选值:0、1、2。

    0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

    1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

    2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

    值得注意的一点是,redis在dump数据的时候,会fork出一个子进程,理论上child进程所占用的内存和parent是一样的,比如parent占用的内存为8G,这个时候也要同样分配8G的内存给child,如果内存无法负担,往往会造成redis服务器的down机或者IO负载过高,效率下降。所以这里比较优化的内存分配策略应该设置为 1(表示内核允许分配所有的物理内存,而不管当前的内存状态如何)

    开启redis端口,修改防火墙配置文件

        vi /etc/sysconfig/iptables 

    加入端口配置

        -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT 

    重新加载规则

        service iptables restart  

    3:启动redis服务

        [root@Architect redis-1.2.6]# pwd 

        /usr/local/redis-1.2.6 

        [root@Architect redis-1.2.6]# redis-server /etc/redis.conf 

    查看进程,确认redis已经启动

        [root@Architect redis-1.2.6]# ps -ef | grep redis 

        root       401 29222  0 18:06 pts/3    00:00:00 grep redis 

        root     29258     1  0 16:23 ?        00:00:00 redis-server /etc/redis.conf 

    如果这里启动redis服务失败,一般情况下是因为redis.conf文件有问题,建议检查或找个可用的配置文件进行覆盖,避免少走弯路,这里建议,修改redis.conf,设置redis进程为后台守护进程

        # By default Redis does not run as a daemon. Use 'yes' if you need it. 

        # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. 

        daemonize yes 

    4:测试redis

        [root@Architect redis-1.2.6]# redis-cli 

        redis> set name songbin 

        OK 

        redis> get name  

        "songbin" 

    5:关闭redis服务

        redis-cli shutdown 

    redis服务关闭后,缓存数据会自动dump到硬盘上,硬盘地址为redis.conf中的配置项dbfilename dump.rdb所设定

    强制备份数据到磁盘,使用如下命令

        redis-cli save 或者 redis-cli -p 6380 save(指定端口)

    安装的时候,make完了之后再make install 就自动安装到/usr/local/bin下了,不用手动cp的

     redis函数操作

    http://www.runoob.com/redis/sorted-sets-zscore.html

    出自http://blog.csdn.net/ajun_studio/article/details/6698147 和http://www.oschina.net/question/12_18065?sort=time

    Welcome to redis-py’s documentation!

    Indices and tables

     

    http://redis-py.readthedocs.org/en/latest/

  • 相关阅读:
    将纸质照片转成数字报名照
    华为手机如何下载google play商店中的apk
    大疆Mavic 2发布
    [转] Spring使用Cache、整合Ehcache
    [转] spring-boot集成swagger2
    [转] Intellij IDEA快捷键与使用小技巧
    [转] 这个常识很重要,教你如何区分JEDEC 1600内存与XMP 1600内存
    [转] 下载文件旁边附的MD5/SHA256等有什么用途?
    Openresty 健康检查
    Vuforia图像追踪,动态创建的对象隐藏显示的坑
  • 原文地址:https://www.cnblogs.com/wicub/p/5368490.html
Copyright © 2020-2023  润新知