我想安装php54-redis.
Yu:nginx Yu $ brew安装josegonzalez/php/php54-redis
==>从josegonzalez/homebrew-php安装php54-redis
错误:在多个水龙头中找到的公式:
自制/ PHP/php54
josegonzalez/PHP/php54
请使用完全限定的名称,例如homebrew/php/php54来引用公式.
我做错了什么,这是怎么做得好的?
我对Redis的所有可用存储选项感到困惑.我想做一些简单的事情,我不想过度设计它.我正phpredis和我一起工作Redis v2.8.6.
我有这个简单的关联数组,我需要存储.我还需要能够通过其键检索项目并循环遍历所有项目.
$a = array(
'12345' => array(
'name' => 'Post A',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
),
'54321' => array(
'name' => 'Post B',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
),
'998877' => array(
'name' => 'Post C',
'val2' => 'blah blah',
'val3' => 'blah blah blah',
)
);
Run Code Online (Sandbox Code Playgroud)
所以我到现在所做的是使用hash类型.像这样存储我的数组:
foreach ($a as $key => $value) {
$this->redis->hSet('posts', $key, json_encode($value));
}
Run Code Online (Sandbox Code Playgroud)
就像我可以轻松地像这样访问密钥:
public function getPost($postId) …Run Code Online (Sandbox Code Playgroud) 我正在使用 laravel 8,当我尝试运行时,它会抛出错误:
\nphp artsian config:clear
在 laravel 上,这是我的配置值(因为我正在尝试使用 phpredis):
\n'client' => env('REDIS_CLIENT', 'phpredis'),\nRun Code Online (Sandbox Code Playgroud)\n我现在可以使用 redis-cli 和 ping。不,只是我可以成功到达以下端点。
\n public function testRedis()\n {\n Redis::set('ping','pong');\n $ping = Redis::get('ping');\n dd($ping);\n }\nRun Code Online (Sandbox Code Playgroud)\n就打印pong成功了。
但我收到的课程Redis未找到。每当我尝试奔跑时php artisan config:clear
完整错误如下所示:
\n Class "Redis" not found\n\n at vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php:75\n 71\xe2\x96\x95 * @throws \\LogicException\n 72\xe2\x96\x95 */\n 73\xe2\x96\x95 protected function createClient(array $config)\n 74\xe2\x96\x95 {\n \xe2\x9e\x9c 75\xe2\x96\x95 return tap(new Redis, function ($client) use ($config) {\n 76\xe2\x96\x95 if ($client instanceof …Run Code Online (Sandbox Code Playgroud) 背景
尝试在
运行 Apache 2.4.18、Php 7.0.14 和自制软件的 Mac OSX 本地服务器上的 Laravel 5.3 中使用PhpRedis
...无需额外(非官方)作曲家库
Redis是通过安装homebrew install redis和工作
测试的,redis-cli ping它给出PONG
PhpRedis通过它安装homebrew install php70-redis并
经过测试,php -r "if (new Redis() == true){ echo \"\r\n OK \r\n\"; }"它给出OK
设置
随着文档,这SO Laravel 4溶液我做到以下几点:
aliasapp/config/app.php 中的定义从更改(或评论和添加)'Redis' => 'Illuminate\Support\Facades\Redis''LRedis' => 'Illuminate\Support\Facades\Redis'redisconfig/database.php 中的数据库定义'client' => 'phpredis',composer dump-autoload …我正在运行Travis CI来运行我的测试.我正在使用php v5.6的Trusty容器.
这是我的整个.travis.yml文件:
language: php
dist: trusty
php:
- '5.4'
before_script:
- phpenv config-rm xdebug.ini
- before_script: echo "extension = redis.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
sudo: required
install:
- npm install -g gulp
- composer install
env:
- APP_ENV=circleci
script:
- gulp test
Run Code Online (Sandbox Code Playgroud)
该before_script:语法是直接从复制的特拉维斯文档,但我建立失败,一个作曲家错误说:
- The requested PHP extension ext-redis * is missing from your system. Install or enable PHP's redis extension.
Run Code Online (Sandbox Code Playgroud) 推荐此链接https://anton.logvinenko.name/en/blog/how-to-install-redis-and-redis-php-client.html
并完成以下步骤
PHP 7的PhpRedis(如果您有不同的PHP版本,请跳过它)
安装所需的包
apt-get install php7.0-dev
Run Code Online (Sandbox Code Playgroud)
下载PhpRedis
cd /tmp
wget https://github.com/phpredis/phpredis/archive/php7.zip -O phpredis.zip
Run Code Online (Sandbox Code Playgroud)
但是,找不到安装https://github.com/phpredis/phpredis/archive/php7.zip文件.
我试图将用户的请求URL作为密钥存储,并将与该密钥对应的PHP对象存储为Redis中的值.我尝试了以下方法:
$redisClient = new Redis();
$redisClient->connect('localhost', 6379);
$redisClient->set($_SERVER['REQUEST_URI'], $this->page);
$redisTest = $redisClient->get($_SERVER['REQUEST_URI']);
var_dump($redisTest);
Run Code Online (Sandbox Code Playgroud)
但是,使用此代码时,存储在Redis中的URL键的值是类型,string其值等于"Object"而不是实际的PHP对象.有没有办法存储PHP对象而不进行序列化?
"PHP致命错误:未捕获异常'RedisException',消息'连接时读取错误'"
这里的驱动程序是phpredis
$redis->blpop('a', 0);
Run Code Online (Sandbox Code Playgroud)
这总是在1分钟后超时.我的redis.conf说超时0并$redis->getOption(Redis::OPT_READ_TIMEOUT)返回double(0)
如果我这样做,它永远不会超时 $redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
为什么我需要-1?Redis文档timeout 0在redis.conf中说永远不会让我失望.
"默认情况下,如果客户端闲置很多秒,则Redis的最新版本不会关闭与客户端的连接:连接将永远保持打开状态."
我使用https://github.com/nicolasff/phpredis 扩展来访问redis.我想从php代码获取redis中的所有密钥.我试过以下代码
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$allKeys = $redis->keys('*');
print_r($allKeys); // nothing here
Run Code Online (Sandbox Code Playgroud)
但是在shell中的命令给出了结果
127.0.0.1:6379> KEYS *
"kq92p7b5tf63tmk12v54373e03 hs7ep4lc2m6ci5kk5dosgpelg4
pt7lfejenqbmmovjpmp9aojuf0 2p05gf20or6r5ee5i7sts90kn1
cb1d6g3d3bvqetjfmkmaurmpp3"
Run Code Online (Sandbox Code Playgroud)
我可以通过php脚本以下列方式设置密钥和数据
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set(session_id(), json_encode(array('uname'=>'messi fan')));
Run Code Online (Sandbox Code Playgroud)
怎么KEYS *从redis使用phpredis?
我在使用laravel设置redis缓存时遇到问题.我在我的本地机器上有一个redis服务器runnig:
我的.env:
我准备好并在端口6379上使用localhost: