redis(Remote Dictionary Server)是一种Nosql技术,它是一个开源的高级kv存储和数据结构存储系统。

redis不仅仅是能够存储key和value这种简单的键值对,还能存储例如集合、hash表、列表、字典等。

redis在整个运行过程中,数据统统都是存储在内存中的,因此它的速度非常快。

redis会周期性的将内存中的数据写入在磁盘中,从而实现数据持久化的访问能力。

redis还支持主从模式以及支持通过lua脚本去编写扩展,并且支持高可用和分布式集群解决方案。

Redis 连接(CONNECT)

/**
* 创建一个 Redis 客户端
*
* Redis::__construct 构造函数
*/
$redis = new Redis(); /**
* connect 连接redis服务
*
* @param string $host [服务地址]
* @param int $port [端口号,默认6379]
* @param float $timeout [连接时长,默认0.0表示不限制]
* @return bool [成功返回true,失败返回false]
*/
$redis->connect('127.0.0.1', 6379, 0.0); /**
* pconnect 不会主动关闭的连接
*
* @param string $host [服务地址]
* @param int $port [端口号,默认6379]
* @param float $timeout [连接时长,默认0.0]
* @return bool [成功返回true,失败返回false]
*/
$redis->pconnect('127.0.0.1', 6379, 0.0); /**
* auth 使用密码进行连接验证
*
* @param string $password
* @return bool [验证成功返回true,否则返回false]
*/
$redis->auth('password'); /**
* ping 检查当前连接状态
*
* @return string [成功返回+PONG,失败抛出RedisException]
*/
$redis->ping(); /**
* select 切换到指定的数据库(0-15)
* 新连接总是使用0号数据库
*
* @param int $dbindex
* @return bool [成功返回true,失败返回false]
*/
$redis->select(5); /**
* open 连接服务,与connect功能相同
*
* @param string $host [服务地址]
* @param int $port [端口号,默认6379]
* @param float $timeout [连接时长,默认0.0]
*/
$redis->open('127.0.0.1'); /**
* close 关闭连接,除非连接正在使用
*/
$redis->close();

redis-connect

Redis 键(KEY)

/**
* del 移除特定的key
*
* @param int|array $key1 [需要移除的key]
* @param string $key2 ...
* @param string $key3 ...
* @return int [被删除key的数量]
*/
$redis->del('key1', 'key2', 'key3');
$redis->del(array('key1', 'key2', 'key3')); /**
* keys 查找符合特定模式的key
* '*' 匹配数据库中所有key
*
* @param string $pattern [匹配模式]
* @return array [符合条件的key数组]
*/
$redis->keys('key_id_*'); /**
* randomkey 从数据库中随机返回一个key
*
* @return string [一个随机的key]
*/
$redis->randomKey(); /**
* ttl 返回给定key的剩余生存时间(单位秒)
*
* @param string $key
* @return int [key剩余有效时间]
*/
$redis->ttl('key'); /**
* exists 检查给定key是否存在
*
* @param string $key
* @return bool [如果key存在返回true,否则返回false]
*/
$redis->exists('key'); /**
* move 将当前数据库(默认为0)的key移动到给定的数据库db当中
*
* @param string $key [待移动的key]
* @param int $dbindex [目标数据库编号]
* @return bool [成功返回true,失败返回false]
*/
$redis->select(0); //选择数据库0
$redis->move('key', 1); //将key从db0移动至db1 /**
* rename 修改key的名称
*
* @param string $srcKey [修改之前的名称]
* @param string $dstKey [修改之后的名称]
* @return bool [成功返回true,失败返回false]
*/
$redis->rename('srcKey', 'dstKey'); /**
* renameNx 仅当srcKey不存在时,将srcKey改名为dstKey
*
* @param string $srcKey
* @param string $dstKey
* @return bool [成功返回true,失败返回false]
*/
$redis->renameNx('srcKey', 'dstKey'); /**
* type 返回key所存储的值的类型
* none(0) string(1) set(2) list(3) zset(4) hash(5)
*
* @param string $key
* @return int [值类型]
*/
$redis->type('key'); /**
* expire|setTimeout 为给定key设置生存时间(单位秒)
* 当key过期时,它会被自动删除
*
* @param string $key [将失效的key]
* @param int $ttl [剩余生存时间]
* @return bool [设置成功返回true,失败返回false]
*/
$redis->expire('key', 10);
$redis->setTimeout('key', 10); /**
* expireAt 为给定key设置到期时间(时间戳)
*
* @param string $key [将失效的key]
* @param int $timestamp [UNIX时间戳]
* @return bool [设置成功返回true,失败返回false]
*/
$redis->expireAt('key', time() + 60); /**
* persist 移除key的过期时间,key将持久保持
* 如果key不存在或没有设置过期时间,则操作失败
*
* @param string $key
* @return bool [移除成功返回true,失败返回false]
*/
$redis->persist('key'); /**
* sort 给列表、集合、有序集合排序(默认递增)
* [BY pattern] [GET patern] [LIMIT offset count]
* [SORT ASC|DESC] [ALPHA] [STORE destination]
*
* @param string $key
* @param array $option [可选,操作]
* @return array [排序结果]
*/
$redis->sort('key', array(
'BY' => 'user_id_*', //使用外部key作为权重比较元素
'GET' => 'user_name_*', //获取外部关联key值
'LIMIT' => array(5, 3), //从5开始取3个元素
'ALPHA' => true, //以UTF-8规则对字符排序
'SORT' => 'DESC', //以递减模式排序
'STORE' => 'newKey', //将排序结果保存至newKey中
));

