<em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

<progress id="1rarx"><tr id="1rarx"></tr></progress>
<sup id="1rarx"><menu id="1rarx"></menu></sup>
<menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

    <sup id="1rarx"><menu id="1rarx"></menu></sup>
    <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
      <em id="1rarx"></em>

          存档

          ‘redis’ 分类的存档

          redis常用命令

          2015年1月9日 2 条评论

          1. redis查看当前所有的key

          2. 查看当前redis的配置信息

          3. MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

          强制停止redis快照导致,redis运行用户没有权限写rdb文件或者磁盘空间满了,解决办法:

          例如:

          阅读全文...

          分类: redis 标签: ,

          动态更新运行中程序的配置信息

          2014年10月18日 3 条评论

          一个程序投产线上使用基本不会停下来,一旦业务需求改变或者增?#26377;?#27714;,需要修改配置文件时,往往需要停机修改配置后重新启动服务。

          这个过程进程少还可以接受,如果停一次机要很长时间而且需要授权更新,这个是难以接受的方法。

          想了几个办法
          1.放到内存,例如redis这种字典,这样可以动态修改redis的值来实现动态更新,问题是如何保证redis出问题不影响原程序呢?
          重redis里读到map,如果需要的配置不在,到内存里去读,这样只能增加配置,想要删除配置好像不理想。

          2.定时load配置文件,

          3.通过信号load,

          2.和3.不好协调多个进程服务一致性问题。

          真伤脑筋啊。

          有人知道好方法,告诉我一下。

          memcache和redis区别

          2014年4月27日 没有评论

          memcache官方定义

          Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

          redis官方定义
          Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

          版权相同

          它们都是使用的bsd协议,使用它的项目可以用于商业用户,不必发布二次修改的代码,可以修改源代码。

          数据类型

          redis数据类型丰富,支持set liset等类型
          memcache支持简单数据类?#20572;?#38656;要客户端自己处理复杂对象

          持久性

          redis支持数据落地持?#27809;?#23384;储
          memcache不支持数据持久存储

          分布式存储

          redis支持master-slave复制模式
          memcache可以使用一致性hash做分布式

          value大小不同

          memcache是一个内存缓存,key的长度小于250字符,单个item存储要小于1M,不适合虚拟机使用

          数据一致性不同

          redis使用的是单线程模?#20572;?#20445;证了数据按顺序提交。
          memcache需要使用cas保证数据一致性。CAS(Check and Set)是一个确保并发一致性的机制,属于“?#27490;?#38145;”范畴;原理很简单:拿版本号,操作,对比版本号,如果一致就操作,不一致就放弃任何操作

          cpu利用

          redis单线程模型只能使用一个cpu,可以开启多个redis进程

          参考

          http://www.cnblogs.com/qunshu/p/3196972.html
          http://www.blogjava.net/chhbjh/archive/2012/02/21/370472.html
          http://maoyidao.iteye.com/blog/1846089

          分类: redis 标签: ,

          redis和redis php扩展安装

          2013年5月29日 1 条评论

          redis是一个内存数据库,比memcache支持更丰富的value类?#20572;?#26032;浪微博就使用redis来做缓存。

          redis的源码安装

          1.make时可能会报如下错误:

          解决办法:
          编辑src/.make-settings里的OPT,改为OPT=-O2 -march=i686。

          2.make test报错:

          解决办法安装tcl

          redis命令介绍

          Redis 由四个可执行文件:redis-benchmark、redis-cli、redis-server、redis-stat 这四个文件,?#30001;?#19968;个redis.conf就构成了整个redis的最终可用包。它们的作用如下:

          redis-server:Redis服务器的daemon启动程序
          redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
          redis-benchmark:Redis?#38405;?#27979;试工具,测试Redis在你的系统及你的配置下的读写?#38405;?br /> redis-stat:Redis状态检测工具,可以检测Redis当前状态?#38382;?#21450;延迟?#32431;?br /> 现在就可以启动redis了,redis只有一个启动?#38382;?#23601;是他的配置文件路径。

          启动redis

          复制源码包里的redis.conf到/etc
          # cd redis-stable
          # cp redis.conf /etc/redis.conf

          编辑/etc/redis.conf ,修改
          daemaon no 为daemaon yes ,以守护进程方式启动进程。

          # redis-server /etc/redis.conf

          关闭redis
          # redis-cli shutdown //关闭所有
          关闭某个端口上的redis
          # redis-cli -p 6397 shutdown //关闭6397端口的redis
          说明:关闭以后缓存数据会自动dump?#25509;?#30424;上,硬盘地址见redis.conf中的dbfilename dump.rdb

          redis配置

          注意,默认复制过去的redis.conf文件的daemonize?#38382;?#20026;no,所以redis不会在后台运行,这时要测试,我们需要重新开一个终端。修改为yes则为后台运行redis。另外配置文件中规定了pid文件,log文件和数据文件的地址,如果有需要先修改,默认log信息定向到stdout.

          下面是redis.conf的主要配置?#38382;?#30340;意义:

          daemonize:是否以后台daemon方式运行
          pidfile:pid文件位置
          port:监听的端口号
          timeout:请求超时时间
          loglevel:log信息级别
          logfile:log文件位置
          databases:开启数据库的数量
          save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
          rdbcompression:是否使用压缩
          dbfilename:数据快照文件名(只是文件名,不包括目录)
          dir:数据快照的保存目录(这个是目录)
          appendonly:是否开启appendonlylog,开启的话?#30475;?#20889;操作会记一条log,这会提高数据抗风险能力,但影响效率。
          appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是?#30475;?#20889;都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自?#21644;?#27493;)
          这时你可以打开一个终端进行测试了,配置文件中默认的监听端口是6379

          redis开机自动启动

          用这个脚本管理之前,需要先配置下面的内核?#38382;?#21542;则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上:

          # vi /etc/sysctl.conf

          vm.overcommit_memory = 1

          然后应用生效:

          # sysctl –p

          建立redis启动脚本:

          # vim /etc/init.d/redis

          然后增加服务并开机自启动:

          redis php扩展安装

          wget https://github.com/nicolasff/phpredis/zipball/master -O php-redis.zip
          unzip php-redis.zip
          cd nicolasff-phpredis-2d0f29b/
          /usr/local/php/bin/phpize
          ./configure --with-php-config=/usr/local/php/bin/php-config
          make && make install

          完成后redis.so被安装到
          /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

          vi /usr/local/php/lib/php.ini

          添加
          extension=redis.so

          重启php-fpm即可。

          configure时可能会遇到,添加--with-php-config?#38382;?#21487;以解决。

          configure: error: Cannot find php-config. Please use --with-php-config=PATH

          ./configure --with-php-config=/usr/local/php/bin/php-config

          分类: redis 标签: , , ,
          印度快乐8官网
          <em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

          <progress id="1rarx"><tr id="1rarx"></tr></progress>
          <sup id="1rarx"><menu id="1rarx"></menu></sup>
          <menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

            <sup id="1rarx"><menu id="1rarx"></menu></sup>
            <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
              <em id="1rarx"></em>

                  <em id="1rarx"><ins id="1rarx"></ins></em><sup id="1rarx"></sup>

                  <progress id="1rarx"><tr id="1rarx"></tr></progress>
                  <sup id="1rarx"><menu id="1rarx"></menu></sup>
                  <menuitem id="1rarx"></menuitem><optgroup id="1rarx"><small id="1rarx"><sub id="1rarx"></sub></small></optgroup>

                    <sup id="1rarx"><menu id="1rarx"></menu></sup>
                    <div id="1rarx"></div><div id="1rarx"><tr id="1rarx"><object id="1rarx"></object></tr></div>
                      <em id="1rarx"></em>