php - 如何检查密钥是否存在于 Redis 中?
问题描述
我在 Laravel 模型中有一个函数,我需要检查我的键($key 变量)是否存在于 Redis 中,换句话说,我想创建一个条件,不允许来自 redis 的重复结果。这是我的功能。任何帮助表示赞赏。
功能
public static function cacheFields($fields)
{
foreach ($fields as $fieldname => $values) {
$key = static::$redisFieldKey.$fieldname; // here is that variable
Redis::pipeline(function ($pipe) use ($key, $values) {
foreach ($values as $value => $label) {
$pipe->hset($key, $value, $label);
}
});
}
}
解决方案
当您hset
对不存在的键执行时,它将set
使用该字段及其对应的值进行散列。当您针对现有哈希(和字段键)执行它时,它将update
现有哈希字段的哈希值。
127.0.0.1:6379> hset myhash myhashfield myvalue
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "myhashfield"
2) "myvalue"
127.0.0.1:6379> hset myhash myhashfield anothervalue
(integer) 0
127.0.0.1:6379> hgetall myhash
1) "myhashfield"
2) "anothervalue"
127.0.0.1:6379>
如果你想检查密钥是否存在,你可以使用exists
O(1)
127.0.0.1:6379> exists myhash
(integer) 1
127.0.0.1:6379> exists nonexisting
(integer) 0
如果要检查哈希字段是否存在,可以使用hexists
O(1)
127.0.0.1:6379> hexists myhash myhashfield
(integer) 1
127.0.0.1:6379> hexists myhash nonfield
(integer) 0
127.0.0.1:6379> hexists notmyhash myfield
(integer) 0
编辑:
该文件指出,对于hset
;
将存储在键中的哈希中的字段设置为值。如果 key 不存在,则创建一个包含哈希的新 key。如果字段已存在于哈希中,则将其覆盖。
推荐阅读
- docker - docker新手,没有看到现场进行的本地更改
- php - 将页面从一个域重定向到另一个域(两个域都属于一个网站)
- magento - 变量 @theme__color__primary-alt 未定义
- .net - 当我得到一件物品时,$Expand 不起作用
- android - 在调试模式下在颤振上显示特定的小部件
- elasticsearch - 在搜索字符串时,我无法检索由字符之间的符号 (.,& ) 组成的字符串
- reactjs - 如何在graphql查询中设置loading true。?
- javascript - Filter the object depending on the field's value in javascript
- amazon-web-services - 如何在私有 EC2 实例中发送 http / https 请求
- c - 如何获取多维数组的输入并使用指针在 C 中打印数组?