redis-key

Redis 字符串(STRING)

/**
* set 将字符串value关联到key
* set 无视类型覆盖原值
*
* @param string $key
* @param string $value
* @param int $timeout [过期时间,默认为0]
* @return bool [命令成功返回true]
*/
$redis->set('key', 'value'); /**
* setnx 当key不存在时设置key的值。
*
* @param string $key
* @param string $value
* @return bool [成功返回true,失败返回false]
*/
$redis->setnx('key', 'value'); /**
* setex 将值value关联到key,并设置key的有效时间(单位秒)
* setex 是一个原子性操作,关联值和设置有效时间会同时完成
*
* @param string $key
* @param int $ttl
* @param string $value
* @return bool [命令成功返回true]
*/
$redis->setex('key', 60, 'value'); /**
* setRange 用value覆写key中存储的字符串(从偏移量offset开始)
* 若key中存储的字符串长度小于偏移量,那么偏移量之间的空白将用零比特填充
*
* @param string $key
* @param int $offset
* @param string $value
* @return int [返回覆写后的字符串长度]
*/
$redis->setRange('key', 5, 'value'); /**
* mset 同时设置多个key-value对(会覆盖旧值)
* mset 是一个原子性操作,所有key在同一时间被设置
*
* @param array $array [key-value数组]
* @return bool [成功返回true,失败返回false]
*/
$redis->mset(array('key' => 'value')); /**
* msetnx 同时设置多个key-value(当且仅当key不存在时)
* msetnx 是原子性的,所有key要么都被设置,要么都不被设置
*
* @param array $array [key-value数组]
* @return int 1 [成功返回1,失败返回0]
*/
$redis->msetnx(array('key' => 'value')); /**
* append 将value追加到key原来的值之后
* 如果key不存在,则简单的将key设为value
*
* @param string $key
* @param string $value [追加的字符串]
* @return int [返回追加后的字符串长度]
*/
$redis->append('key', 'value'); /**
* get 返回key所关联的字符串值
*
* @param string $key
* @return string|bool [成功返回value值,失败返回false]
*/
$redis->get('key'); /**
* mget 返回所有给定key的值
*
* @param array $array [key数组]
* @return array [返回values数组]
*/
$redis->mget(array('key1', 'key2', 'key3')); /**
* getRange 返回key总字符串的子字符串
* 子字符串的截取范围由start和end两个偏移量决定
*
* @param string $key
* @param int $start [开始位置]
* @param int $end [结束位置]
* @return string [返回截取后的子串]
*/
$redis->getRange('key', 0, -1); /**
* getSet 将给定key的值设为value,并返回key的旧值
*
* @param string $key
* @param string $value
* @return string [返回之前的value]
*/
$redis->getSet('key', 'value'); /**
* strlen 获取key所存储的字符串长度
*
* @param string $key
* @return int [返回字符串长度]
*/
$redis->strlen('key'); /**
* incr 将key中储存的数字值增加一
*
* @param string $key
* @return int [返回增加后的值]
*/
$redis->incr('key'); /**
* incrBy 将key所储存的值加上给定的增量值
*
* @param string $key
* @param int $increment [整形增量]
* @return int [返回增加后的值]
*/
$redis->incrBy('key', 10); /**
* incrByFloat 将key所储存的值加上给定的浮点增量值
*
* @param string $key
* @param float $increment [浮点型增量]
* @return float [返回增加后的值]
*/
$redis->incrByFloat('key', 3.14); /**
* decr 将key中储存的数字值减少一
*
* @param string $key
* @return int [返回减少后的值]
*/
$redis->decr('key'); /**
* decrBy 将key所储存的值减去给定的减量值
*
* @param string $key
* @param int $decrement [整形减量]
* @return int [返回减少后的值]
*/
$redis->decrBy('key', 10); /**
* setBit 设置或清除字符串指定偏移量上的位(bit)
* 位的设置或清除取决于value参数,可以是0或1
*
* @param string $key
* @param int $offset [偏移量]
* @param int $value [位设置 0或1]
* @return int [返回偏移量上原来的比特值 0或1]
*/
$redis->setBit('key', 5, 0); /**
* getBit 获取字符串指定偏移量上的位(bit)
* 当offset大于字符串长度,或key不存在时,返回0
*
* @param string $key
* @param int $offset [偏移量]
* @return int [返回偏移量上的比特值 0或1]
*/
$redis->getBit('key', 5);

