redis密码管理

一. 如何初始化redis的密码? 总共2个步骤: a.在配置文件中有个参数: requirepass  这个就是配置redis访问密码的参数。 比如 requirepass test123 b.配置文件中参数生效需要重启重启redis 。 二.不重启redis如何配置密码? a. 在配置文件中配置requirepass的密码(当redis重启时密码依然有效)。 # requirepass foobared 如  修改成 : requirepass  test123 b. 进入redis重定义参数 查看当前的密码: [root@slaver251 redis-2.4.16]# ./src/redis-cli -p 6379 redis 127.0.0.1:6379> redis 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) (nil) 显示密码是空的, 然后设置密码: redis 127.0.0.1:6379> config set requirepass test123 OK 再次查询密码: redis 127.0.0.1:6379> config get requirepass (error) ERR operation not permitted 此时报错了! 现在只需要密码认证就可以了。 redis 127.0.0.1:6379> auth test123 OK 再次查询密码: redis 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "test123" 密码已经得到修改。 当到了可以重启redis的时候 由于配置参数已经修改 所以密码会自动生效。 要是配置参数没添加密码 那么redis重启 密码将相当于没有设置。 三.如何登录有密码的redis? a.在登录的时候 密码就输入 [root@slaver251 redis-2.4.16]# ./src/redis-cli -p 6379 -a test123 redis 127.0.0.1:6379> redis 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "test123" b.先登录再验证: [root@slaver251 redis-2.4.16]#  ./src/redis-cli -p 6379 redis 127.0.0.1:6379> redis 127.0.0.1:6379> auth test123 OK redis 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "test123" redis 127.0.0.1:6379> 四. master 有密码,slave 如何配置?master 有密码的时候 配置slave 的时候 相应的密码参数也得相应的配置好。不然slave 是无法进行正常复制的。 相应的参数是: #masterauth 比如: masterauth  mstpassword

redis-master-slave

主从复制:让多个slave server拥有和master server相同的数据库副本。 特点 1.master可以有多个slave 2.除了多个slave连到相同的master外,slave也可以连接其他slave形成图状结构 3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。 相反slave在初次同步数据时则会阻塞不能处理client的请求。 4.主从复制可以用来提高系统的可伸缩性,我们可以用多个slave 专门用于client的读请求, 如sort操作可以使用slave来处理。也可以用来做简单的数据冗余 5.可以在master禁用数据持久化,只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化 主从复制的过程 当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。 无论是第一次同步建立的连接还是连接断开后的重新连 接,master都会启动一个后台进程,将数据库快照保存到文件中, 同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件 后,master就发送文件给slave,slave将文件保存到磁盘上, 然后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命 令转发给slave。 而且后续master收到的写命令都会通过开始建立的连接发送给slave。 从master到slave的同步数据的命令和从 client发送的命令使用相同的协议格式。当master和slave的连接断开时slave可以自动重新建立连接。 如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。 配置slave服务器很简单,只需要在配置文件中加入如下配置 slaveof 192.168.1.1 6379  #指定master的ip和端口

Yii 页面缓存

作为PHP的开源框架,自然少不了对缓存的支持。Yii缓存可以在不同的级别使用。在最低级别,可用来缓存单个数据(数据缓存)。往上一级,我们缓存一个由视图脚本生成的页面片断(片段缓存)。在最高级别,可存储整个页面以便需要的时候直接从缓存读取。本文说明页面缓存的配置及实现效果; 实现分为2步; 1. 在config文件加入缓存组件. 'cache' => array ( 'class' => 'system.caching.CFileCache', 'directoryLevel' => 2, ), class标识需要使用的缓存媒介,用途比较广的类型基本都有支持: CMemCache: 使用 PHP memcache 扩展. CApcCache: 使用 PHP APC 扩展. CDbCache: 使用一张数据库表来存储缓存数据。 CFileCache: 使用文件来存储缓存数据。 特别适用于大块数据(例如页面)。 当然,yii也可以支持Redis,需要装一个插件: http://www.yiibase.com/download/view/32.html 本文实例使用的是文件缓存,对于文件缓存,缓存到的位置为protected/runtime/;directoryLevel设置缓存文件的目录深度;如果缓存页面特别多,这个值需要设置大点,否则每个目录下的页面会很多; 2. 在要做缓存的控制器里定义过滤器。 public function filters() { return array ( array ( 'COutputCache + post, list', 'duration' => 3600, 'varyByParam' => array('id','page'), 'dependency' => array( 'class'=>'CDbCacheDependency', 'sql'=>'SELECT MAX(id) FROM me115_book', ) ); } COutputCache 是用于处理缓存的类,如果只填'COutputCache',则控制器里所有action都会通过缓存过滤,定义'COutputCache + post, list',表示只对以下方法进行缓存:actionPost, actionList duration 是缓存的时间,单位是秒, varyByParam 是指定一系列GET参数名称列表, 使用相应的值去确定缓存内容的版本,即同一个action用于区分是不同页面的的参数,此处我以id和page来区分不同页面。 除varyByParam以外,还可以采用其他的条件来区分页面: varyByExpression:指定缓存内容通过自定义的PHP表达式的结果而变化 varyByRoute:指定缓存内容基于请求的路由不同而变化 (controller 和 action) varyBySession:指定是否缓存内容. 因用户session不同而变化 dependency'指定缓存失效依赖关系:可指定文件或数据库;本文采用的是数据库依赖CDbCacheDependency; 本例指定的是数据库,通过数据表的某个值的变化来确定缓存是否失效。例如,如果在表中新增了一条me115_book记录,即使缓存才过了2分钟(<3600),仍然判断为失效,从而查询数据库,生成整个页面,再次缓存; 检查: 查看当前页面是否缓存,可以dump输出一个当前服务器时间,从而检查当前页面是否已缓存;

