🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
~~~ Strings //append -向指定的key追加值 $redis->set('key', 'hello'); $redis->append('key', 'world'); $redis->get('key'); //'helloworld' //setBit(key,offset,value) - 更改字符串(二进制)的单个位 (offset:位偏移 value:布尔、0或者1) 返回设置之前的位的值(0或者1) $redis->set('key', "*"); // ord("*") = 42(ASCII) = 0x2f(16进制) = 00101010(二进制) $redis->setBit('key', 5, 1); // 0 (00101110) $redis->setBit('key', 7, 1); // 0 (00101111) $redis->get('key'); // "/" $redis->getBit('key', 5); //1 返回指定某个键偏移量的值 $redis->bitCount('key'); //计算key 所储存的字符串值中,被设置为 1 的比特位的数量 /* setBit 与bitCount实现用户上线次数统计等计数 例子:记录用户上线了多少天 首先我们要知道网站的上线时间,没过一天则位增加一个(8个才一个字节) 如今天是网站上线的101天 那么我们以用户名为key 网站上线的天数为offset位偏移 用户一上线就将位偏移设置为1 */ $redis->setBit(tom, 100, 1); //在网站上线的100天的那天登录过(昨天) $redis->setBit(tom, 101, 1); //在网站上线的101天的那天登录过(今天) //然后我们通过 bitCount统计tom的二进制位偏移有多少个1 (有多少个1就上线了几天) $redis->bitCount('tom'); //tom上线了多少天 //bitOp - 在多个键上按位运算(redis现支持的按位操录作符有: "AND", "OR", "NOT", "XOR") BITOP可能是一个缓慢的命令容易阻塞 $redis->set('k1', 'foobar'); $redis->set('k2', 'abcdef'); $a=$redis->bitOp('and','newkey','k1','k2');//6 `bc`ab $redis->get('newkey'); //`bc`ab /*过程: 1100110 1101111 1101111 1100010 1100001 1110010 1100001 1100010 1100011 1100100 1100101 1100110 按位与(and)之后: 1100000 1100010 1100011 1100000 1100001 1100010 (`bc`ab) */ //计算网站每日活跃用户(登录了多少用户) $redis->setBit(active01, userid=1, 1); //每月1号为active01,..每月15号为active15 第二个参数用户的id作为偏移量 只要用户一登录就执行这个设置偏移值为1 $redis->bitCount('active01');//计算昨天(1)号的在线人数 //计算网站每月活跃用户(一个月内登陆的用户去重总数)即可把30天的所有bitmap做or计算,然后再计算bitcount $redis->bitOp('or','month_active','active01','active02','...','active31'); //计算留存率(次日留存=昨天今天连续登的人数/昨天登录的人数) //自减: $redis->decr(键,每次自减的位数默认1); //命令将 key 中储存的数字值增一,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作,且将key的有效时间设置为长期有效 $redis->decr('key1', 10); $redis->decrBy(键,每次自减的位数默认1); //命令将 key 中储存的数字加上指定的增量值,如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作(命令用于为哈希表中的字段值加上指定增量值) $redis->decrBy('key1', 10); //自增:(同decr、decrBy) $redis->incr('key1',10); //假设key1 不存在, 自增前自动设置为0现在是0+10=10 $redis->incrBy('key1',10); //10+10=20 //incrByFloat -使用浮点精度自增自减 $redis->incrByFloat('key1', 1.5); //假设key1不存在 自增前自动赋值为0 现在是0+1.5=1.5 $redis->incrByFloat('key1', 1.5); //1.5+1.5=3 $redis->incrByFloat('key1', -1.5);//3-1.5=1.5 $redis->get('key'); //获取redis某个键的值 //setRange(键,替换的起始位置,替换的字符) - 字符替换 $redis->set('key', 'Hello world'); $redis->setRange('key', 6, "redis"); //Hello redis $redis->setRange('key', 6, "my"); //Hello mydis //getRange(键, 开始位, 结束位); 返回指定范围的字符串 $redis->getRange('key', 0, 5);//'Hello ' $redis->getRange('key', -5, -1); //'mydis' //getSet - 设置一个值并返回该键的上一个条目 $redis->set('x', '42'); $exValue = $redis->getSet('x', 'lol'); //返回'42' $newValue = $redis->get('x'); //返回'lol' //mGet, getMultiple - 获取所有指定键的值。如果一个或多个键不存在,则数组在键的位置将包含FALSE $redis->set('key1', 'value1'); $redis->mGet(['key0', 'key1', 'key5']); //[`FALSE`, 'value1', `FALSE`]; 返回与键的值相关的数组 //mSet, mSetNX -批量设置键值 返回boolean $redis->mSet(['key0' => 'value0', 'key1' => 'value1']); $redis->mSetNX (['dada' => 'value0', 'xiaoxiao' => 'value1']);//当且仅当所有给定key全都不存在时才批量设置键值  返回boolean  key0和key1都不存在才能设置,否则两个都不会设置成功 //set(键,值,过期时间或者扩展数组) - 设置键的值。如果您使用Redis> = 2.6.12,则可以传递扩展选项 $redis->set('key','value', 10); //TTL, time to live(生存时间) //setEx, pSetEx - 将设置为指定key的值,并设置生存时间。 PSETEX使用TTL,以毫秒为单位 $redis->setEx('key', 3600, 'value'); // 设置键值, with 1h TTL. 以秒为单位 $redis->pSetEx('key', 100, 'value'); // 设置键值, with 0.1 sec TTL. 以毫秒为单位 //setNx - 键不存在才赋值 返回boolean $redis->setNx('key', 'value'); //TRUE $redis->setNx('key', 'value'); //FALSE //strLen(键) -获取键对应字符串值的长度 $redis->set('key', 'value'); $redis->strlen('key'); // 5 ~~~