redis-string

Redis 哈希表(HASH)

/**
* hSet 将哈希表key中的域field的值设为value
* 如果field已经存在于哈希表中,旧值将被覆盖
*
* @param string $key [key 键]
* @param string $hashKey [field 字段]
* @param string $value [value 值]
* @return int [新值返回1,覆盖返回0,错误返回error]
*/
$redis->hSet('key', 'field', 'value'); /**
* hSetNx 为哈希表中添加一个新值
* 若域field已存在,则该操作无效
*
* @param string $key
* @param string $hashKey
* @param string $value
* @return bool [设置成功返回true,字段已经存在返回false]
*/
$redis->hSetNx('key', 'field', 'value'); /**
* hMset 为哈希表同时设置多个field-value
* 此命令会覆盖哈希表中已存在的域
*
* @param string $key
* @param array $hashKeys [field-value 数组]
* @return bool [成功返回true,失败返回false]
*/
$redis->hMset('key', array('field' => 'value')); /**
* hGet 返回哈希表key中给定域field的值
*
* @param string $key
* @param string $hashKey
* @return string|bool [返回字段值,若失败则返回false]
*/
$redis->hGet('key', 'field'); /**
* hMGet 获取哈希表key中多个域的值
*
* @param string $key
* @param array $hashKeys
* @return array [返回 field-value 数组]
*/
$redis->hMGet('key', array('field1', 'field2', 'field3')); /**
* hGetAll 获取哈希表中所有的域和值
*
* @param string $key
* @return array [返回 field-value 数组]
*/
$redis->hGetAll('key'); /**
* hDel 删除哈希表中的指定域
* 不存在的域将被忽略
*
* @param string $key
* @param string $hashKey1
* @param string $hashKey2
* @param string $hashKeyN
* @return int [返回被删除字段的数量]
*/
$redis->hDel('key', 'field'); /**
* hLen 获取哈希表的长度
* 如果key不存在,或不是hash,则返回false
*
* @param string $key
* @return int [返回字段数量]
*/
$redis->hLen('key'); /**
* hExists 查看哈希表中给定字段是否存在
*
* @param string $key
* @param string $hashKey
* @return bool [字段存在返回true,否则返回false]
*/
$redis->hExists('key', 'filed'); /**
* hIncrBy 为哈希表key中的指定字段的整数值加上增量
*
* @param string $key
* @param string $hashKey
* @param int $increment [整形增量]
* @return int [返回增加后的值]
*/
$redis->hIncrBy('key', 'field', 10); /**
* hIncrByFloat 为哈希表key中的指定字段的浮点数值加上增量
*
* @param string $key
* @param string $field
* @param float $increment [浮点型增量]
* @return float [返回增加后的值]
*/
$redis->hIncrByFloat('key', 'field', 3.14); /**
* hKeys 获取所有哈希表中的字段
*
* @param string $key
* @return array [返回field数组]
*/
$redis->hKeys('key'); /**
* hVals 获取哈希表中所有值
*
* @param string $key
* @return array [返回value数组]
*/
$redis->hVals('key');