Yii 缓存

Yii的自带缓存都继承CCache 类, 在使用上基本没有区别 缓存基础类 CCache 提供了两个最常用的方法:set() 和 get()。 要在缓存中存储变量 $value,我们选择一个唯一 ID 并调用 set() 来存储它: Yii::app()->cache->set($id, $value); 被缓存的数据会一直保留在缓存中,直到因一些缓存策略而被删除(比如缓存空间满了,删除最旧的数据)。要改变这一行为,我们还可以在调用 set() 时加一个过期参数,这样数据过一段时间就会自动从缓存中清除。 // 在缓存中保留该值最多 30 秒 Yii::app()->cache->set($id, $value, 30); 当我们稍后需要访问该变量时(不管是不是同一 Web 请求),我们调用 get() (传入 ID)来从缓存中获取它。如果返回值为 false,说明该缓存不可用,需要我们重新生成它。 $value=Yii::app()->cache->get($id); if($value===false) { // 因为在缓存中没找到,重新生成 $value // 再缓存一下以备下次使用 // Yii::app()->cache->set($id,$value); } 为一个要缓存的变量选择 ID 时,确保该 ID 在应用中是唯一的。不必保证 ID 在跨应用的情况下保证唯一,因为缓存组件有足够的智能来区分不同应用的缓存 ID。 要从缓存中删除一个缓存值,调用 delete();要清空所有缓存,调用 flush()。调用 flush() 时要非常小心,因为它会把其它应用的缓存也清空。 提示: 因为 CCache 实现了 ArrayAccess 接口,可以像数组一样使用缓存组件。例如: $cache=Yii::app()->cache; $cache['var1']=$value1;  // 相当于: $cache->set('var1',$value1); $value2=$cache['var2'];  // 相当于: $value2=$cache->get('var2'); 要使用这些缓存也很简单,只要服务器支持, 然后通进简单的修改配置文件即可使用 一. Memcache 的使用 1. 编辑配置文件config/main.php 添加memcache配置 array( 'components'=>array( 'memcache'=>array( 'class'=>' system.caching.CMemCache', 'servers'=>array( array( 'host'=>'server1', 'port'=>11211, 'weight'=>60, ), array( 'host'=>'server2', 'port'=>11211, 'weight'=>40, ), ), ), ), ) 2. 在框架中的使用 Yii::app()->memcache ->set($key, $value, $expire); Yii::app()->memcache ->get($key); Yii::app()->memcache ->deleteValue($key); 二. 数据库缓存的使用 1. 编辑配置文件config/main.php 添加dbcache配置 return array( ...... 'components'=>array( ...... 'dbcache'=>array( 'class'=>' system.caching.CDbCache', ), 'db'=>array( 'class'=>'system.db.CDbConnection', 'connectionString'=>'sqlite:/wwwroot/blog/protected/data/blog.db', 'schemaCachingDuration'=>3600, ), ), ); 2. 在框架中的使用 Yii::app()->dbcache ->set($key, $value, $expire); Yii::app()->dbcache ->get($key); 三. 文件缓存的使用 1. 编辑配置文件config/main.php 添加dbcache配置 // application components 'components'=>array( 'filecache'=>array( 'class'=>'system.caching.CFileCache', //我们使用CFileCache实现缓存,缓存文件存放在runtime文件夹中 'directoryLevel'=>'2',   //缓存文件的目录深度 ), ), 2. 在框架中的使用 Yii::app()->filecache ->set($key, $value, $expire); Yii::app()->filecache ->get($key); 四.    APC使用 1.    编辑配置文件config/main.php 添加dbcache配置 'components'=>array( 'class' => 'system.caching.CApcCache', ),

redis 添加访问密码

1. 更改redis.conf配置 # requirepass foobared 去掉注释,foobared改为 自己的password , 我测试的时候用的是默认的 foobared 2.启动redis /usr/local/redis/src/redis-server -p 6371 3.测试 /usr/local/redis/src/redis-cli -p 6371 -a foobared redis>set a b (error) ERR operation not permitted      (-a 设置这个时候没起作用 ) redis>auth foobared OK redis>set a b OK redis>quit 这时,再 /usr/local/bin/redis-cli -a foobared redis > set a b OK