标签: phpredis

phpredis管道是否与使用协议进行大量插入相同?

我正在将我的网站的某些部分从关系数据库移动到Redis,并且需要在很短的时间内插入数百万个密钥.

在我的例子中,数据必须首先从MySQL中提取,由PHP准备,然后添加到相应的排序集(时间作为分数+ ID作为值).目前我正在使用Redis::PIPELINE参数的phpredis多方法的冒险.尽管速度明显提高,但在进行导入时,最终会阻止读取并减慢加载时间.

所以这里有一个问题 - 在phpredis中使用管道是否等同http://redis.io/topics/mass-insert中描述的大量插入


这是一个例子:

php insert redis phpredis

5
推荐指数
1
解决办法
3524
查看次数

phpredis错误在Linux中找不到类Redis

我在安装phpredis时遇到了一个麻烦的问题

cd phpredis && ./configure && make && make install
Run Code Online (Sandbox Code Playgroud)

之后,我补充道

extension=redis.so
Run Code Online (Sandbox Code Playgroud)

进入php.ini.

我可以通过跑步得到一个好的

php -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"
Run Code Online (Sandbox Code Playgroud)

但是当运行http:127.0.0.1时,nginx会抛出一个错误"致命错误:在index.php中找不到类'Redis'"

<?php>
    $client = new Redis();
<?>
Run Code Online (Sandbox Code Playgroud)

我想这可能是与环境有关的一些问题......

谢谢你的建议!

php linux nginx redis phpredis

5
推荐指数
1
解决办法
2万
查看次数

为什么我的Redis密钥在过期时间之前过期?

我设置了一个redis密钥并将其过期时间设置为一周:

$expireTime = 7*24*3600;

$redis->hSet($redisKey, $uniqueId, 1);
$redis->expire($redisKey, $expireTime);
Run Code Online (Sandbox Code Playgroud)

但是我发现密钥可能会在几天而不是一周内过期。这对我来说是非常不能接受的。

它是否由于键值太大而过期?

如何保持我的Redis密钥寿命如我所料?

我的max-memory设置是4G,used_memory_peak_human是2.06G,驱逐策略是默认设置volatile-lru

redis phpredis

5
推荐指数
0
解决办法
1832
查看次数

在Ubuntu 14.04上为PHP 7.1安装phpredis

我的 php -v

PHP 7.1.15-1 + ubuntu14.04.1 + deb.sury.org + 2(cli)(内置:2018年3月6日11:51:39)(NTS)版权所有(c)1997-2018 PHP Group Zend Engine v3. 1.0,版权所有(c)1998-2018 Zend Technologies with Xdebug v2.6.0,Copyright(c)2002-2018,Derick Rethans with Zend OPcache v7.1.15-1 + ubuntu14.04.1 + deb.sury.org + 2,版权所有(c)1999-2018,Zend Technologies

我试过pecl方式

sudo pecl install redis
sudo service php7.1-fpm restart
Run Code Online (Sandbox Code Playgroud)

以及来自https://github.com/phpredis/phpredis的手动方式

phpize
./configure [--enable-redis-igbinary]
make && make install
Run Code Online (Sandbox Code Playgroud)

我确定放了

extension=/usr/lib/php/20170718/redis.so
Run Code Online (Sandbox Code Playgroud)

进入php.ini文件,如我运行时所示 echo phpinfo();

例如

/etc/php/7.1/cli/php.ini
Run Code Online (Sandbox Code Playgroud)

当我运行内置的Web服务器时,我得到了

PHP警告:PHP启动:无法加载动态库'/usr/lib/php/20170718/redis.so' - /usr/lib/php/20170718/redis.so:未定义符号:zend_empty_string在第0行的未知

奇怪的是,PHPStorm自动填充PHP Redis类,所以

$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
Run Code Online (Sandbox Code Playgroud)

我可以点击进入Redis类,看它是正确的.

我想知道它是否是版本差异?也许是因为我使用的是32位?

另一个奇怪的事情是,如果我只是把

extension=redis.so 
Run Code Online (Sandbox Code Playgroud)

php.ini,它似乎在寻找一个较旧的版本

PHP启动:无法加载动态库'/usr/lib/php/20160303/redis.so' …

php redis phpredis ubuntu-14.04

5
推荐指数
2
解决办法
5004
查看次数