redis-hash

Redis 列表(LIST)

/**
* lPush 将一个或多个值插入到列表的表头
* 每个value值将按照从左到右的顺序依次插入到表头
*
* @param string $key
* @param string $value1 String [插入列表的值]
* @param string $value2 Optional
* @param string $valueN Optional
* @return int|bool [成功返回列表长度,失败返回false]
*/
$redis->lPush('key', 'value1', 'value2', 'value3'); /**
* lPushx 将一个或多个值插入到已存在的列表头部
*
* @param string $key
* @param string $value [插入列表的值]
* @return int|bool [成功返回列表长度,失败返回false]
*/
$redis->lPushx('key', 'value'); /**
* rPush 将一个或多个值插入到列表的表尾
* 每个value值将按照从左到右的顺序依次插入到表尾
*
* @param string $key
* @param string $value1 String [插入列表的值]
* @param string $value2 Optional
* @param string $valueN Optional
* @return int|bool [成功返回列表长度,失败返回false]
*/
$redis->rPush('key', 'value1', 'value2', 'value3'); /**
* rPushx 将一个或多个值插入到已存在的列表尾部
*
* @param string $key
* @param string $value String [插入列表的值]
* @return int|bool [成功返回列表长度,失败返回false]
*/
$redis->rPushx('key', 'value'); /**
* lPop 移出并获取列表的第一个元素
*
* @param string $key
* @return string [返回移除的元素]
*/
$redis->lPop('key'); /**
* rPop 移除并获取列表最后一个元素
*
* @param string $key
* @return string [返回移除的元素]
*/
$redis->rPop('key'); /**
* lLen 获取列表的长度
*
* @param string $key
* @return int [key存在时返回列表长度]
*/
$redis->lLen('key'); /**
* lRange 获取列表指定范围内的元素
*
* @param string $key
* @param int $start
* @param int $end
* @return array [返回特定范围内的元素]
*/
$redis->lRange('key', 0, -1); /**
* lRem 根据参数count的值,移除列表中与参数value相等的元素
* count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count
* count < 0: 从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值
* count = 0: 移除表中所有与value相等的值
*
* @param string $key
* @param string $value
* @param int $count
* @return int [返回被移除元素的数量]
*/
$redis->lRem('key', 'value', 0); /**
* lSet 将列表key下标为index的元素的值设置为value
* 当index超出长度范围,返回false
*
* @param string $key
* @param int $index
* @param string $value
* @return BOOL [设置成功返回true,否则返回false]
*/
$redis->lSet('key', 0, 'value'); /**
* lTrim 让列表只保留指定区间内的元素
*
* @param string $key
* @param int $start
* @param int $stop
* @return array Bool [当key不是列表类型时返回false]
*/
$redis->lTrim('key', 0, -1); /**
* lIndex 通过索引设置列表元素的值
*
* @param string $key
* @param int $index
* @return String [返回下标为index的元素]
*/
$redis->lIndex('key', 0); /**
* lInsert 将值value插入到列表key当中,位于值pivot之前或之后
* 如果没有找到pivot,返回-1。如果key为空列表,返回0
*
* @param string $key
* @param int $position Redis::BEFORE | Redis::AFTER
* @param string $pivot
* @param string $value
* @return int [返回插入完成后的列表长度]
*/
$redis->lInsert('key', Redis::BEFORE, 'pivot', 'value'); /**
* rpoplpush 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
* rpoplpush 将在一个原子时间内同时执行移除和插入两个操作
*
* @param string $srcKey
* @param string $dstKey
* @return string [返回移除插入成功的元素]
*/
$redis->rpoplpush('srcKey', 'dstKey');

redis-list

Redis 集合(SET)

/**
* sAdd 将一个或多个member元素加入到集合key当中
* 已经存在于集合的member元素将被忽略
*
* @param string $key [集合key]
* @param string $value1 [待添加值]
* @param string $value2 [可选值]
* @param string $valueN [可选值]
* @return int [返回被添加到集合中新成员的数量]
*/
$redis->sAdd('key', 'value1', 'value2', 'value3'); /**
* sRem 移除集合key中的一个或多个member元素
* 不存在的member元素会被忽略
*
* @param string $key
* @param string $member1
* @param string $member2
* @param string $memberN
* @return int [被成功移除的元素数量]
*/
$redis->sRem('key', 'member1', 'member2', 'member3'); /**
* sMembers 返回集合key中的所有成员
*
* @param string $key
* @return array [返回集合中所有成员]
*/
$redis->sMembers('key'); /**
* sIsMember 判断member元素是否是集合key的成员
*
* @param string $key
* @param string $value
* @return bool [成员存在返回true,否则返回false]
*/
$redis->sIsMember('key', 'value'); /**
* sCard 获取集合中成员的数量
*
* @param string $key
* @return int [返回集合的大小,key不存在时返回0]
*/
$redis->sCard('key'); /**
* sMove 将member元素从source集合移动到destination集合
* 如果source集合不存在或不包含指定的member元素,则不执行任何操作
*
* @param string $srcKey
* @param string $dstKey
* @param string $member
* @return bool [操作成功返回true,成员不存在返回false]
*/
$redis->sMove('srcKey', 'dstKey', 'member'); /**
* sPop 移除并返回集合中的一个随机元素
* 如果集合不存在或为空时,返回false
*
* @param string $key
* @return string [返回被弹出的元素]
*/
$redis->sPop('key'); /**
* sRandMember 获取集合中的任意一个成员
*
* @param string $key
* @return string [返回一个集合中的随机元素]
*/
$redis->sRandMember('key'); /**
* sInter 获取所有给定集合的交集
*
* @param string $key1 [进行相交运算的集合]
* @param string $key2 ...
* @param string $keyN ...
* @return array [返回所有交集成员]
*/
$redis->sInter('key1', 'key2', 'key3'); /**
* sInterStore 将给定集合的交集保存到dstKey集合
* 如果dstKey集合已存在,则将其覆盖
*
* @param string $dstKey [存储运算结果的集合]
* @param string $key1 [进行相交运算的集合]
* @param string $key2 ...
* @param string $keyN ...
* @return int [返回结果集中成员的数量]
*/
$redis->sInterStore('dstKey', 'key1', 'key2', 'key3'); /**
* sUnion 获取所有给定集合的并集
*
* @param string $key1 [进行联合运算的集合]
* @param string $key2 ...
* @param string $keyN ...
* @return array [返回所有并集成员]
*/
$redis->sUnion('key1', 'key2', 'key3'); /**
* sUnionStore 将给定集合的并集保存到dstKey集合
* 如果dstKey集合已存在,则将其覆盖
*
* @param string $dstKey [存储运算结果的集合]
* @param string $key1 [进行联合运算的集合]
* @param string $key2 ...
* @param string $keyN ...
* @return int [返回结果集中成员的数量]
*/
$redis->sUnionStore('dstKey', 'key1', 'key2', 'key3'); /**
* sDiff 获取所有给定集合的差集
*
* @param string $key1 [进行相减运算的集合]
* @param string $key2 ...
* @param string $keyN ...
* @return array [返回所有差集成员]
*/
$redis->sDiff('key1', 'key2', 'key3'); /**
* sDiffStore 将给定集合的差集保存到dstKey集合
* 如果dstKey集合已存在,则将其覆盖
*
* @param string $dstKey [存储运算结果的集合]
* @param string $key1 [进行相减运算的集合]
* @param string $key2 ...
* @param string $keyN ...
* @return int [返回结果集中成员的数量]
*/
$redis->sDiffStore('dstKey', 'key1', 'key2', 'key3');

