我已经开始研究laravel。这是一个很有趣的工作。我已经开始使用laravel的功能了。通过在系统中安装redis服务器并在app/config/database.php文件中更改redis的配置,我已经开始使用redis。通过使用set,redis可以很好地处理单变量。即,
$redis = Redis::connection();
$redis->set('name', 'Test');我可以通过使用以下命令来获得值
$redis->get('name');但是我想使用set函数来设置数组。如果我尝试这样做,会得到以下错误
strlen() expects parameter 1 to be string, array given 我试过使用下面的代码。
$redis->set('name', array(5, 10));
$values = $redis->lrange('names', array(5, 10));如果我使用
$values = $redis->command('lrange', array(5, 10));获取以下错误
'command' is not a registered Redis command 有人能给我解释一下这个问题吗? redis?...we可以用redis设置数组值吗?
发布于 2014-03-29 04:11:25
这一点已经在评论中得到了回答,但为了让将来访问的人更清楚。
Redis是语言不可知的,所以它不能识别任何特定于PHP或任何其他语言的数据类型。最简单的方法是在set上对数据执行serialise / json_encode,然后在get上执行unserialise/json_decode。
使用json_encode存储数据的示例
use Illuminate\Support\Facades\Redis;
$redis = Redis::connection();
$redis->set('user_details', json_encode([
'first_name' => 'Alex',
'last_name' => 'Richards'
])
);使用json_decode检索数据的示例
use Illuminate\Support\Facades\Redis;
$redis = Redis::connection();
$response = $redis->get('user_details');
$response = json_decode($response);发布于 2020-03-12 23:53:34
Redis支持多种数据结构类型,如hash、链表和数组。
但您必须使用Laravel Redis facade的适当方法,如下所示:
// set user_details --redis_key-- and --redis_value-- as array of key_values
Redis::hmset('user_details',["firstName" => "Foo", "lastName" => "Bar"]);
// get all as an associative array
Redis::hgetall('user_details');
// get just the keys as an array
Redis::hkeys('user_details');发布于 2020-03-06 23:43:09
在您的控制器中,您可以添加以下函数:
use Illuminate\Support\Facades\Redis;
private function getUsers() {
if ($users = Redis::get('users.all')) {
return json_decode($users);
}
$users = User::all();
Redis::set('users.all', $users);
return $users;
}然后,在您的index方法(或其他方法)中,您可以这样做:
public function index(Request $request) {
$users = $this->getUsers();
}来源: accepted和this。
https://stackoverflow.com/questions/22718903
复制相似问题