使用igbinary安装php redis,找不到头文件

我正在尝试安装phpredis扩展,但没有运气.

运行该命令后./configure --enable-redis-igbinary,我收到以下错误:

检查igbinary包括... configure:错误:找不到igbinary.h

igbinary是使用PECL安装的,但看起来没有找到头文件.

php centos pecl igbinary phpredis

4
推荐指数
1
解决办法
8711
查看次数

从Redis哈希获取随机/任何值

我有一个包含数百万个元素的Redis-Hash,不断添加新的元素.在php中,我运行一个无限循环来获取,处理和删除另一个元素.因此,我需要获取任何现有元素的键(最好是插入哈希中的第一个元素,FiFo)

while($redis->hlen()) {
    $key = ???
    // process $key    
}
Run Code Online (Sandbox Code Playgroud)

虽然我知道RANDOMKEYSRANDMEMBER命令,但我没有找到任何方法来获取哈希的密钥.HGETALL并且HKEYS,由于哈希的大小,也不是一个选项.我需要顺序处理.帮助赞赏.

php redis phpredis

4
推荐指数
1
解决办法
4039
查看次数

Redis cli删除多个键

我已经在centos中安装了Redis,我有多个像这样的redis键,

Product:<id>:<url>
Run Code Online (Sandbox Code Playgroud)

如何Product:*:* 使用CLI 删除所有内容?

Redis版本:3.2.4 [最新我猜]

谢谢!

redis phpredis stackexchange.redis redis-cli

4
推荐指数
3
解决办法
4496
查看次数

你如何搜索有价值的键?例如,获取值为"somevalue"的所有KEYS

   redis> SMEMBERS CO:1:A
    1) "1"
    2) "2"

   redis> SMEMBERS CO:2:A
    1) "1"
    2) "5"
    3) "6"

   redis> SMEMBERS CO:3:A
    1) "5"

   redis> SMEMBERS CO:4:A
    1) "1"
Run Code Online (Sandbox Code Playgroud)

现在我想找到值1存在的键

如果我使用值1搜索,则结果键将为CO:1:A, CO:2:ACO:4:A

怎么弄这个?

php redis phpredis

3
推荐指数
1
解决办法
1105
查看次数

致命错误:未捕获的异常'RedisException',消息'Redis服务器消失了'

我的一个应用程序突然开始出错:

Fatal error: Uncaught exception 'RedisException' with message 'Redis server went away' in /var/www/_slim/_core/system/generator.001.php:133 Stack trace: #0 /var/www/_slim/_core/system/generator.001.php(133): Redis->auth('77B1BFFBC0378DF...') #1 /var/www/_slim/_core/system/generator.007.php(144): Generator001->r6_redis_start('R') #2 /var/www/_slim/_core/system/generator.007.php(26): Generator007->HarvestRedis() #3 /var/www/_slim/_core/system/generator.shopping.php(14): Generator007->Generator007() #4 /var/www/_slim/_core/system/generator.last.php(43): Generator008->Generator008() #5 /var/www/_slim/site/home/php/index.php(16): GeneratorLast->GeneratorLast() #6 /var/www/index.php(96): Gui->Gui()
#7 {main} thrown in /var/www/_slim/_core/system/generator.001.php on line 133
Run Code Online (Sandbox Code Playgroud)

我重新安装redis-server但到目前为止没有运气.有什么建议?

php redis phpredis

3
推荐指数
2
解决办法
3万
查看次数

Redis:KEYS*的结果是如何排序的?

我有一个非常简单的php redis应用程序,可以在某些事件中创建密钥.所有钥匙都只是柜台,过期时间为24小时.基本上是每个键24小时滚动窗口,以收集一些统计信息.

if ($redis->exists($key)) {
    $redis->incr($key); 
}
else {
    $redis->set($key, '1');
    $now = time(); // current timestamp
    $redis->expireAt($key, $now + 86400);
}
Run Code Online (Sandbox Code Playgroud)

当我使用$list = $redis->keys("*");(或在redis-cli控制台中keys *)提取所有键的概述时,我会怀疑按创建日期按时间顺序排列.然而,事实并非如此.它们都没有按字母顺序排序,按价值排序......

所以我的问题是,这个列表是如何排序的?

php redis phpredis

3
推荐指数
1
解决办法
1391
查看次数