redis-set

Redis 有序集合(ZSET)

/**
* zAdd 将一个或多个member元素及其score值加入到有序集key当中
*
* @param string $key
* @param float $score1 [用于排序的分数]
* @param string $value1 [需要添加的元素]
* @return int [返回被成功添加的新成员数量]
*/
$redis->zAdd('key', 1.5, 'value'); /**
* zRem 移除有序集key中的一个或多个成员
* 不存在的成员将被忽略
*
* @param string $key
* @param string $member1
* @param string $member2
* @param string $memberN
* @return int [返回被成功移除的成员数量]
*/
$redis->zRem('key', 'member1', 'member2', 'member3'); /**
* zCard 获取有序集合中的成员数量
*
* @param string $key
* @return int [返回有序集的基数]
*/
$redis->zCard('key'); /**
* zCount 计算在有序集合中指定区间分数的成员数
*
* @param string $key
* @param string $start
* @param string $end
* @return int [返回特定范围内的成员数量]
*/
$redis->zCount('key', 0, -1); /**
* zScore 获取有序集合中指定成员的分数值
*
* @param string $key
* @param string $member
* @return float [返回member成员的score值]
*/
$redis->zScore('key', 'member'); /**
* zIncrBy 为成员member的score值加上增量,增量可以为负值
*
* @param string $key
* @param float $value [浮点型增量]
* @param string $member
* @return float [返回member成员的新score值]
*/
$redis->zIncrBy('key', 1.5, 'member'); /**
* zRange 通过索引区间(score递增)返回指定区间内的成员
* 通过withscores选项,可以让member与score一并返回
*
* @param string $key
* @param int $start
* @param int $end
* @param bool $withscores
* @return array [返回指定区间内的成员]
*/
$redis->zRange('key', 0, -1); /**
* zRevRange 通过索引区间(score递减)返回指定区间内的成员
* 通过withscores选项,可以让member与score一并返回
*
* @param string $key
* @param int $start
* @param int $end
* @param bool $withscore
* @return array [返回指定区间内的成员]
*/
$redis->zRevRange('key', 0, -1); /**
* zRangeByScore 返回有序集合(score递增)score处于[min,max]区间的成员
*
* @param string $key
* @param float $min [分数最小值]
* @param float $max [分数最大值]
* @param array $options [可选,限制结果数量与形式]
* @return array [返回分数在指定区间内的成员]
*/
$redis->zRangeByScore('key', 1.0, 2.0, array(
'limit' => array(5, 3), // offset 5,count 3
'withscores' => true,
)); /**
* zRevRangeByScore 返回有序集合(score递减)score处于[min,max]区间的成员
*
* @param string $key
* @param float $min [分数最小值]
* @param float $max [分数最大值]
* @param array $options [可选,限制结果数量与形式]
* @return array [返回分数在指定区间内的成员]
*/
$redis->zRevRangeByScore('key', 1.0, 2.0, array(
'limit' => array(5, 3), // offset 5,count 3
'withscores' => true,
)); /**
* zRank 返回有序集合(score递增)中指定成员的排名
*
* @param string $key
* @param string $member
* @return int [返回member在有序集合中的索引]
*/
$redis->zRank('key', 'member'); /**
* zRevRank 返回有序集合(score递减)中指定成员的排名
*
* @param string $key
* @param string $member
* @return int [返回member在有序集合中的索引]
*/
$redis->zRevRank('key', 'member'); /**
* zRemRangeByRank 移除有序集合中给定的排名区间的所有成员
*
* @param string $key
* @param int $start
* @param int $end
* @return int [被成功移除的成员数量]
*/
$redis->zRemRangeByRank('key', 0, -1); /**
* zRemRangeByScore 移除有序集合中给定的分数区间的所有成员
*
* @param string $key
* @param float $min [分数最小值]
* @param float $max [分数最大值]
* @return int [被成功移除的成员数量]
*/
$redis->zRemRangeByScore('key', 1.0, 2.0);

