相关疑难解决方法(0)

如何清空redis数据库?

在过去的几天里,我一直在玩redis(并添加一些乐趣),我想知道是否有办法清空数据库(删除集合,现有密钥......) .
在我的测试中,我创建了几个有很多成员的集合,甚至创建了我不记得名字的集合(我怎么能列出那些人呢?).
有关如何摆脱所有这些的想法吗?

database nosql redis

153
推荐指数
4
解决办法
9万
查看次数

Redis Python - 如何根据特定模式删除所有键在python中,没有python迭代

我正在编写一个django管理命令来处理我们的一些redis缓存.基本上,我需要选择所有键,确认某种模式(例如:"prefix:*")并删除它们.

我知道我可以使用cli来做到这一点:

redis-cli KEYS "prefix:*" | xargs redis-cli DEL
Run Code Online (Sandbox Code Playgroud)

但我需要在应用程序中执行此操作.所以我需要使用python绑定(我使用的是py-redis).我已经尝试将列表输入到删除中,但它失败了:

from common.redis_client import get_redis_client
cache = get_redis_client()
x = cache.keys('prefix:*') 

x == ['prefix:key1','prefix:key2'] # True
Run Code Online (Sandbox Code Playgroud)

# 现在

cache.delete(x) 
Run Code Online (Sandbox Code Playgroud)

#返回0.没有删除

我知道我可以迭代x:

for key in x:
   cache.delete(key)
Run Code Online (Sandbox Code Playgroud)

但这将失去redis的速度和滥用其功能.是否有py-redis的pythonic解决方案,没有迭代和/或cli?

谢谢!

python redis redis-py

30
推荐指数
7
解决办法
5万
查看次数

UNLINK命令总是优于DEL命令吗?

在Redis 4.0中,有一个新命令UNLINK用于删除Redis内存中的密钥.

此命令与DEL非常相似:它删除指定的键.就像DEL一样,如果密钥不存在则会被忽略.但是,该 命令在另一个线程中执行实际内存回收, 因此它不会阻塞,而DEL则是.这是命令名称的来源:命令只是从键空间取消链接键.实际删除将在以后异步发生.

所以总是(100%次)使用UNLINK而不是DEL,因为UNLINK是非阻塞的,不像DEL,对吗?

nonblocking blocking redis

11
推荐指数
2
解决办法
2392
查看次数

如何在Redis中批量删除数十万个带有特殊字符的键

我们有一个包含各种特殊字符的数十万个Redis密钥列表,我们希望批量删除它们.在这个问题上有类似问题的一些很好的答案:如何使用Redis原子地删除匹配模式的键

但是,我似乎无法找到以下案例的答案:

  1. 我们有大量的钥匙(数十万)
  2. 键具有特殊字符的所有方式,如双引号("),反斜杠(),各种奇怪的Unicode字符等.
  3. 我们正在使用windows redis-cli客户端
  4. 奖励:理想情况下,我们可以将此命令作为MULTI/EXEC事务的一部分发出,因此我们也可以原子地删除SET以及键.

如果我们可以像下面这样做,我会很乐意,但是它会处理带有Redis问题的所有特殊字符的键:

redis-cli SMEMBERS "myGiganticListOfKeys" | xargs --delim='\n' redis-cli DEL

不幸的是,这只是给出了以下错误:

"C:/Program Files (x86)/Git/bin/xargs.exe": redis-cli: Bad file number

我认为如果我们在键中没有特殊字符,这将会起作用.

非常感谢提前.

redis

10
推荐指数
1
解决办法
1538
查看次数

如何在redis中删除与特定模式匹配的键

如何使用redis-cli删除redis中与某个模式匹配的键.我想从以下列表中删除所有foo.

KEYS *

foo:1
foo:2
bar:1
foo:3
bar:2
foo:4
Run Code Online (Sandbox Code Playgroud)

redis redis-cli

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

使用redis进行Spring启动缓存,密钥有\ xac\xed\x00\x05t\x00\x06

我想使用Spring缓存@Cacheable来管理缓存.真正的缓存是redis.

我的代码是这样的:

@PostMapping("/post")
@CachePut(value = "abc", key = "#key")
public String putInRedis(@RequestParam String key, @RequestParam String value) {
    saveInDB(key, value);

    return value;
}

@GetMapping("/get")
@Cacheable(value = "abc", key = "#key")
public String queryRedis(@RequestParam String key) {

    return findByKey(key);
}
Run Code Online (Sandbox Code Playgroud)

我有帖子请求之后

本地主机:8080 /后键=键和值=价值?

redis服务器看起来很奇怪

127.0.0.1:6379> keys *
1) "abc:\xac\xed\x00\x05t\x00\x03key"
127.0.0.1:6379> GET "abc:\xac\xed\x00\x05t\x00\x03key"
"\xac\xed\x00\x05t\x00\x05value"
Run Code Online (Sandbox Code Playgroud)

Spring缓存

奇怪,Redis的琴键与弹簧-数据jedis

如何将@ Cacheable的Serializer设置为StringRedisTemplate默认值:

public StringRedisTemplate() {
    RedisSerializer<String> stringSerializer = new StringRedisSerializer();
    setKeySerializer(stringSerializer);
    setValueSerializer(stringSerializer);
    setHashKeySerializer(stringSerializer);
    setHashValueSerializer(stringSerializer);
}
Run Code Online (Sandbox Code Playgroud)

我的application.properties:

spring.redis.host=localhost
spring.redis.password=
spring.redis.port=6379
Run Code Online (Sandbox Code Playgroud)

的build.gradle

group 'io.freezhan'
version '1.0-SNAPSHOT'

buildscript { …
Run Code Online (Sandbox Code Playgroud)

java spring caching redis

6
推荐指数
2
解决办法
7942
查看次数

如何使用phpredis在PHP中删除多个具有相同模式的redis键?

通过使用phpredis,我在分页中保存了一些数据,如下所示:

   review/itemA/1
   review/itemA/2 
Run Code Online (Sandbox Code Playgroud)

其中12是页码。我在文档中读到您可以使用通配符来检索多个键。

$allKeys = $redis->keys('*');   // all keys will match this.
$keyWithUserPrefix = $redis->keys('user*');
Run Code Online (Sandbox Code Playgroud)

但是,当有人发布新评论时,我是否也可以使用通配符删除所有旧密钥?我可以做这样的事情:

$redis->delete('review/itemA/*'); // or  $redis->delete('review/itemA*')
Run Code Online (Sandbox Code Playgroud)

然而它并没有奏效。

php redis phpredis

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

删除与模式匹配的 Redis 键

我使用 Redis 哈希集以以下格式存储数据:

hset b1.b2.b3 name test
Run Code Online (Sandbox Code Playgroud)

现在我想删除这个键,所以我使用以下格式:

del b1.b2.*
Run Code Online (Sandbox Code Playgroud)

但它不起作用,那么我如何使用模式删除 Redis 键呢?

redis redis-cli redisclient

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

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
查看次数

如何使用纯Redis以原子方式删除与模式匹配的数百万个键?

假设我有数百万个prefix:<numeric_id>密钥。

我想以原子方式清除它们。

如何使用 Redis 以原子方式删除与模式匹配的键显示了许多选项。有些使用redis-cli或 Bash 脚本,但我需要以编程方式使用我的客户端来完成。

Lua 脚本方法很有前途,但使用KEYS命令的解决方案失败并出现“太多元素无法解包”错误。

如何实现这一目标?

lua redis

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