redis-zset

Redis 服务(SERVER)

/**
* bgrewriteaof 异步执行AOF文件重写操作
*
* @return bool [操作成功返回true,失败返回false]
*/
$redis->bgrewriteaof(); /**
* bgsave 在后台异步保存当前数据库的数据到磁盘
*
* @return bool [操作成功返回true,失败返回false]
*/
$redis->bgsave(); /**
* save 同步保存当前数据库的数据到磁盘
*
* @return bool [操作成功返回true,失败返回false]
*/
$redis->save(); /**
* lastSave 返回最近一次将数据保存到磁盘上的时间
*
* @return int [返回UNIX时间戳]
*/
$redis->lastSave(); /**
* dbSize 获取当前数据库的大小
*
* @return int [返回当前数据库的key的数量]
*/
$redis->dbSize(); /**
* slaveof 将当前服务器转变为指定服务器的从属服务器
*
* @param string $host
* @param int $port
* @return bool [操作成功返回true,失败返回false]
*/
$redis->slaveof('10.0.1.7', 6379); /**
* flushAll 清空整个 Redis 服务器的数据
*
* @return bool [总是返回true]
*/
$redis->flushAll(); /**
* flushDB 清空当前数据库中的所有数据
*
* @return bool [总是返回true]
*/
$redis->flushDB(); /**
* info 关于 Redis 服务器的各种信息和统计值
*
* @return string
*/
$redis->info();

redis-server

==================Redis使用Demo=======================

/* 连接MySQL */
$mysqli = new mysqli();
$mysqli->connect('127.0.0.1', 'root', '', 'cms'); /* 连接Redis */
$redis = new Redis();
$redis->connect('127.0.0.1', 6379); /* 查询数据 */
$user_data = $mysqli->query('SELECT * FROM user')
->fetch_all(MYSQLI_ASSOC); /* 缓存数据 */
foreach ($user_data as $data) {
$redis->zAdd('user', $data['id'], $data['username']);
$redis->hMset('user:' . $data['username'], $data);
} /* 设置有效时间 */
$redis->expire('user', 60);
foreach ($user_data as $data) {
$redis->expire('user:' . $data['username'], 60);
} $user_data = null; //清空从mysql中查询的数据 /* 取出缓存数据 */
$user_set = $redis->zRange('user', 0, -1);
foreach ($user_set as $username) {
$user_data[] = $redis->hGetAll('user:' . $username);
} print_r($user_data);

PHP Redis 对象方法手册的更多相关文章

  1. Redis常用命令手册:服务器相关命令

    Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一 ...

  2. 【redis源码阅读】redis对象

    结构定义 在redis中,对象的数据结构定义如下: ​typedef struct redisObject { ​unsigned type:4; ​unsgined encoding:4; ​uns ...

  3. [转]JavaScript RegExp 对象参考手册

    JavaScript RegExp 对象参考手册 RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 直接量语法 /pattern/attributes 创建 ...

  4. Redis底层探秘(五):Redis对象

    前面几篇文章,我们一起学习了redis用到的所有主要数据结构,比如简单动态字符串(sds).双端链表.字典.压缩列表.整数集合等等. redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这 ...

  5. 三种序列化方式存取redis的方法

    常见的的序列化反序列方式的效率: protoBuf(PB) > fastjson > jackson > hessian > xstream > java 数据来自于:h ...

  6. Asp.Net SignalR 使用记录 技术回炉重造-总纲 动态类型dynamic转换为特定类型T的方案 通过对象方法获取委托_C#反射获取委托_ .net core入门-跨域访问配置

    Asp.Net SignalR 使用记录   工作上遇到一个推送消息的功能的实现.本着面向百度编程的思想.网上百度了一大堆.主要的实现方式是原生的WebSocket,和SignalR,再次写一个关于A ...

  7. Redis数据结构&命令手册

    Redis数据结构&命令手册 Redis数据结构 Redis可以存储键与5种不同数据结构之间的映射,这五种数据结构类型分别为STRING(字符串).LIST(列表).SET(集合).HASH( ...

  8. Redis对象

    概述 Redis并没有使用基础数据结构去实现键值数据库,而是基于数据结构封装了一个个对象. 类型和编码 由于Redis是键值数据库,所以每次存储数据时,至少包含两个对象,即K.V对应的对象.其数据结构 ...

  9. js 继承 对象方法与原型方法

    js函数式编程确实比很多强语言使用灵活得多,今天抽了点时间玩下类与对象方法调用优先级别,顺便回顾下继承 暂时把原型引用写成继承 先看看简单的两个继承 var Parent = function(){} ...

随机推荐

  1. windows下搭建eclipse关于python的开发环境及初始化参数配置

    1.安装jdk 因为eclipse是java开发的,运行eclipse程序需要安装jdk 安装jdk以后需要配置java_home环境变量 2.安装python2.7(比较简单,此处略) 3.下载ec ...

  2. favicon.ico问题

    在访问web的时候,有时出现favicon.ico 不知道这是一个什么东西,查看百度:

  3. FreeSWITCH与PSTN对接

    FreeSWITCH与PSTN电话系统对接设定 一.环境介绍 我们目前使用模拟的话机连接到电信运营商,购买他们配套的电话总机,勉强实现了公司的基本通话.但是客户电话总机系统以及升级添加新的应用不但费用 ...

  4. S5PV210 ADC转换

    第一节 S5PV210的ADCS5PV210的ADC可支持10bit和12bit,它支持10路输入,然后将输入的模拟的信号转换为10bit或者12bit的二进制数字信号.在5MHz的时钟下,最大转换速 ...

  5. 从零开始自己搭建复杂网络2(以Tensorflow为例)

    从零开始自己搭建复杂网络(以DenseNet为例) DenseNet 是一种具有密集连接的卷积神经网络.在该网络中,任何两层之间都有直接的连接,也就是说,网络每一层的输入都是前面所有层输出的并集, 而 ...

  6. Java 开发环境配置--eclipse工具进行java开发

    Java 开发环境配置 在本章节中我们将为大家介绍如何搭建Java开发环境. Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java Cloud Studio ...

  7. laravel migrate 指定执行部分 migration

    由于我不习惯于使用 laravel migration 来管理数据表变更,所以很多项目都是无法直接执行 php artisan migrate 否则会报错 SQLSTATE[42S01]: Base ...

  8. Android Monkey压力测试环境搭建及使用

    Android Monkey压力测试学习笔记 步骤:下载SDK -> 解压进入SDK Manager下载系统 -> 配置环境变量 -> 创建虚拟设备或连接真机 -> 进入命令模 ...

  9. mysql的基本演示

    数据库需要配置 cmd打开doc窗口 net start mysql:启动数据库 net stop mysql :停止数据库 表的定义:列  行  主键

  10. (第4篇)hadoop之魂--mapreduce计算框架,让收集的数据产生价值

    摘要: 通过前面的学习,大家已经了解了HDFS文件系统.有了数据,下一步就要分析计算这些数据,产生价值.接下来我们介绍Mapreduce计算框架,学习数据是怎样被利用的. 博主福利 给大家赠送一套ha ...